每一塊處理器都有復位的功能,不同處理器復位的類型可能有差異,引起復位的原因也可能有多種。
STM32的復位功能非常強大,可通過軟件、硬件和一些事件觸發(fā)系統(tǒng)復位,而且通過其復位狀態(tài)標志可分析復位原因。該部分位于STM32的RCC(Reset and Clock Control)模塊。
嵌入式專欄
1
STM32復位介紹
對于STM32來說,復位通常分為三種類型:系統(tǒng)復位、電源復位和備份域復位。本文結(jié)合STM32F4描述系統(tǒng)和電源復位的內(nèi)容。
1. 系統(tǒng)復位
除了RCC的復位標志和備份域中的寄存器外,系統(tǒng)復位會將其它全部寄存器都復位為復位值。
產(chǎn)生系統(tǒng)復位事件:
NRST 引腳低電平
窗口看門狗計數(shù)結(jié)束
獨立看門狗計數(shù)結(jié)束
軟件復位
低功耗管理復位
2. 電源復位
除備份域內(nèi)的寄存器以外,電源復位會將其它全部寄存器設置為復位值。
產(chǎn)生電源復位條件:
上電/掉電復位或欠壓復位
在退出待機模式時
注:備份域具有特定的復位,其復位僅作用于備份域本身(本文暫不講述備份域復位)。
3. 復位電路簡圖
由上圖可以看出來,NRST引腳、看門狗等各種事件最終都能引起系統(tǒng)復位。
嵌入式專欄
2
STM32 內(nèi)核和系統(tǒng)復位
上一章節(jié)站在STM32整體層面講述了產(chǎn)生復位的多種事件,本章節(jié)進一步描述STM32的內(nèi)核和系統(tǒng)復位。
STM32由內(nèi)核(如:Cortex-M4)和各種片內(nèi)外設(如UART)資源組成,其中軟件復位可指定是內(nèi)核復位還是系統(tǒng)復位。
1. 內(nèi)核復位
在Cortex-M內(nèi)核文檔中大概有這樣的描述:通過設置 NVIC 中應用程序中斷與復位控制寄存器(AIRCR)的VECTRESET 位,可只復位處理器內(nèi)核而不復位其它片上設施。
也就是說,這樣操作只復位Cortex-M內(nèi)核,不會復位UART這些片內(nèi)外設。
內(nèi)核復位函數(shù)(參考內(nèi)核代碼修改而來):
void NVIC_CoreReset(void)
2. 系統(tǒng)復位
軟件復位中的系統(tǒng)復位操作的寄存器位(SYSRESETREQ)不同,復位的對象為整個芯片(除后備區(qū)域)。
系統(tǒng)復位函數(shù):
void NVIC_SysReset(void)
嵌入式專欄
3
STM32 復位來源
為了方便軟件工程師調(diào)試和查找(復位)問題,STM32設計有個狀態(tài)寄存器保存了各種復位來源的狀態(tài)。
如下圖所示(具體請查閱參考手冊):
4
STM32 引起異常復位的原因
上面講述了引起復位的事件有多種,本章節(jié)將結(jié)合實際應用,描述常見引起復位的原因及解決辦法。
原因一:NRST引腳電平被拉低引起復位
有些特殊環(huán)境,特別是大型工廠,外界或內(nèi)部會使電源產(chǎn)生干擾信號,使STM32的NRST引腳電平被拉低,從而導致系統(tǒng)復位。
分析原因:NRST引腳電平拉低20us就會引起系統(tǒng)復位,電源上一個紋波,或者外部靜電都會引起電源被拉低20us。
解決辦法:電源濾波、使用隔離電源、添加屏蔽措施等。
原因二:欠壓引起復位
有些產(chǎn)品在設計之初沒有綜合計算負載(與STM32同電源),因負載過大,使其欠壓,從而導致復位。
分析原因:STM32除了上電和掉電復位之外,絕大部分STM32還有一個欠壓復位,當電源電壓 (VDD) 降至所選 VBOR 閾值以下時,芯片將復位。
解決辦法:選擇負載更大的電源、通過軟件配置合理的欠壓值VBOR。
原因三:數(shù)字、模擬電源地壓差引起復位
有工程師將VSS 和 VSSA之間使用一個幾歐,甚至幾十歐的電阻連接,有時候(有大電流經(jīng)過地線)就會因為電源地的壓差導致芯片(電源)復位。
分析原因:我們比較關(guān)注 VDD 和 VDDA 的關(guān)系,但忽略了 VSSA 和 VSS 壓差需要小于 50mV這一點(具體可以看數(shù)據(jù)手冊)。如果有大電流的情況,則會引起電源地存在壓差。
解決辦法:盡量使用完全連接地的方式處理,比如0歐電阻,或者隔離電源。
原因四:看門狗超時喂狗引起復位
有不少工程師設計低功耗產(chǎn)品時,使用了看門狗,但是他們往往忘記了芯片睡眠模式不能停止喂狗,從而導致看門狗復位。
分析原因:STM32進入睡眠之后,看門狗依然繼續(xù)在工作,如果不及時喂狗,芯片會產(chǎn)生看門狗復位。
解決辦法:進入睡眠之前設置更長的喂狗時間,同時不定期喚醒芯片進行喂狗。
責任編輯:彭菁
-
芯片
+關(guān)注
關(guān)注
459文章
52464瀏覽量
440155 -
STM32
+關(guān)注
關(guān)注
2293文章
11031瀏覽量
364402 -
隔離電源
+關(guān)注
關(guān)注
6文章
305瀏覽量
36683
發(fā)布評論請先 登錄
基于Cortex-M4的STM32F4的復位序列

STM32F4的復位序列對比STM32F7的復位序列
STM32F4 PWM-DAC實驗例程

STM32F4 DAC數(shù)模轉(zhuǎn)換實驗例程

STM32F4 ADC模數(shù)轉(zhuǎn)換實驗例程

【STM32】STM32F4時鐘系統(tǒng)

評論