0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时钟失效后STM32还能运行是什么情况

GReq_mcu168 来源:STM32单片机 作者:stmcu 2021-10-29 17:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

该问题由某客户提出,发生在 STM32F103VDT6 器件上。据其工程师讲述:在其产品的设计中,STM32 的 HSE 外接 8MHz 的晶体产生振荡,然后通过 STM32 内部的PLL 倍频到 72MHz,作为 STM32 的系统时钟驱动芯片工作。在 STM32 片外有专用的看门狗芯片,监控 STM32 的运行。STM32 内部的软件会在 STM32 的某个管脚上产生脉冲来复位看门狗。一旦 STM32 没有及时的产生脉冲来复位门狗,则看门狗会认为 STM32 运行不正常,从而复位 STM32。在对该产品做可靠性测试时,进行了对看门狗监控时钟失效能力的测试。测试的方法是:将 HSE 外接的晶体的两个端子接地,使其停止振荡,从而验证看门狗能否做出对 STM32 的做出复位动作。试验结果表明,看门狗没有产生复位动作。进一步测试发现,STM32 在失效情况下仍在向看门狗发送复位脉冲。详解STM32时钟的文章:详解STM32的时钟系统,收藏了。

调研:

重复测试,确认其所述现象属实。检查软件代码,确认其软件没有开启 STM32 的 CSS功能。修改代码,将 PLL 的二分频从 STM32 的 MCO 管脚送出,以方便用示波器观察。通过控制晶体的管脚是否接地来控制 HSE 是否振荡。当 HSE 正常振荡时,MCO 送出的信号频率为 36MHz,当 HSE 停止振荡时,MCO 送出的信号的频率在 1.7MHz 附近,如图(一)所示:

通过调试器观察寄存器 RCC_CFGR 中的 SWS 控制控制位,其值为[10],说明此时的系统时钟确实来自 PLL 的输出。

从 STM32F103VD 的数据手册中查找 PLL 相关的参数如表(一):

c8633fbe-389b-11ec-82a8-dac502259ad0.png

其中,PLL 的输出频率范围是 16MHz – 72MHz。也就是说,PLL 在处于相位锁定的状态下,可以输出 16MHz – 72MHz 的时钟信号。而当输入信号频率过低而导致输出信号频率低于 16MHz 时,将可能处于失锁的状态。在这状态下,它的输出信号的频率与输入信号的频率之间,不一定符合所设定的倍频与分频关系。更确切的说,不能通过公式:

c8d70d36-389b-11ec-82a8-dac502259ad0.png

得出“输入信号频率为零时,输出信号频率也为零”这样的结论。这一点与实测的结果相吻合。

结论:

STM32 的 PLL 在没有输入信号的情况下,仍能维持在最低的频点处振荡,产生输出。以至,CPU 及其它外设仍能在 PLL 送出的时钟的驱动下运行。所以,通过判断有无时钟来驱动 CPU 执行指令的方式来判断 HSE 是否失效是行不通的。

处理:

对软件做如下修改:

1. 在软件的初始化部分,开启 STM32 的 CSS 功能;

2. 修改 NMI 中断服务程序,加入 while(1) 陷阱语句;

开启 CSS 功能后,当 HSE 失效时,STM32 会自动开启 HSI,并将系统时钟的来源切换到HSI 的输出,同时产生 NMI 中断。这样,程序的流程将停留在 NMI 中而不能产生复位片外的看门狗的脉冲。当片外看门狗溢出后,就会复位 STM32,使其恢复到正常驻的状。

建议:

STM32 中的 CSS 功能是专门为检测和处理 HSE 失效而设计的。但该功能在 STM32 复位后是被禁止的,需要软件对其使能才会发挥作用。当 CSS 单元检测到 HSE 失效时,它会使能 HSI,并将系统时钟切换到 HSI。同时,它会关闭 HSE,如果 PLL 的输入信号来自 HSE的输出,它也会关闭 PLL。CSS 单元在做时钟调整的同时,也会产生一个 NMI 中断请求,和一个送给高级定时器的刹车信号。NMI 中断请求会产生一个 NMI 中断,以便用户程序可以在中断服务程序中做紧急处理,而刹车信号则是使高级定时器进入刹车状态,以防止由其控制的电机驱动桥臂由于失去控制而过流。用户程序可以在 NMI 中断服务程序中尝试恢复 HSE 及 PLL 的功能,也可以使用陷阱让程序的流程停留在服务程序中,从而等待看门狗复位整个系统。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371085
  • 时钟
    +关注

    关注

    11

    文章

    1953

    浏览量

    134532

原文标题:时钟失效之后,STM32还能运行?

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32x030时钟运行失效检测

    为1,分别使能HSE 和LSE 时钟故障检测功能。HSE 或LSE 时钟运行失效检测还需要设置SYSCTRL_CR1.LSIEN 为1 使能内部低速
    发表于 11-27 06:37

    自恢复保险丝 PPTC 有哪些可能失效情况

    自恢复保险丝 PPTC 有哪些可能失效情况
    发表于 09-08 06:27

    IGBT短路失效分析

    短路失效网上已经有很多很详细的解释和分类了,但就具体工作中而言,我经常遇到的失效情况主要还是发生在脉冲阶段和关断阶段以及关断完毕之后的,失效的模式主要为热
    的头像 发表于 08-21 11:08 3787次阅读
    IGBT短路<b class='flag-5'>失效</b>分析

    请问DTU的设备号都在什么情况下需要填写,填写的规则是什么?

    DTU的设备号都在什么情况下需要填写,填写的规则是什么?
    发表于 08-07 07:50

    连接器会失效情况分析?

    连接器失效可能由电气、机械、环境、材料、设计、使用不当或寿命到期等多种原因引起。通过电气、机械、外观和功能测试,可以判断连接器是否失效。如遇到失效情况需要及时更新,保证工序的正常进行
    的头像 发表于 06-27 17:00 549次阅读

    训练完模型后用cls_video.py在canmvIDE上运行,按着步骤操作但是摄像头没有识别到是什么情况

    训练完模型后用cls_video.py在canmvIDE上运行,按着步骤操作但是摄像头没有识别到是什么情况啊,没有框出现
    发表于 06-10 06:57

    轴承损坏导轨还能用吗?

    轴承损坏导轨还能用吗?
    的头像 发表于 04-03 17:52 562次阅读
    轴承损坏<b class='flag-5'>后</b>导轨<b class='flag-5'>还能</b>用吗?

    STM32H750更改时钟,程序无法运行怎么解决?

    各位大佬,我想请教一个问题: 为了验证H750主时钟频率和功耗的关系: 用STM32CUBEMX配置STM32H750VBT6的主时钟为:100MHz,程序可以正常
    发表于 03-12 06:38

    stm32h750vbt6设置了LSE,装载RESET失效了怎么解决?

    stm32h750vbt6设置了LSE,装载RESET失效
    发表于 03-07 15:16

    stm32f105rct6把usb插在电脑上,然后再上电,模拟u盘内的文件就会缺失,这个是什么情况呢?

    请问一下各位大佬,我使用stm32f105rct6,用USB文件系统,先上电,再插上USB,模拟U盘内的.csv文件数量是正确的。但是,我先把usb插在电脑上,然后再上电,模拟u盘内的文件就会缺失,请问一下这个是什么情况
    发表于 03-07 07:57

    DLP3010evm烧录之后不投影图案,是什么情况导致的?怎么解决?

    烧录之后不投影图案,是什么情况导致的,该怎么解决,配置截图如下:
    发表于 02-18 08:18

    THS1206测试data_av信号输出的高电平和低电平都是mv级别的,请问是什么情况呢?

    您好,我在使用THS1206,AVDD=5V,BVDD=DVDD=3.3V; 输入时钟为3MHZ,和FPGA进行连接; 测试data_av信号输出的高电平和低电平都是mv级别的,请问是什么情况呢?
    发表于 02-14 08:25

    ADS5474模数转换器的VCM和VREF引脚在什么情况下使用?

    是什么?在什么情况下使用?文档上有张图表明两个时钟引脚在内部通过两个1000欧电阻接到2.4V电压,这个2.4V是不是就是VREF? 此外,信号输入规定是2.2VPP,共模电压设置为3.1V或是0V是不是都行?
    发表于 01-13 08:04

    ADS1278数据输出引脚Dout1有脉冲输出是什么情况

    ADS1278配置成SPI TDM模式,CLK时钟24MHz,在SCLK没给时钟情况下,用示波器观察Dout1管脚就不规则脉冲输出,宽度大约6us,周期不定。另外DRDY有规律性脉冲输出,宽度大约50ns,间隔60us,请问
    发表于 12-31 06:12

    ADS1271使用不当会不会出现采样率的主时钟不是这个对应关系的情况?

    ADS1271在MODE浮空的情况下采样率Wie主时钟的512分之一,即fs=fclk/512,如果使用不当,会不会出现采样率的主时钟不是这个对应关系的情况,例如当fclk=1024
    发表于 12-20 08:24