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

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

[复制链接]
STMCU小助手 发布时间:2023-2-17 12:52
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 的信号。具体代码如下:
  1. /* Wait till LSE is ready */
  2. while (LL_RCC_LSE_IsReady() == 0U)
  3. {
  4. if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  5. {
  6. return HAL_TIMEOUT;
  7. }
  8. }
复制代码


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


(IP@}4VXR_{71K9BMN``[HJ.png

AKP3MNFAV[TMO4](4QWHKKQ.png


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


(SY1$E(R~18FF{@N%%WQ1S1.png


图三


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


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

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版