打印
[STM32F1]

无外部高速时钟时 HSE_RDY 被意外置位

[复制链接]
699|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言
问题由客户提出, 用户发现在 STM32F103 器件上。 用户在产品中使能了 IWDG, 在使用过程中发现当
MCU 被复位后, 有时程序跑不下去; 跟踪代码发现程序死在轮询 PLL_RDY 处。 用户反馈说用的就是
ST 库中的范例代码,怀疑 STM32F103 有设计问题  

使用特权

评论回复
沙发
我喜欢打游戏|  楼主 | 2021-11-8 16:08 | 只看该作者
调研
排查硬件供电无问题, 用示波器测量 NRST 发现复位信号正常, 用 STM32CubeMX 生成最小系统代码
( 时钟配置
+IWDG)反复验证, 未发现此问题, 开始怀疑用户代码。
客户声称开发是基于
ST 提供的 SPL 库中自带的 demo, 使用 SPL 中的范例代码加上 IWDG 复位,确
实可以复现此问题: 通过调试器跟踪代码发现问题发生时
HSE_RDY 位被异常置位( 用户平台无外挂
高速时钟源)
通过分析代码,发现
SPL 库在设置时钟时会直接使能 HSE,在复位若干次后 HSE_RDY 位会被置位,
从而导致程序(
HSEStatus) 按照 HSE 来进行接下来的时钟配置。 而 SPL 中的 demo 是跑在
STM32F1 评估板上,而评估板自带高速时钟源, 故没有此问题。  


使用特权

评论回复
板凳
我喜欢打游戏|  楼主 | 2021-11-8 16:10 | 只看该作者
结论
MCU 复位后 HSE_ON 默认是无效, 反复对其进行使能操作会导致 MCU 内部的噪声积累,造成时
钟检测电路误判,并由寄存器反映出来。
- STM32F103 来说,一旦 HSE_RDY 被置位,只要不断电,无论如何复位 HSE_RDY 都不会
被清除(即使失能
HSE_ON  

- 对 STM32F030 单片机进行类似操作, 也会发现同样问题,不同之处在于在 HSE_RDY 被置位
后复位 MCU, HSE_RDY 位会被清除,但是一旦 HSE_ON 被置位, HSE_RDY 同样会被置位


使用特权

评论回复
地板
我喜欢打游戏|  楼主 | 2021-11-8 16:12 | 只看该作者
- 对 STM32F030 单片机进行类似操作, 也会发现同样问题,不同之处在于在 HSE_RDY 被置位
后复位 MCU, HSE_RDY 位会被清除,但是一旦 HSE_ON 被置位, HSE_RDY 同样会被置位  

使用特权

评论回复
5
我喜欢打游戏|  楼主 | 2021-11-8 16:14 | 只看该作者
建议
1 要了解 HSE_RDY 位是用来检测是否有外部时钟存在的必要条件, 而非充分条件
2 在使用 STM32 时,一定要按照硬件设计对软件做出修改,切勿图省事而造成问题  

使用特权

评论回复
6
磨砂| | 2021-12-4 11:52 | 只看该作者
很不喜欢用看门狗

使用特权

评论回复
7
晓伍| | 2021-12-4 11:53 | 只看该作者
是不是喂狗有问题啊

使用特权

评论回复
8
八层楼| | 2021-12-4 11:53 | 只看该作者
还是对单片机不够了解啊

使用特权

评论回复
9
观海| | 2021-12-4 11:55 | 只看该作者
HSE_RDY 位是用来设置什么的呢

使用特权

评论回复
10
tpgf| | 2021-12-4 11:55 | 只看该作者
IWDG是什么标志位啊

使用特权

评论回复
11
guanjiaer| | 2021-12-4 11:57 | 只看该作者
内部的噪声是如何产生的呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

611

帖子

0

粉丝