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

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

[复制链接]
STMCU小助手 发布时间:2023-2-17 12:52
1. 问题描述客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。- d$ s" ~: Y& d! f4 B: Q9 O

& P# t3 z- N$ J
2 z5 I& w3 E. o; r  n; A
2. 问题确认! q, h6 q3 j1 n; A
发现上述问题时,客户使用 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.$ [5 w& z  x  e+ J& Z" C
+ }2 @1 w! L# t8 N1 n

# N1 L' ]4 ^# r( @5 L) ~, C3. 问题分析( y  \9 ], _5 b1 x; x
由于前面都是用客户的电脑和程序调试,客户的电脑上的 Keil 版本不能单步调试。针对客户的问题,基于 STM32WL AT slave 例程,运行在客户样机上发现现象一致,也是卡死在 HAL_RCC_OscConfig 。但使用单步调试进入 HAL_RCC_OscCongig 里面发现,卡死具体的原因不是 HSE,而是 LSE 初始化出了问题,一直在等待 LES ready 的信号。具体代码如下:
! D5 v! n& d/ p
  1. /* Wait till LSE is ready */: t6 e  [9 {/ L. O0 P  [
  2. while (LL_RCC_LSE_IsReady() == 0U); s! M5 [/ P/ I4 |* {6 W4 Z. d, W* E
  3. {
    4 Y5 B3 Z2 ~$ k! V! y5 @* X
  4. if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
    6 A* i4 n, ]! c# a8 Q" ], z  x
  5. {" {6 f. w4 U+ O, ~+ h$ n4 I& @: H
  6. return HAL_TIMEOUT;! \* J  n$ n, S7 n2 y2 R
  7. }
    ; D9 O6 g  F  E2 W; q
  8. }- S* H0 ^" j  a7 V$ u4 f6 @: Y
复制代码
( c' p" A5 J9 j

  e. }, m& E: p' L针对上面的分析,把 RTC 时钟源更改为 HSE_RTC,如下图一,图二, AT slave 例程可以正常运行,32MHZ 晶振可以起振,使用 AT 指令可以测量出 RF 有正常发射出信号。& L- P1 Z" {* Q8 h1 d# b3 V! p% g- G
. J8 r& F  w  m2 u, D# e- R

) g; s. K5 z( b! }7 I (IP@}4VXR_{71K9BMN``[HJ.png
: Z" r3 A) \9 S, u" x0 ~9 W$ c! B' R3 q5 |. d( \6 A
AKP3MNFAV[TMO4](4QWHKKQ.png % y( b" _8 ?+ e3 a7 G
7 B; q% E* D: v; L7 `

' q. ?. H! I6 f6 d同时,对于客户需要使用 LPUART,可以按照图三的时钟配置验证:* @5 K. Q: o4 S8 s( G: x

( i2 A0 C9 z5 ^- m" [

( Z" c* Z6 r# e5 n( Q% d$ u (SY1$E(R~18FF{@N%%WQ1S1.png
$ S/ m1 ^* d# M; ?+ o3 F+ ^/ o+ R$ [+ u9 j; V5 ?6 d

, `! I5 X4 i! G- ^" X$ \0 s 图三 ( H3 O: e8 ^% F, w! `8 j- v

. X- _: C+ C1 M* G
) _% z( m$ L" u+ z# _
客户用他们手上样机同步验证,发现结果一致。确实不使用 LSE 后,样机可以正常工作,32MHZ 晶振也可以正常起振。 下一步就要分析导致 LSE 无法正常工作的原因。客户有按建议尝试更换 32.768KHZ 的晶振以及负载。并且调整 LSEDRIVE 为 high 即__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH),发现依然无法正常使用LSE。3 Y1 w4 p1 |. ~& V( \& l
, E) G  J4 q/ p. [$ G! E
- O. M9 P3 v1 j( V/ I  M8 U
完整版请查看:附件 关于STM32WL LSE添加反馈电阻后无法起振问题.pdf (606.2 KB, 下载次数: 0)
收藏 评论0 发布时间:2023-2-17 12:52

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版