关于 STM32WL LSE 添加反馈电阻后无法起振问题

2024-04-09 1371阅读

1. 问题描述

客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。

2. 问题确认

发现上述问题时,客户使用 STM32CubeMX 生成的工程,所以首先建议客户检查LPUART 的时钟配置有没问题,并且让客户尝试使用 STM32Cube_FW_WL_V1.2.0\Projects\NUCLEOWL55JC\Examples\UART\LPUART_WakeUpFromStop 例程对比验证。

后来客户发现是开启外部时钟 HSE 和 LSE 后,程序直接卡死在HAL_RCC_OscConfig ,测量不到 HSE 的 32MHZ 信号。而客户的程序移植到 ST 官方的STM32WL NUCLEO 板上可以正常运行。通过前面的验证很容易怀疑是不是客户样机外部HSE 32MHZ 的晶振没有起振。拿到客户的样机后,尝试更换 32MHZ 晶振,调整晶振负载电容和使用 TCXO,发现都没办法测量到 32MHZ 信号,客户程序依旧卡死在HAL_RCC_OscConfig.

3. 问题分析

由于前面都是用客户的电脑和程序调试,客户的电脑上的 Keil 版本不能单步调试。针对客户的问题,基于 STM32WL AT slave 例程,运行在客户样机上发现现象一致,也是卡死在 HAL_RCC_OscConfig 。但使用单步调试进入 HAL_RCC_OscCongig 里面发现,卡死具体的原因不是 HSE,而是 LSE 初始化出了问题,一直在等待 LES ready 的信号。具体代码如下:

 /* Wait till LSE is ready */
 while (LL_RCC_LSE_IsReady() == 0U)
 {
 	if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
 	{
 		return HAL_TIMEOUT;
 	}
 }

针对上面的分析,把 RTC 时钟源更改为 HSE_RTC,如下图一,图二, AT slave 例程可以正常运行,32MHZ 晶振可以起振,使用 AT 指令可以测量出 RF 有正常发射出信号。

关于 STM32WL LSE 添加反馈电阻后无法起振问题

图一

关于 STM32WL LSE 添加反馈电阻后无法起振问题

图二

同时,对于客户需要使用 LPUART,可以按照图三的时钟配置验证

关于 STM32WL LSE 添加反馈电阻后无法起振问题

图三

客户用他们手上样机同步验证,发现结果一致。确实不使用 LSE 后,样机可以正常工作,32MHZ 晶振也可以正常起振。 下一步就要分析导致 LSE 无法正常工作的原因。客户有按建议尝试更换 32.768KHZ 的晶振以及负载。并且调整 LSEDRIVE 为 high 即__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH),发现依然无法正常使用LSE。

4. 问题解决

针对 LSE 无法起振问题,尝试了上面针对硬件和软件多种方法后依然没有解决。后来仔细检查客户原理图发现,客户在 32.768KHZ 晶振上添加了 1M 的反馈电阻,如图四R34

关于 STM32WL LSE 添加反馈电阻后无法起振问题

图四

而在 STM32WL 规格书 DS13105 Multiprotocol LPWAN 32-bit Arm Cortex-M4 MCUs, LoRa, (G)FSK, (G)MSK, BPSK, up to 256KB Flash, 64KB SRAM (version 8)中明确表示禁止在 32.768KHz 晶振的 OSC32_IN 和 OSC32_OUT 引脚中间添加反馈电阻。如下图五:

关于 STM32WL LSE 添加反馈电阻后无法起振问题

图五

后面按规格书要求,去掉客户样机上的 R34 1M 电阻,32.768KHz 晶振就可以正常起振,程序不会再卡死在 LSE 初始化。问题得到解决。

另外,根据 AN2867 关于 STM32MCU 晶振的参考设计要求,从客户晶振规格书查到下面参数:

ESR=90K 欧姆

CL = 12.5pF

C0 = 1.3pF

计算得到跨导:gmcrit=2.9032uA/V

可以看到跨导大于 STM32WLE5JBI6 规格书中 LSE 最大驱动能力 2.7uA/V,

如图六示:显然增益裕量不符合起振条件即 Gainmargin>5

关于 STM32WL LSE 添加反馈电阻后无法起振问题

图六

所以最后也建议客户后续更换符合 STM32WL 规格书要求的 32.768KHZ 晶振。具体晶振选型可以参考 AN2867。

关于 STM32WL LSE 添加反馈电阻后无法起振问题

5. 小结

本篇笔记分析了客户使用外部时钟调试 STM32WL LPUART 无法正常工作的问题。最后分析出问题是由 LSE 的 32.768KHZ 晶振没有正常起振引起。而 32.768KHZ 晶振无法正常起振则是因为客户在 32.768KHZ 晶振上添加了 1M 的反馈电阻。

虽然在 AN2867 里有对 STM32 晶振使用反馈电阻的建议,但需要注意的是针对 STM32WL 这颗芯片,其规格书中有明确要求禁止在 32.768KHz 晶振的 OSC32_IN 和 OSC32_OUT 引脚中间添加反馈电阻。

后面将客户样机上的 1M 的反馈电阻去掉后,样机的 32.768KHz 晶振可以正常起振,程序运行正常。虽然最后客户样机使用晶振可以正常起振,但根据 AN2867,客户晶振的增益裕量是不符合起振条件的。

所以为了避免后续产品量产时出现低速晶振无法起振问题,建议客户参考 AN2867 选择合适的 32.768KHz 晶振。

参考文献

关于 STM32WL LSE 添加反馈电阻后无法起振问题

文档中所用到的工具及版本

IAR 8.50.9


本文档参考ST官方的《【应用笔记】LAT1252+关于STM32WL+LSE添加反馈电阻后无法起振问题》文档。

参考下载地址:https://download.csdn.net/download/u014319604/89085988

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]