你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32WL LSE 添加反馈电阻后无法起振问题经验分享

[复制链接]
STMCU小助手 发布时间:2023-7-6 21:42
1. 问题描述
客户调试STM32WLE5JB 样机的时候遇到这样一个问题:在调试LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的HSE 和LSE 后就没有打印。
2. 问题确认

$ {9 T  J" a4 \

发现上述问题时,客户使用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.


% c3 j/ S, I6 n4 J

3. 问题分析

* }, Y0 r+ c0 t, t5 k1 r

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

- ?6 @* w  k2 G' m0 D# _7 b

微信图片_20230706213943.png


% l7 E, m/ W9 |; Z; G% q" L5 @
针对上面的分析,把RTC时钟源更改为HSE_RTC,如下图一,图二, AT slave例程可以正常运行,32MHZ晶振可以起振,使用AT指令可以测量出RF有正常发射出信号。/ L& z5 F$ Q! }: A) u
微信图片_20230706213939.png
图一
* K( Q# R  w4 |# }4 b3 G
微信图片_20230706213935.png
图二
0 T; i, w; u6 |8 v5 w

$ Z6 A) d- M! o0 Y' ~: t& |
同时,对于客户需要使用LPUART,可以按照图三的时钟配置验证:
微信图片_20230706213932.png
图三
2 R' u6 ^$ ~8 i. y( g- U" r2 S

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


9 ^, a8 I9 _6 S- ?4 _
4.问题解决

) M/ I  l+ X# [0 W6 B3 C* k
针对LSE无法起振问题,尝试了上面针对硬件和软件多种方法后依然没有解决。后来仔细检查客户原理图发现,客户在32.768KHZ晶振上添加了1M的反馈电阻,如图四R34
微信图片_20230706213928.png
图四
% }; _4 i* S! W# k* A5 {( F

4 D9 b9 `: Z8 G: U" [' a

而在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引脚中间添加反馈电阻。如下图五:

微信图片_20230706213925.png
图五
5 u; H" m+ ?  B; S  G8 A

后面按规格书要求,去掉客户样机上的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

6 k8 m: G. R: [

微信图片_20230706213907.png

图六

所以最后也建议客户后续更换符合STM32WL规格书要求的32.768KHZ 晶振。具体晶振选型可以参考AN2867。
) g+ W9 n+ M7 @/ I
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 晶振。
$ \" o9 i  e3 a) C9 R4 V% _7 h
转载自: STM32单片机
如有侵权请联系删除
6 \% r& D& n! s

( v6 g0 X  h( K5 E& v6 _, @
收藏 评论1 发布时间:2023-7-6 21:42

举报

1个回答
bitterheart 回答时间:2023-7-9 09:36:46

牛,学会了,之前也遇到过这种晶振不起振的情况

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版