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

发布者:JoyfulSpirit最新更新时间:2023-12-10 来源: elecfans关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

该问题由某客户提出,发生在 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 的功能,也可以使用陷阱让程序的流程停留在服务程序中,从而等待看门狗复位整个系统。


关键字:STM32 引用地址:时钟失效后STM32还能运行是什么情况

上一篇:快速入门STM32的学习经验总结
下一篇:STM32实战案例分享:剖析STM32应用在电源项目上常见的那些难题

推荐阅读最新更新时间:2024-11-10 13:10

STM32学习总结之Sysstick(系统滴答定时器)
学习内容: 1、Cortex-M3 在内核部分 包含了一个简单的定时器——SysTick timer STM32内核有一个定时器。 2、有定时器就需要有时钟源,时钟源可以是内部的还可以是外部的,需要阅读使用手册确定什么作为时钟源。 在STM32 中SysTick 以 HCLK(AHB 时钟)或HCLK/8 作为运行时钟 3、SysTick 是一个24 位的定时器,即一次最多可以计数2^24 个时钟脉冲,这 个脉冲计数值被保存到 当前计数值寄存器STK_VAL(SysTick current value register) 中,只能向下计数,每接收到一个时钟脉冲STK_VAL 的值就向下减1,直至0,当STK_VAL 的值被
[单片机]
<font color='red'>STM32</font>学习总结之Sysstick(系统滴答定时器)
基于STM32-跑马灯实现
我学习M3有一段时间,第一次写博客,通过博客分享自己学习的经验跟大家探讨同时提高自己对M3的认识。相信大家初学时第一个实验就是实现跑马灯,这里我就介绍下跑马灯的实现。 1.首先讲下GPIO GPIO—general purpose intput output是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能 。 2.端口与引脚的区别 端口:单片机内部(CPU单元)和外部IO的接口组,比如说PORTA端口,有16个引脚,PORTA.0~PORTA.15。端口在IO空间映射有寄存器,这个寄存器反映当前端口的状态,如PORT
[单片机]
stm32使用stlink v2.0下载的sw接线方式
stm32的sw下载需要用到4根线 GND VCC SWCLK SWDIO,对应好即可,相比较3根线的方式,优先推荐4根线下载方式
[单片机]
<font color='red'>stm32</font>使用stlink v2.0下载的sw接线方式
STM32系列第6篇--NVIC中断优先级分组
STM32F103系列上面,又只有60个可屏蔽中断(在107系列才有68个) 中断管理方法: 首先,对STM32中断进行分组,组0~4。同时,对每个中断设置一个抢占优先级和一个响应优先级值。 分组配置是在寄存器SCB- AIRCR中配置: 高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。 中断设置相关寄存器 __IO uint8_t IP ; //中断优先级控制的寄存器组 __
[单片机]
<font color='red'>STM32</font>系列第6篇--NVIC中断优先级分组
使用STM32定时器进行输入脉冲的计数
STM32的定时器具有计数功能,在实际应用中可以用来对引脚上的输入信号进行统计。其输入信号作为计数时钟,输入引脚为ETR引脚。 本例程使用Timer 2,其ETR输入引脚为PA1,初始化是设置该引脚工作模式为输入模式,Timer2的工作模式为从模式。 为了方便测试,另外使用PC6模式输出一个时钟信号。测试时将PC6与PA1短接。(用户也可另外连接一个时钟信号到PA1引脚上。) 代码如下: int main(void) { unsigned char i_Loop; unsigned char n_Counter; #3366ff #ifdef DEBUG debug(); #3366ff #endif RC
[单片机]
STM32端口输入输出模式配置
STM32的IO口模式配置 根据数据手册提供的信息,stm32的io口一共有八种模式,他们分别是: 四种输入模式 上拉输入: 通过内部的上拉电阻将一个不确定的信号通过一个电阻拉到高电平。 下拉输入: 把电压拉到GND。与上拉原理相似。 浮空输入: 引脚内部什么都不接,处于浮空模式下,电平状态是不确定的。外部信号输入什么,IO口就是什么状态。 模拟输入: 接收到的是连续的模拟信号,一般用于AD转换。 四种输出模式 推挽输出: 可以输出高低电平,连接数字器件。在stm32中推挽电路由两个MOS管组成:输出高电平时P-MOS管导通,引脚联通VDD(3.3v)。输出低电平时N-MOS导通,引脚联通GND。**该方式既提高电路的负
[单片机]
stm32实现printf打印log的几种办法
在stm32单片机下,改一些bug的时候,光靠调试还不行,有时候需要打印log来查看某些变量在一段时间内的变化趋势,但是板卡又没有接串口,没办法重定向到串口打印,上网查资料研究了一下,发现以下几种办法可实现单片机像在pc终端一样打印log: 方法1:使用串口重定向,将printf打印的信息输出到串口,再将串口连接pc端串口接收终端,在终端上查看log.主要2个步骤:修改printf函数底层调用到的fputc函数和避免使用semihos TIng(半主机模式)。 a.如果使用mdk作为编译工具,在Target选项框里选Use MicroLib 选项,即为使用微库模式,不会使用半主机模式; b.工程中添加串口配置代码,方便
[单片机]
<font color='red'>stm32</font>实现printf打印log的几种办法
STM32之五外部中断(下)
通过对外部中断理论的些许理解,这次我们利用两个按键key1和key2来控制led1和led2的亮灭,按key1进入key1的中断,控制对应的led亮灭,按key2进入key2的中断,控制相应的led的亮灭 同样,涉及到中断,我们要建立两个文件,exti.c及exti.h,首先来看看exti.c 用到中断,自然我们要用到stm32f10x_it.c函数,将中断响应函数放在里面,打开这个文件你会发现里面只是给出了部分中断函数,找来找去也没有我们需要的中断函数体,这时需要我们自己添加函数体,看下我添加的函数体: 但是这个函数名可不是随便起的,具体每个中断函数体的函数名怎么书写,我们可以打开startup_stm32f10x_hd.
[单片机]
<font color='red'>STM32</font>之五外部中断(下)

推荐帖子

[资料下载] 《msp430系列单片机接口技术及系统设计实例》电子书
《msp430系列单片机接口技术及系统设计实例》电子书《msp430系列单片机接口技术及系统设计实例》电子书
linkuiyuni TI技术论坛
LPC800系列芯片特点讨论?
据NXP的介绍:LPC800具备两大创新特性为8位开发人员提供了更高的灵活性和利用基于GUI的配置工具完成更好的控制。灵活的开关矩阵使得设计人员可以为几乎任一引脚分配片内外设I/O,在低成本PCB上,可以进行引脚分配,帮助缓解PCB走线拥挤的情况。此处的示例展示了灵活开关矩阵的工作原理。LPC800上另一重要外设是状态可配置定时器(SCT),它可以进行定制以满足用户的特定应用需求。基本SCT配置是简单的2个16位PWM,具有4个捕获输入和4个匹配输出
zhaojun_xf NXP MCU
想自己在网上买些元件做个最小系统,大家帮忙推荐个店把?
谢谢大家了。想自己在网上买些元件做个最小系统,大家帮忙推荐个店把?
穆特兰舍 嵌入式系统
“一个产品,多种可能,LabVIEW迎接你的工程挑战”!答题赢好礼
刚一看到LabVIEW,你是否知道它是干什么的?他有什么作用?如何使用它?~~~点击进入一个产品,多种可能,LabVIEW迎接你的工程挑战页面,参与活动赢好礼!不仅能有机会赢得好礼,还能了解与LabVIEW相关,为你解决许多应用领域的工程挑战。猜我会不会告诉你参与流程?(往下看哟)活动详情:点击进入活动时间:即日起-2017年8月7日活动流程:1、点击进入一个产品,多种可能,LabVIEW迎接你的工程挑战页面;
EEWORLD社区 测试/测量
Ti的C28x系列的DSP(28069)(28377)使用经验,ADC经验
笔者使用过的项目中,使用的ADC都是DSP的片内ADC,使用片内ADC的好处是,转换速度快,节约成本,这是相比片外ADC的优势。DSP_28069的ADC精度是12位,DSP_28377D的ADC精度可以选择为12位,也可以选择为16位,笔者这里采用的是12位,两种DSP的采样模式都是单端模式。DSP的ADC采样精度和参考电压有很大的关系,一般选择外部参考电压,参考电压一定要加RC滤波电路。计算公式如下:关于ADC其他方面的原理,这里就不作介绍了,如果读者想了解更多,可以搜搜
灞波儿奔 DSP 与 ARM 处理器
【翌创ET6001测评】串口通讯与MP3播放模块控制
由资料可知ET6001配有8个UART,借助UART不但可以实现串行通讯,还可以控制具有相应功能的串口设备,如串口屏、双PWM调节模块、超声波测距仪、温度调控器、数据记录模块等。为便于使用,这里是用J9接口的UART0来控制一款具有串口控制功能的MP3播放模块。图1J9接口在具体实现MP3播放模块控制前,先要解决UART0的数据发送功能。由于MP3播放模块的波特率9600bps,故UART0的初识化函数为:staticvoidUART0_init(
jinglixixi 国产芯片交流
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved