STM32的安全技术---RVD电源检测和CSS时钟切换
来源:互联网 发布:mac 大写灯不亮 编辑:程序博客网 时间:2024/05/24 01:48
RVD电源检测STM32:
这个firmware有demo。并且我试验了,可以用。不过官网V3.5.0的demo有笔误。
EXTI_ClearITPendingBit(EXTI_Line16); //官网写的是Line17
EXTI_InitStructure.EXTI_Line = EXTI_Line16;//官网写的是Line17
CSS时钟切换:
这个21IC有帖子:
时钟安全系统的疑问 此帖已结(0)
芯片型号:STM32F103ZET6
情况:最近闲的无聊想看看STM32的时钟安全系统是怎么回事,所以将外部晶体作为时钟,PLL后到72M,然后软件中对“时钟安全系统”没有任何的操作,仅仅写了一个LED流水灯程序,接着用导线短接晶振两脚,那么它死活都该出问题了,结果~~LED流水灯继续转(不是重新开始,而是接着之前的状态继续下去),但是速度明显变慢很多,应该是自动切换到内部RC振荡器了,放开短接的晶振脚后自动恢复到之前的速度,再短接又变慢,不短接就正常,感觉相当奇怪:
(1)我在软件中没有作任何处理,STM32是否本身就有这类机制,也就是外部时钟失效后自动切换到内部,同时外部时钟一旦恢复正常就切换回去?
(2)如果(1)成立,那么要“时钟安全系统”何用?我本来的目的就是外部时钟失效时通过它重新启动外部晶振,既然这一切是自动的,这系统的作用岂不多余?
(3)我的测试程序仅仅是点亮LED1,然后用CPU空转的方式等待,接着关闭LED1同时打开LED2……如此下去,不知道有没有我没观察到的“异常”存在,就好比以前用51时主程序中不用while(1),那么程序走完一遍后仍然会从0地址开始,“看上去”就像在无限循环,实际上相当于走完一个循环重启一次。
情况:最近闲的无聊想看看STM32的时钟安全系统是怎么回事,所以将外部晶体作为时钟,PLL后到72M,然后软件中对“时钟安全系统”没有任何的操作,仅仅写了一个LED流水灯程序,接着用导线短接晶振两脚,那么它死活都该出问题了,结果~~LED流水灯继续转(不是重新开始,而是接着之前的状态继续下去),但是速度明显变慢很多,应该是自动切换到内部RC振荡器了,放开短接的晶振脚后自动恢复到之前的速度,再短接又变慢,不短接就正常,感觉相当奇怪:
(1)我在软件中没有作任何处理,STM32是否本身就有这类机制,也就是外部时钟失效后自动切换到内部,同时外部时钟一旦恢复正常就切换回去?
(2)如果(1)成立,那么要“时钟安全系统”何用?我本来的目的就是外部时钟失效时通过它重新启动外部晶振,既然这一切是自动的,这系统的作用岂不多余?
(3)我的测试程序仅仅是点亮LED1,然后用CPU空转的方式等待,接着关闭LED1同时打开LED2……如此下去,不知道有没有我没观察到的“异常”存在,就好比以前用51时主程序中不用while(1),那么程序走完一遍后仍然会从0地址开始,“看上去”就像在无限循环,实际上相当于走完一个循环重启一次。
请看看手册上对时钟安全系统的说明
再看看你的程序中是如何处理的,尤其是NMI的处理。
疑惑的地方主要是:
图中倒数第三行,“时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。”
我个人理解:外部时钟出事了,自动切换到内部HSI,这里没多大问题,但是切换了以后从现象上来看,系统是在尝试重新启动外部时钟的,一旦启动成功就自动切换回去并且重新打开PLL,这点资料上提都没提。
那么“时钟安全系统”的存在不就仅仅是“告知”外部时钟出事,并对TIM1等等作个补救么?如果在软件上不作任何处理(即CSSI中断为关闭状态,NMI处理函数自然也是空的),系统一样可以从故障中恢复过来。并且在故障发生及自动恢复期间,时钟均由HSI提供,并不会有“死机”现象出现,而这一切是我发帖中提到的那个小实验中观察到的,同时也是疑惑的地方。
那么..以上假设是否成立呢?毕竟资料上提都没提,害怕属于非法应用..
我个人理解:外部时钟出事了,自动切换到内部HSI,这里没多大问题,但是切换了以后从现象上来看,系统是在尝试重新启动外部时钟的,一旦启动成功就自动切换回去并且重新打开PLL,这点资料上提都没提。
那么“时钟安全系统”的存在不就仅仅是“告知”外部时钟出事,并对TIM1等等作个补救么?如果在软件上不作任何处理(即CSSI中断为关闭状态,NMI处理函数自然也是空的),系统一样可以从故障中恢复过来。并且在故障发生及自动恢复期间,时钟均由HSI提供,并不会有“死机”现象出现,而这一切是我发帖中提到的那个小实验中观察到的,同时也是疑惑的地方。
那么..以上假设是否成立呢?毕竟资料上提都没提,害怕属于非法应用..
你是否要问:当HSE恢复之后,CSS是否应该自动切换回使用HSE
首先,请你确认我的理解是否正确:你是否要问:当HSE恢复之后,CSS是否应该自动切换回使用HSE?这个问题确实没有在手册中提及,我要问了设计人员之后才知道。
其次,“告知”外部时钟出事是一个非常重要的事情,你自己做个小试验可以不去处理这个事件,但是在很多应用场合,必须要处理这个事件,即使它有可能会自动恢复。
在HSE失效时,HSI可以提供时钟,但这个时钟的主要目的不是为了维持正常的操作,HSI只能维持最低限度的运行(系统时钟频率降低),而是为了让你可以进行紧急处理。比如一个抢救病人的呼吸机,如果主时钟失效,软件必须依靠HSI做紧急处理并立刻报警,提醒值班医生,否则病人将会有生命危险。这种情况下你能够企望HSE自动恢复吗?多长时间能够自动恢复?即使它自动恢复了,在没有查明HSE失效的原因之前,你还敢再继续使用这台呼吸机吗?
其次,“告知”外部时钟出事是一个非常重要的事情,你自己做个小试验可以不去处理这个事件,但是在很多应用场合,必须要处理这个事件,即使它有可能会自动恢复。
在HSE失效时,HSI可以提供时钟,但这个时钟的主要目的不是为了维持正常的操作,HSI只能维持最低限度的运行(系统时钟频率降低),而是为了让你可以进行紧急处理。比如一个抢救病人的呼吸机,如果主时钟失效,软件必须依靠HSI做紧急处理并立刻报警,提醒值班医生,否则病人将会有生命危险。这种情况下你能够企望HSE自动恢复吗?多长时间能够自动恢复?即使它自动恢复了,在没有查明HSE失效的原因之前,你还敢再继续使用这台呼吸机吗?
回香版
首先,我的问题确实如此:当HSE恢复之后,CSS是否应该自动切换回使用HSE?
然后由于目前做的这个设备是工业级设备,“告知”外部时钟出事确实很重要,看来是我的表达能力欠缺...其实要问的仅仅是上面那个问题,下面的纯粹为画蛇添足..
然后由于目前做的这个设备是工业级设备,“告知”外部时钟出事确实很重要,看来是我的表达能力欠缺...其实要问的仅仅是上面那个问题,下面的纯粹为画蛇添足..
我要问了设计人员之后才能回答5楼的问题
如果你也认为“告知”外部时钟出事确实很重要,那么这个问题的答案就不重要了,你认为如何?
...
期待早日知道答案...后面那个问题是不重要了(另外没这功能才头痛呢,岂不是要专门设置个任务一直检测外部时钟的运行状况- -..........)
不可能通过软件方法检测外部时钟的运行状况
这是因为外部时钟失效时,CPU根本无法运行,如何还能执行什么任务呢?
STM32设置的这个时钟安全系统(CSS)是不能通过任何软件或外部电路实现的。
STM32设置的这个时钟安全系统(CSS)是不能通过任何软件或外部电路实现的。
对一般MCU而言是这样没错
但我所谓的“检测”是建立在STM32能自动从外部时钟故障时“切换”到内部时而言的,再次引用“时钟故障将导致系统时钟【自动】切换到HSI振荡器,同时外部HSE振荡器被关闭。”
本人所指“专门设置个任务一直检测外部时钟的运行状况”即定时检测MCU时钟频率的小任务而已。
题外话:STM32的抗干扰能力果然强悍,电源线上用±4KV、5K重复率、1MHz的脉冲群随便打都没死机现象,除非短接晶振脚,不然让其在“自然”情况下出事还真有一定难度..
本人所指“专门设置个任务一直检测外部时钟的运行状况”即定时检测MCU时钟频率的小任务而已。
题外话:STM32的抗干扰能力果然强悍,电源线上用±4KV、5K重复率、1MHz的脉冲群随便打都没死机现象,除非短接晶振脚,不然让其在“自然”情况下出事还真有一定难度..
0 0
- STM32的安全技术---RVD电源检测和CSS时钟切换
- STM32的时钟简介和配置方法
- 晶振,时钟PLL,CPU,APBI,TIM,电源,电路,看门狗等等stm32工作原理的通俗解释。
- S3C2440时钟和电源管理
- S3C2440时钟和电源管理
- s3c2410的时钟与电源
- stm32下的时钟
- STM32的时钟系统分析
- STM32的时钟系统分析
- STM32的时钟系统分析
- stm32的时钟系统
- STM32的时钟系统分析
- STM32时钟的整理
- STM32的时钟系统分析
- STM32的SPI时钟
- STM32时钟的理解
- STM32的时钟树
- STM32的时钟基础知识
- 第11周 项目1 函数版星号图 (2)(3)
- HDU 3842 Machine Works cdq分治 斜率优化
- 真实的开发管理经验(带团队
- USACO 1.1
- myeclipse svn安装(link安装)
- STM32的安全技术---RVD电源检测和CSS时钟切换
- android view的应用
- activity1
- typedef 的陷阱
- c语言 Const专题
- Linux下apache服务器安装,sqlite安装,apache启动,关闭,重启,编写cig程序进行测试,浏览器访问cig程序
- Beginning iOS 7 Development Exploring the iOS SDK
- Cocos2d-x 3.0 新的渲染架构
- android 的核心 ViewGroup