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

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

[复制链接]
STMCU小助手 发布时间:2023-2-17 12:52
1. 问题描述客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。
1 L3 E! _+ s: u4 s! P
: o) S, C! Z- G1 i& _) Y/ d# F# B
6 g$ N( D5 L5 E; w1 {' I& J
2. 问题确认
9 t3 J9 ]: ]# Y$ m$ O发现上述问题时,客户使用 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.
1 U' P/ _; v2 H% b% v9 a8 ]
+ s+ u& j8 r3 }/ F: C: E
5 e; I' t% {+ i2 z- Y' j5 @
3. 问题分析9 r' B% p+ {+ g0 E! K
由于前面都是用客户的电脑和程序调试,客户的电脑上的 Keil 版本不能单步调试。针对客户的问题,基于 STM32WL AT slave 例程,运行在客户样机上发现现象一致,也是卡死在 HAL_RCC_OscConfig 。但使用单步调试进入 HAL_RCC_OscCongig 里面发现,卡死具体的原因不是 HSE,而是 LSE 初始化出了问题,一直在等待 LES ready 的信号。具体代码如下:
9 o9 W. D3 k0 N" |2 [. w
  1. /* Wait till LSE is ready */4 O) z- Y% H% L
  2. while (LL_RCC_LSE_IsReady() == 0U)
    - Z! j! b- D% p5 z& f4 C+ }- u
  3. {2 \7 m0 D: ]. Y/ Z
  4. if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)7 f9 T' G4 X( j, [6 G. b6 w, `
  5. {) o0 t- }: R6 z! }; C: u* T  n
  6. return HAL_TIMEOUT;
    6 Y) V6 w* C5 B
  7. }- [8 H3 {5 ^, n; g' ~
  8. }& x( P' s$ V8 J5 w% L! ?% X$ {
复制代码
$ F, d; M8 V* k9 T
9 H* [3 x: a6 F/ d9 q% q
针对上面的分析,把 RTC 时钟源更改为 HSE_RTC,如下图一,图二, AT slave 例程可以正常运行,32MHZ 晶振可以起振,使用 AT 指令可以测量出 RF 有正常发射出信号。
% P2 e! s. x8 w6 d- L, a0 D  ~' L. N$ J1 L
& T0 s1 d# I, E7 J) o
(IP@}4VXR_{71K9BMN``[HJ.png ' q8 q6 `* h" b9 I
6 f) u; F& k7 l& w
AKP3MNFAV[TMO4](4QWHKKQ.png $ E# s" g  {, I9 P

2 @! J4 J, @1 N7 e& s! V1 R6 c1 d
5 _/ [6 \; f" t* ]9 g5 n# O
同时,对于客户需要使用 LPUART,可以按照图三的时钟配置验证:
4 \0 U7 b  p8 }- m
  W- Y* j& q+ I) e1 L
) ?' K, X5 s1 _1 P: `, S9 q
(SY1$E(R~18FF{@N%%WQ1S1.png
( R# E8 G* d, d# a3 p! Q3 q8 w- C$ T' {* X5 B4 x
9 R( x: e! `" b: \; c5 }
图三 5 f/ A( W2 s3 p/ E  A- S; r8 [
- Z4 s6 F" {" U* C
  {8 @  z" u; h* |; @; o! u
客户用他们手上样机同步验证,发现结果一致。确实不使用 LSE 后,样机可以正常工作,32MHZ 晶振也可以正常起振。 下一步就要分析导致 LSE 无法正常工作的原因。客户有按建议尝试更换 32.768KHZ 的晶振以及负载。并且调整 LSEDRIVE 为 high 即__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH),发现依然无法正常使用LSE。
% b, ~: `) W/ [  a/ r2 l1 l5 R7 J7 a8 u- w! \0 Z7 N

6 @0 ]- l8 S* i. a完整版请查看:附件 关于STM32WL LSE添加反馈电阻后无法起振问题.pdf (606.2 KB, 下载次数: 1)
赞 收藏 评论0 发布时间:2023-2-17 12:52

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版