簡介:
本章我們來學習一下MSP430單片機的系統(tǒng)復位與初始化的過程。
這節(jié)課的主要內(nèi)容有:
·系統(tǒng)復位POR與PUC
·POR產(chǎn)生過程
·復位后,系統(tǒng)初始狀態(tài)
·程序中如何復位
·硬件中如何設(shè)計
1,系統(tǒng)復位 POR與PUC
1.1 MSP430單片機復位邏輯圖
可以看到,它在復位時會產(chǎn)生兩個信號,一個是POR信號,一個是PUC信號。
POR信號叫做power-on reset。PUC信號叫做power-up clear。翻譯成中文就是:POR為上電復位信號,PUC為上電清除信號。這兩個信號都可以導致MSP430單片機發(fā)生復位中斷。但是他們之間的級別是不一樣的。
1.2 POR信號來源
POR信號的復位級別更高一些,POR信號主要來自于硬件:
※芯片上電;
※RST/NMI設(shè)置成復位模式,并在RST/NMI引腳上出現(xiàn)低電平信號;
※超級電壓監(jiān)視電路發(fā)現(xiàn)電壓不穩(wěn)。
1.3 PUC信號來源
POR信號的產(chǎn)生總會產(chǎn)生PUC信號,但PUC信號的發(fā)生不一定會產(chǎn)生POR信號。PUC信號是上電清除信號,產(chǎn)生PUC信號的情況有:
※發(fā)生POR信號;
※處于看門狗模式下,看門狗定時時間到;
※看門狗定時器寫入錯誤的安全鍵值;
※FLASH存儲器寫入錯誤的安全鍵值;
※CPU從外設(shè)地址范圍0H-01FF取數(shù)據(jù)。
2 POR產(chǎn)生過程(BOR)
2.1 POR信號產(chǎn)生過程圖
我們現(xiàn)在看到的這張圖是POR信號的產(chǎn)生過程圖。
如果這里是一個供電電壓的話,在上電初期,剛開始供電的時候,電壓是很不穩(wěn)的,電壓就有可能發(fā)生來回的跳變,電源還會產(chǎn)生很多的毛刺,這時候就需要POR信號來時刻監(jiān)視電源電壓,一旦電源電壓低于可編程的有效閾值的時候,就應該產(chǎn)生一個上電復位,保證單片機從一個確定的起始位置開始運行程序。
如果在單片機上電的時候,沒有一個監(jiān)視電壓的波動情況的過程,那么如果單片機在這個位置開始從Flash讀取程序代碼,開始執(zhí)行的話,跑程序時突然來了一個電壓的下降(比如這個位置),這時候如果沒有一個有效的復位信號,那么可能導致單片機的內(nèi)核陷入一個無效的狀態(tài),或者說讓它的內(nèi)部發(fā)生自鎖,進入一個不確定的狀態(tài),這時候系統(tǒng)就變得很不穩(wěn)定了,所以需要在上電初期產(chǎn)生一個有效的復位信號,保證系統(tǒng)是在一個確定的位置,按照確定的方式開始執(zhí)行的。
2.2 掉電產(chǎn)生POR
我們來看一下這張圖,掉電復位電路BOR會在芯片上電或掉電的過程中監(jiān)測電源電壓,并產(chǎn)生POR信號。芯片上電過程中,當電源電壓VCC超過VCC(start)后,BOR電路產(chǎn)生POR信號,直到Vcc超過V(B_IT+),然后再經(jīng)過延時t(BOR)后,POR信號撤銷。如果VCC電壓上升速率較慢,t(BOR)會相應延長。芯片掉電過程中,VCC必須降到低于V(B_IT-)之后,BOR電路才產(chǎn)生POR信號。這是個遲滯比較的功能,V(B_IT+)和V(B_IT-)差值即為遲滯電壓Vhys(B_IT-),通過遲滯比較避免錯誤產(chǎn)生POR信號。VCC(start),Vhys(B_IT-),V(B_IT-)和t(BOR)的值,就如這張表所示。
3 復位后,系統(tǒng)初始化狀態(tài)
3.1 系統(tǒng)復位后的系統(tǒng)狀態(tài)
系統(tǒng)復位POR后的單片機系統(tǒng)狀態(tài)為:
※RST/NMI引腳為復位功能;
※I/O方向寄存器復位,即I/O引腳為輸入狀態(tài);
※MSP430內(nèi)部的功能模塊初始化,寄存器為默認值;
※SR(狀態(tài)寄存器)復位;
※看門狗激活
※PC(程序計數(shù)器)載入0xFFFE處地址并開始執(zhí)行。
3.2 上電復位后的硬件初始化
發(fā)生復位后,程序查詢各復位源的標志。程序能確定復位源,以執(zhí)行適當?shù)膹臀徊僮鳌?p>
MSP430在發(fā)生VCC上電后開始硬件初始化,即:
※全部I/O引腳切換成輸入狀態(tài);
※I/O標志復位,細節(jié)見個外圍模塊的說明。
※將復位向量0FFFEh中包含的地址加載入PC中。CPU從上電清除(PUC)向量中包含的地址開始運行。
※狀態(tài)寄存器(SR)復位。
※用戶程序必須對除PC與SR外的全部寄存器進行初始化(如SP、RAM等)。
※決定工作頻率的系統(tǒng)時鐘從DCO 最低頻率開始工作。啟動晶振時鐘后,頻率調(diào)整到目標值。
3.3 RST /NMI復位功能復位后執(zhí)行順序
RST/NMI引腳在加載電壓Vcc后設(shè)置成復位功能。引腳的復位功能一直保持到不選此功能為止。處于復位功能狀態(tài)下,在RST/NMI引腳上拉低至GND,然后釋放,則MSP430按以下順序開始工作。
※將在復位向量0FFFEh中包含的地址加載入PC。
※在釋放RST/NMI引腳后,CPU從復位向量中所含的地址開始運行。
※狀態(tài)寄存器SR復位。
※除PC與SR外,用戶程序?qū)θ考拇嫫鬟M行初始化(如SP、RAM等)。
※對外圍模塊中的寄存器進行處理。
※決定工作頻率的系統(tǒng)時鐘從DCO的最低頻率開始工作。啟動晶振時鐘后,頻率調(diào)整到目標值。
4 程序中如何復位
4.1軟件初始化
在系統(tǒng)復位以后,用戶就要進行軟件初始化,用戶軟件必須根據(jù)應用的需求對MSP430進行初始化,它包括以下幾個部分:
1、初始化SP,通常是RAM的頂部,也就是初始化堆棧指針,讓它指向RAM的頂端。MSP430的RAM的堆棧是向下生長的。也就是最開始的時候堆棧指針是指向一個搞地址,然后隨著用戶不斷的壓棧,往里面存入數(shù)據(jù)的時候,SP的地址是往下減小的。
2、初始化看門狗定時器,也就是講看門狗放入到一個根據(jù)系統(tǒng)需要的一個確定的狀態(tài),是使用它還是關(guān)閉它。即使使用看門狗的時候,看門狗定時的時間間隔是可以用戶編程的。
3、配置外圍模塊,也就是配置一些外設(shè)資源。
4.2程序初始化
我們來看主函數(shù),首先我們看到的是關(guān)閉看門狗程序,在這里,我需要說明一下,在MSP430單片機中,看門狗默認是開的,所以在初始化時我們需要關(guān)閉看門狗,當我們需要看門狗的時候再打開看門狗定時器。
第2行代碼顯示的是時鐘(系統(tǒng))初始化程序,其他的外圍模塊都是沿著時鐘這個核心來執(zhí)行的。所以我們有必要在開始的進行時鐘初始化,具體的時鐘初始化過程,我們會在后面的振蕩器與系統(tǒng)時鐘這一課詳細講解。
下面一行我們看到的是端口的初始化程序。在這里說下,給芯片上電時,我們大家都知道,芯片內(nèi)部是有一個復位的,復位后,各個端口有一個固定的狀態(tài),但是在端口初始化的時候,我們可以根據(jù)我們的需要來設(shè)定端口的初始化。
然后,就是我們的外設(shè)資源的初始化了,我們在我們的系統(tǒng)中,需要用到什么外設(shè)資源,那么我們就需要對什么進行初始化,當然,我們也可以將時鐘初始化改成系統(tǒng)初始化,然后將我們需要的外設(shè)資源初始化,放到里面,一起進行初始化。這個方法,在我們編寫大的軟件時,進行模塊化編程的時候很受用。
到這里,我們的軟件初始化就完成了。
5 硬件中如何設(shè)計
5.1 復位電路的設(shè)計
復位電路是單片機系統(tǒng)中不可缺少的部分,其好壞影響整個單片機應用系統(tǒng)的可靠性。同時,復位電路非常容易受到外部噪聲的干擾。因此,復位電路的設(shè)計首先要保證整個應用系統(tǒng)的可靠性,其次是具有抗干擾能力。
復位電路的基本功能是:系統(tǒng)上電時提供復位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復位信號。為可靠起見,電源穩(wěn)定后,還要經(jīng)一定的延時才撤銷復位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復位。
圖中的電路圖,就是我們暢學電子MSP430核心板的復位電路,該電路圖可靠性高,抗干擾能力強,具有非常廣泛的應用。
5.2 掉電產(chǎn)生POR
為提高系統(tǒng)設(shè)計的可靠性,也可以采用專用集成電路提供復位。這張圖便是采用專用集成電路的原理圖。
這種集成電路一般除了能夠提供上電復位信號,還可以提供按鍵手動復位和定時自動復位信號。由于MSP430系列單片機都有片內(nèi)看門狗定時器能夠?qū)崿F(xiàn)看門狗功能,因此MSP430系列單片機只需要提供上電復位和按鍵手動復位即可。
上一篇:MSP430結(jié)合PWM技術(shù)實現(xiàn)LED氣氛燈光照明
下一篇:MSP430匯編指令自學筆記
推薦閱讀
史海拾趣
設(shè)計資源 培訓 開發(fā)板 精華推薦
- RVB2601 開發(fā)板快速上手手冊
- 【CN0141】利用DC-DC調(diào)節(jié)器ADP2105為800 MSPS TxDAC數(shù)模轉(zhuǎn)換器AD9788供電
- MEGA32A4U TCD0定時器問題
- ActiveSync 4.5安裝到一半,提示我說有無法運行的DLL,請和供應商聯(lián)系,請問如何解決
- 模型化開發(fā)過程中要基本掌握的Matlab/Simulink的功能
- 正確選擇微波射頻測試電纜
- 求助關(guān)于步進電機的控制問題。(轉(zhuǎn)一下停一下)
- 幫忙設(shè)計一下串口通信程序
- MediaPlayer全屏播放時 如何讓我的應用程序置頂? 搜遍了以前的帖子沒發(fā)現(xiàn)解決辦法