专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
电源
STM32的安全技术---RVD电源检测和CSS时钟切换
2019-07-13 23:48
发布
生成海报
站内文章
/
电源技术
16327
0
1582
RVD电源检测STM32:
这个firmware有demo。并且我试验了,可以用。不过官网V3.5.0的demo有笔误。
EXTI_ClearITPendingBit(EXTI_Line16); //官网写的是Line17
EXTI_InitStructure.EXTI_Line = EXTI_Line16;//官网写的是Line17
CSS时钟切换:
这个21IC有帖子:
时钟安全系统的疑问
[复制链接]
此帖已结(0)
zq1987731
发表于 2009-4-5 02:40:00
|
只看该作者
|
倒序浏览
回复
|
返回版面
芯片型号:STM32F103ZET6
情况:最近闲的无聊想看看STM32的时钟安全系统是怎么回事,所以将外部晶体作为时钟,PLL后到72M,然后软件中对“时钟安全系统”没有任何的操作,仅仅写了一个LED流水灯程序,接着用导线短接晶振两脚,那么它死活都该出问题了,结果~~LED流水灯继续转(不是重新开始,而是接着之前的状态继续下去),但是速度明显变慢很多,应该是自动切换到内部RC振荡器了,放开短接的晶振脚后自动恢复到之前的速度,再短接又变慢,不短接就正常,感觉相当奇怪:
(1)我在软件中没有作任何处理,STM32是否本身就有这类机制,也就是外部时钟失效后自动切换到内部,同时外部时钟一旦恢复正常就切换回去?
(2)如果(1)成立,那么要“时钟安全系统”何用?我本来的目的就是外部时钟失效时通过它重新启动外部晶振,既然这一切是自动的,这系统的作用岂不多余?
(3)我的测试程序仅仅是点亮LED1,然后用CPU空转的方式等待,接着关闭LED1同时打开LED2……如此下去,不知道有没有我没观察到的“异常”存在,就好比以前用51时主程序中不用while(1),那么程序走完一遍后仍然会从0地址开始,“看上去”就像在无限循环,实际上相当于走完一个循环重启一次。
请看看手册上对时钟安全系统的说明
再看看你的程序中是如何处理的,尤其是NMI的处理。
zq1987731
发表于 2009-4-5 10:00:00
|
只看该作者
点评
回复
|
返回版面
疑惑的地方主要是:
图中倒数第三行,“时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。”
我个人理解:外部时钟出事了,自动切换到内部HSI,这里没多大问题,但是切换了以后从现象上来看,系统是在尝试重新启动外部时钟的,一旦启动成功就自动切换回去并且重新打开PLL,这点资料上提都没提。
那么“时钟安全系统”的存在不就仅仅是“告知”外部时钟出事,并对TIM1等等作个补救么?如果在软件上不作任何处理(即CSSI中断为关闭状态,NMI处理函数自然也是空的),系统一样可以从故障中恢复过来。并且在故障发生及自动恢复期间,时钟均由HSI提供,并不会有“死机”现象出现,而这一切是我发帖中提到的那个小实验中观察到的,同时也是疑惑的地方。
那么..以上假设是否成立呢?毕竟资料上提都没提,害怕属于非法应用..
你是否要问:当HSE恢复之后,CSS是否应该自动切换回使用HSE
首先,请你确认我的理解是否正确:你是否要问:
当HSE恢复之后,CSS是否应该自动切换回使用HSE?
这个问题确实没有在手册中提及,我要问了设计人员之后才知道。
其次,
“告知”外部时钟出事
是一个非常重要的事情,你自己做个小试验可以不去处理这个事件,但是在很多应用场合,必须要处理这个事件,即使它有可能会自动恢复。
在HSE失效时,HSI可以提供时钟,但这个时钟的主要目的不是为了维持正常的操作,HSI只能维持最低限度的运行(系统时钟频率降低),而是为了让你可以进行紧急处理。比如一个抢救病人的呼吸机,如果主时钟失效,软件必须依靠HSI做紧急处理并立刻报警,提醒值班医生,否则病人将会有生命危险。这种情况下你能够企望HSE自动恢复吗?多长时间能够自动恢复?即使它自动恢复了,在没有查明HSE失效的原因之前,你还敢再继续使用这台呼吸机吗?
回香版
首先,我的问题确实如此:当HSE恢复之后,CSS是否应该自动切换回使用HSE?
然后由于目前做的这个设备是工业级设备,“告知”外部时钟出事确实很重要,看来是我的表达能力欠缺...其实要问的仅仅是上面那个问题,下面的纯粹为画蛇添足..
香水城
发表于 2009-4-5 18:04:00
|
只看该作者
点评
回复
|
返回版面
我要问了设计人员之后才能回答5楼的问题
如果你也认为
“告知”外部时钟出事确实很重要
,那么这个问题的答案就不重要了,你认为如何?
zq1987731
发表于 2009-4-5 20:45:00
|
只看该作者
点评
回复
|
返回版面
...
期待早日知道答案...后面那个问题是不重要了(另外没这功能才头痛呢,岂不是要专门设置个任务一直检测外部时钟的运行状况- -..........)
香水城
发表于 2009-4-5 21:25:00
|
只看该作者
点评
回复
|
返回版面
不可能通过软件方法检测外部时钟的运行状况
这是因为外部时钟失效时,CPU根本无法运行,如何还能执行什么任务呢?
STM32设置的这个时钟安全系统(CSS)是不能通过任何软件或外部电路实现的。
zq1987731
发表于 2009-4-5 23:34:00
|
只看该作者
点评
回复
|
返回版面
对一般MCU而言是这样没错
但我所谓的“检测”是建立在STM32能自动从外部时钟故障时“切换”到内部时而言的,再次引用“时钟故障将导致系统时钟【自动】切换到HSI振荡器,同时外部HSE振荡器被关闭。”
本人所指“专门设置个任务一直检测外部时钟的运行状况”即定时检测MCU时钟频率的小任务而已。
题外话:STM32的抗干扰能力果然强悍,电源线上用±4KV、5K重复率、1MHz的脉冲群随便打都没死机现象,除非短接晶振脚,不然让其在“自然”情况下出事还真有一定难度..
Ta的文章
更多
>>
STM32的安全技术---RVD电源检测和CSS时钟切换
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮