全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 便携设备 >

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

时间:2017-08-29 17:17

人气:

作者:admin

标签: 单片 

导读:一个关于无外部高速时钟时HSE_RDY被意外置位的话题分享。...

前言

问题由客户提出,用户发现在STM32F103器件上。用户在产品中使能了IWDG,在使用过程中发现当MCU被复位后,有时程序跑不下去;跟踪代码发现程序死在轮询PLL_RDY处。用户反馈说用的就是ST库中的范例代码,怀疑STM32F103有设计问题 。

调研

排查硬件供电无问题,用示波器测量NRST发现复位信号正常,用STM32CubeMX生成最小系统代码(时钟配置+IWDG)反复验证,未发现此问题,开始怀疑用户代码。

客户声称开发是基于ST提供的SPL库中自带的demo,使用SPL中的范例代码加上IWDG复位,确实可以复现此问题:通过调试器跟踪代码发现问题发生时HSE_RDY位被异常置位(用户平台无外挂高速时钟源)。

通过分析代码,发现SPL库【标准外设固件库】在配置时钟时先会直接使能HSE,并对HSE_RDY位进行检测。在复位MCU若干次后HSE_RDY可能位会被置位,从而导致时钟配置程序按照基于HSE的状态来进行接下来的配置。而SPL中的demo是跑在STM32F1评估板上,而评估板外带高速时钟源,故没有此问题。

结论

在MCU复位后,HSE_ON虽默认无效,但反复对其进行使能操作会导致MCU内部的噪声积累,造成时钟检测电路误判,并从寄存器反映出来。

- 对STM32F103来说,一旦HSE_RDY被置位,只要不断电,无论怎样复位MCU,HSE_RDY都不会被清除(即使失能HSE_ON) 。

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

处理

由于用户不使用外部HSE,即并不需要对是否有外接高速晶振进行判断,故修改用户代码不再使能HSE。反复测试后问题不复现 。

建议

1 、要了解HSE_RDY位是用来检测是否有外部时钟存在的必要条件,而非充分条件。

2、使用STM32时,尽量按照实际设计对软件做出相应修改,切勿图省事而带来问题。


温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信