用 STM32WL 系列做 LoRa/LPWAN 设备时,LSE 32.768KHz 晶振不起振是高频坑:程序卡死在 HAL_RCC_OscConfig、HSE 也跟着不起振、LPUART 无输出,查遍软件都找不到原因。
ST 官方 LAT1252 应用笔记直接点破核心:STM32WL 的 LSE 引脚严禁外接反馈电阻! 本文把问题现象、定位过程、解决方法、晶振选型一次讲清,帮你快速排坑。
资料获取:【应用笔记】LAT1252 关于STM32WL LSE添加反馈电阻后无法起振问题
1. 典型故障现象(一摸一样就是同款问题)
- 不开外部时钟:LPUART 打印正常
- 使能 HSE+LSE 后:无打印、系统卡死
- 卡死位置:
HAL_RCC_OscConfig内等待 LSE 就绪 - 示波器测不到 32.768KHz 信号
- 换晶振、调负载电容、改 LSE 驱动强度都无效
- 代码在官方 NUCLEO-WL 板正常,自制样机必挂
2. 根因定位:不是软件,是硬件画错了
经过一步步排查:
- 不是 HSE 故障
- 不是时钟配置错误
- 不是驱动强度不足
- 是 LSE 并联了 1MΩ 反馈电阻
STM32WL 数据手册(DS13105)明确规定:OSC32_IN 与 OSC32_OUT 之间禁止添加外部反馈电阻。芯片内部已经集成反馈电阻,外部再并联会破坏起振条件,直接导致 LSE 停振。
3. 一秒解决:拆掉 LSE 两端的反馈电阻
处理方法极其简单:
- 找到原理图中OSC32_IN ↔ OSC32_OUT 之间的电阻(通常 1MΩ)
- 直接去掉、不焊接
- 重新上电:→ LSE 正常起振,系统不再卡死,HSE 与 LPUART 全部恢复。
4. 额外重要:LSE 晶振必须满足增益裕量
LAT1252 还强调:即使去掉电阻能起振,也要按AN2867规范选晶振,否则量产易批量失效。
STM32WL LSE 最大驱动跨导 Gmcitmax = 2.70 μA/V
客户晶振计算临界跨导 gmcrit = 2.90 μA/V
→ 超过芯片驱动能力,增益裕量不足
正确做法:
- 选择 gmcrit < 2.7 μA/V 的 32.768KHz 晶振
- 满足增益裕量 Gain margin > 5
- 参考 AN2867 晶振设计指南
5. 工程师避坑总结(记住 3 点)
- STM32WL 系列 LSE 禁止外接反馈电阻
- 系统卡死在 RCC 初始化,优先查 LSE 是否起振
- 晶振必须符合 AN2867,保证增益裕量,量产才稳定
STM32WL 的 LSE内部已有反馈电阻,外部再并联 1M 电阻会直接导致不起振、系统卡死。拆掉电阻即可恢复,同时按规范选晶振,彻底杜绝 LSE 问题。
260