打印

时钟安全系统的疑问

[复制链接]
5409|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zq1987731|  楼主 | 2009-4-5 02:40 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
芯片型号:STM32F103ZET6
情况:最近闲的无聊想看看STM32的时钟安全系统是怎么回事,所以将外部晶体作为时钟,PLL后到72M,然后软件中对“时钟安全系统”没有任何的操作,仅仅写了一个LED流水灯程序,接着用导线短接晶振两脚,那么它死活都该出问题了,结果~~LED流水灯继续转(不是重新开始,而是接着之前的状态继续下去),但是速度明显变慢很多,应该是自动切换到内部RC振荡器了,放开短接的晶振脚后自动恢复到之前的速度,再短接又变慢,不短接就正常,感觉相当奇怪:
(1)我在软件中没有作任何处理,STM32是否本身就有这类机制,也就是外部时钟失效后自动切换到内部,同时外部时钟一旦恢复正常就切换回去?
(2)如果(1)成立,那么要“时钟安全系统”何用?我本来的目的就是外部时钟失效时通过它重新启动外部晶振,既然这一切是自动的,这系统的作用岂不多余?
(3)我的测试程序仅仅是点亮LED1,然后用CPU空转的方式等待,接着关闭LED1同时打开LED2……如此下去,不知道有没有我没观察到的“异常”存在,就好比以前用51时主程序中不用while(1),那么程序走完一遍后仍然会从0地址开始,“看上去”就像在无限循环,实际上相当于走完一个循环重启一次。
沙发
zq1987731|  楼主 | 2009-4-5 10:00 | 显示全部楼层

疑惑的地方主要是:

图中倒数第三行,“时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。”
    我个人理解:外部时钟出事了,自动切换到内部HSI,这里没多大问题,但是切换了以后从现象上来看,系统是在尝试重新启动外部时钟的,一旦启动成功就自动切换回去并且重新打开PLL,这点资料上提都没提。
    那么“时钟安全系统”的存在不就仅仅是“告知”外部时钟出事,并对TIM1等等作个补救么?如果在软件上不作任何处理(即CSSI中断为关闭状态,NMI处理函数自然也是空的),系统一样可以从故障中恢复过来。并且在故障发生及自动恢复期间,时钟均由HSI提供,并不会有“死机”现象出现,而这一切是我发帖中提到的那个小实验中观察到的,同时也是疑惑的地方。
    那么..以上假设是否成立呢?毕竟资料上提都没提,害怕属于非法应用..

使用特权

评论回复
板凳
zq1987731|  楼主 | 2009-4-5 16:56 | 显示全部楼层

回香版

首先,我的问题确实如此:当HSE恢复之后,CSS是否应该自动切换回使用HSE?

然后由于目前做的这个设备是工业级设备,“告知”外部时钟出事确实很重要,看来是我的表达能力欠缺...其实要问的仅仅是上面那个问题,下面的纯粹为画蛇添足..

使用特权

评论回复
地板
zq1987731|  楼主 | 2009-4-5 20:45 | 显示全部楼层

...

期待早日知道答案...后面那个问题是不重要了(另外没这功能才头痛呢,岂不是要专门设置个任务一直检测外部时钟的运行状况- -..........)

使用特权

评论回复
5
zq1987731|  楼主 | 2009-4-5 23:34 | 显示全部楼层

对一般MCU而言是这样没错

    但我所谓的“检测”是建立在STM32能自动从外部时钟故障时“切换”到内部时而言的,再次引用“时钟故障将导致系统时钟【自动】切换到HSI振荡器,同时外部HSE振荡器被关闭。”
    本人所指“专门设置个任务一直检测外部时钟的运行状况”即定时检测MCU时钟频率的小任务而已。
    题外话:STM32的抗干扰能力果然强悍,电源线上用±4KV、5K重复率、1MHz的脉冲群随便打都没死机现象,除非短接晶振脚,不然让其在“自然”情况下出事还真有一定难度..

使用特权

评论回复
6
zq1987731|  楼主 | 2009-4-7 20:08 | 显示全部楼层

...

才知道ST的库是有相关例程的...之前还以为就一份pdf说明书呢,现在总算弄明白了,谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

759

帖子

3

粉丝