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

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

3天内不再提示

晶振损坏了,STM32还能正常运行?

jf_pJlTbmA9 来源:玩转单片机与嵌入式 作者:玩转单片机与嵌入 2023-09-21 17:10 次阅读

问题:

该问题由某客户提出,发生在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附近,如图(一)所示:

wKgZomUD3uSAIIc6AAB0xGKdSdA325.jpg

wKgZomUD3uWASZ4VAABOPo7YW68587.jpg

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

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

wKgaomUD3uaALpH8AACNkoX34lQ814.png

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

wKgaomUD3uiATeKNAAARZddhK70351.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的功能,也可以使用陷阱让程序的流程停留在服务程序中,从而等待看门狗复位整个系统。

wKgZomUD3uyAKRcgAABk0EME7Dk698.jpg

来源:玩转单片机嵌入式
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理。

审核编辑 黄宇

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

    关注

    32

    文章

    2473

    浏览量

    66850
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348755
收藏 人收藏

    评论

    相关推荐

    STM32L073V8T6的32K测不到波形的原因?

    STM32L073V8T6接外部32K,电池供电,低功耗运行,但是脚上测不到波形,产品可
    发表于 04-10 07:40

    故障排除指南:电路板损坏的诊断与修复

    影响整个电路系统的正常工作。掌握损坏的原因、判定方法和解决措施,有助于我们更好地应对故障
    发表于 04-26 15:45

    主板上的

    提供振荡频,主板上几乎所有的频率都是以时钟为基础的。如果它们损坏主板不能正常工作的标称方
    发表于 03-21 14:59

    怎么来判断检测的好坏

    ;  二、用数字电容表(或数字万用表的电容档)测量其电容,一般损坏容量明显减小(不同的正常
    发表于 10-14 15:50

    苹果机中有

      智能手机的上市无疑让石英的需求量日渐见涨。除了苹果公司出现的产品以外,电子产业中还有更多值得关注的事物。试问有多少人了解一个智能手机的组成结构里面小零件所起到的作用,如果缺少其中之一手机还能
    发表于 10-29 15:35

    实例中教你修复

      损坏了,很多人苦于不知如何修复,今天我们就在实例中教你修复损坏。  实例一  一片
    发表于 03-24 15:52

    选择需要注意的五个方面

    分有源和无源两种,两种主要区别就是有源是有电压的,无源是需要外接电压。有源
    发表于 07-01 14:34

    stm32如果在程序中使能了外部高速并且用示波器看到了,是说明程序在运行吗?

    STM32外部高速是要通过程序使能的,那如果我在程序中使能了外部高速,并且用示波器看到了
    发表于 09-07 09:35

    STM32F4不接入LCD不起

    自己做了个STM32F407实验板,现在测试时候有个诡异的现象:不接入LCD不起,接入LCD
    发表于 04-22 06:36

    怎么判断坏了

    `  谁来阐述一下怎么判断坏了?`
    发表于 02-27 16:13

    STM32的RTC为什么会不起

    STM32外部不起使用STM32cubemx生成工程不起,烧录标准库的程序后,
    发表于 07-16 06:56

    外部故障导致芯片无法正常启动问题

    最近要使用STM32F4芯片做开发,根据自己的编程习惯,做一些学习记录,以便于自己以后查阅。我们在设计电路的时候,一般都会设计MCU使用外部,笔者工作中曾经遇到外部
    发表于 08-06 08:37

    stm32f103使用内部

    stm32f103使用内部,在进行STM32F7平台开发过程中,有时候需要修改外部的频率
    发表于 08-10 06:14

    STM32外部和内部是如何进行切换的

    STM32外部和内部切换以前做STM32的项目都是移植的正点原子官方的Demo,
    发表于 08-10 06:25

    stm32外部时钟源8M如何修改成12M

    stm32外部时钟源8M换成12M后程序修改说明▼标签: stm32外部时钟源8m
    发表于 08-12 08:30