DSP C674x教學(xué)實(shí)驗(yàn)箱_嵌入式教程:2-15 看門狗功能實(shí)驗(yàn)

?
實(shí)驗(yàn)?zāi)康?/h1>
本節(jié)視頻的目的是熟悉定時(shí)器的基本結(jié)構(gòu),學(xué)習(xí)看門狗定時(shí)器的功能和控制方法,并實(shí)現(xiàn)基于定時(shí)器中斷方式控制程序。
?
實(shí)驗(yàn)原理
定時(shí)器
?
???????TMS320C6748有4個(gè)定時(shí)器/計(jì)數(shù)器,均可配置為64位計(jì)數(shù)器、兩個(gè)獨(dú)立32位計(jì)數(shù)器及自動(dòng)重裝32位計(jì)數(shù)器,可以產(chǎn)生周期中斷DMA事件及外部事件。定時(shí)器/計(jì)數(shù)器還可以用于捕獲外部輸入信號(hào)邊緣并計(jì)數(shù)。此外,定時(shí)器1還可以用作64位看門狗計(jì)數(shù)器。
本實(shí)驗(yàn)使用的是定時(shí)器1。
?
定時(shí)器的功能
(1)定時(shí)
???????時(shí)鐘源一般來(lái)源于DSP內(nèi)部,當(dāng)然也可以選擇來(lái)自于外部。
(2)計(jì)數(shù)
??????可以利用它的功能來(lái)計(jì)算外部脈沖在一段時(shí)間內(nèi)到來(lái)的次數(shù),所以叫做計(jì)數(shù)器(記錄外部脈沖的次數(shù))。因?yàn)閮?nèi)部有一個(gè)計(jì)數(shù)的count,如果用作定時(shí)就是先輸入一個(gè)數(shù)字,然后在來(lái)了一個(gè)時(shí)鐘之后count自動(dòng)減一。如果用成計(jì)數(shù)就是在一個(gè)脈沖到來(lái)之后count自動(dòng)加一。
(3)看門狗
???????一些定時(shí)器設(shè)計(jì)有信號(hào)連接到內(nèi)部器件的復(fù)位,因此可用于看門狗定時(shí)器模式。
?
定時(shí)器的特性
(1)64 位自增計(jì)數(shù)器
(2)定時(shí)器模式:
64 位通用定時(shí)器模式(低32位定時(shí)器叫Timer12,高32位定時(shí)器叫Timer34)
雙 32 位非鏈?zhǔn)酵ㄓ枚〞r(shí)器模式模式
雙 32 位鏈?zhǔn)蕉〞r(shí)器模式
看門狗定時(shí)器模式
(3)2種時(shí)鐘源:
內(nèi)部時(shí)鐘
外部時(shí)鐘/事件輸入定時(shí)器的相連引腳
(4)3種工作模式:
一次工作 (定時(shí)器運(yùn)行一個(gè)周期然后停止)
持續(xù)工作 (定時(shí)器在每個(gè)周期結(jié)束自動(dòng)清零并繼續(xù)工作)
持續(xù)工作周期性重載(定時(shí)器在每個(gè)周期自動(dòng)獲取重載寄存器的值并繼續(xù)工作)
(5)產(chǎn)生 CPU 中斷
(6)產(chǎn)生輸出事件讓設(shè)備復(fù)位(僅看門狗模式)
(7)產(chǎn)生 DMA 同步事件
(8)產(chǎn)生輸出事件到定時(shí)器輸出引腳(如果引腳可用)
(9)外部事件捕獲相連的定時(shí)器引腳(如果引腳可用)
?
看門狗
???????看門狗,又叫watchdog timer,是一個(gè)定時(shí)器電路,由于芯片的工作常常會(huì)受到來(lái)自外界電磁場(chǎng)的干擾,造成各種寄存器和內(nèi)存的數(shù)據(jù)混亂,會(huì)導(dǎo)致程序指針錯(cuò)誤、不在程序區(qū)、取出錯(cuò)誤的程序指令等,都會(huì)陷入死循環(huán),程序的正常運(yùn)行被打斷,由DSP控制的系統(tǒng)無(wú)法繼續(xù)正常工作,會(huì)造成整個(gè)系統(tǒng)的陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果。
看門狗就是定期的查看芯片內(nèi)部的情況,一旦發(fā)生錯(cuò)誤就向芯片發(fā)出重啟信號(hào)的電路??撮T狗命令在程序的中斷中擁有最高的優(yōu)先級(jí)。
工作原理:在系統(tǒng)運(yùn)行以后也就啟動(dòng)了看門狗的計(jì)數(shù)器,看門狗就開(kāi)始自動(dòng)計(jì)數(shù),如果到了一定的時(shí)間還不去清看門狗,那么看門狗計(jì)數(shù)器就會(huì)溢出從而引起看門狗中斷,造成系統(tǒng)復(fù)位,所以在使用看門狗時(shí)要注意清看門狗。
?

?
定時(shí)器的時(shí)鐘源
???????時(shí)鐘信號(hào)可分為內(nèi)部時(shí)鐘和外部時(shí)鐘輸入,定時(shí)器0和定時(shí)器1的時(shí)鐘為PLL0_AUXCK(旁路時(shí)鐘,24MHz),定時(shí)器2和定時(shí)器3默認(rèn)狀態(tài)下使用的時(shí)鐘為PLL0_SYSCLK2(為系統(tǒng)頻率的二分之一,228MHz),可通過(guò)定時(shí)器配置將其時(shí)鐘設(shè)置為PLL1_SYSCLK2(可以避免因CPU主頻變化對(duì)設(shè)備產(chǎn)生的不利影響)。
?

定時(shí)器時(shí)鐘源由定時(shí)器控制寄存器 (TCR) 時(shí)鐘源 (CLKSRC12) 位選擇。復(fù)位后,時(shí)鐘源為內(nèi)部時(shí)鐘。兩個(gè)時(shí)鐘源都可以驅(qū)動(dòng)定時(shí)器時(shí)鐘:
? 設(shè)置 CLKSRC12 = 0 為內(nèi)部時(shí)鐘。
? 設(shè)置 CLKSRC12 = 1 為輸入引腳 TM64P_IN12 外部時(shí)鐘。
?
實(shí)驗(yàn)使用的是定時(shí)器1,定時(shí)器1時(shí)鐘來(lái)源于PLL旁路時(shí)鐘, 即晶體振蕩器時(shí)鐘24MHz。
所以看門狗時(shí)間間隔:T=計(jì)數(shù)周期*(1/24MHz) =0x07270E00/24000000s=5s
0x07270E00 是程序中設(shè)定的計(jì)數(shù)周期。在main.c的宏定義中設(shè)定。
?

程序流程設(shè)計(jì)中首先要初始化串口終端,接著進(jìn)行定時(shí)器初始化,然后在串口終端輸出打印信息,在主循環(huán)中等待等待輸入字符,并復(fù)位看門狗定時(shí)器。
?
?

?
定時(shí)器配置源碼
配置定時(shí)器的函數(shù)源碼和函數(shù)使用說(shuō)明可以查看timer.c。其中,第一個(gè)參數(shù)是定時(shí)器模塊寄存器的基地址,第二個(gè)參數(shù)是用于配置定時(shí)器模塊。
?

?
周期配置源碼
配置定時(shí)器周期的函數(shù)源碼和函數(shù)使用說(shuō)明可以查看timer.c。其中,第一個(gè)參數(shù)是定時(shí)器模塊寄存器的基地址,第二個(gè)參數(shù)是要設(shè)置周期的定時(shí)器,第三個(gè)參數(shù)是設(shè)置的周期大小。
?

?
看門狗定時(shí)器使能源碼
配置使能看門狗定時(shí)器的函數(shù)源碼和函數(shù)使用說(shuō)明可以查看timer.c,參數(shù)是定時(shí)器模塊寄存器的基地址。
?

?
定時(shí)器使能源碼
配置復(fù)位看門狗定時(shí)器的函數(shù)源碼和函數(shù)使用說(shuō)明可以查看timer.c,參數(shù)是定時(shí)器模塊寄存器的基地址。
?

?
操作現(xiàn)象
實(shí)驗(yàn)設(shè)備
本實(shí)驗(yàn)使用的硬件接口為UART2 RS232接口,所需硬件為實(shí)驗(yàn)板、仿真器、RS232 交叉串口母母線、USB轉(zhuǎn)RS232串口線和電源。
?
?

硬件連接
(1)使用 RS232 交叉串口母母線和 USB 轉(zhuǎn) RS232 串口線連接實(shí)驗(yàn)板的UART2串口和電腦的 USB
口。
(2)連接仿真器和電腦的USB接口,
(3)將撥碼開(kāi)關(guān)撥到DEBUG模式01111,連接實(shí)驗(yàn)箱電源,撥動(dòng)電源開(kāi)關(guān)上電。
?

?
軟件操作
設(shè)置串口調(diào)試工具:
(1)先在設(shè)備管理器查看串口的端口號(hào);
(2)再設(shè)置串口調(diào)試工具,波特率設(shè)置為115200。
?

CCS操作:
導(dǎo)入工程,選擇Demo文件夾下的對(duì)應(yīng)工程
編譯工程
將CCS連接實(shí)驗(yàn)箱并加載程序
點(diǎn)擊運(yùn)行程序,串口調(diào)試終端會(huì)打印提示信息,若在 5s 內(nèi)無(wú)任何信息輸入將復(fù)位系統(tǒng)。
由于在仿真加載模式下,復(fù)位后程序不會(huì)自動(dòng)運(yùn)行,故只會(huì)打印一次信息。若將程序燒寫到NANDFLASH后,并在NANDFLASH檔位啟動(dòng)系統(tǒng),系統(tǒng)復(fù)位后程序會(huì)再次運(yùn)行,將會(huì)持續(xù)打印提示信息。
?

?
?
?
?