F2812的時鐘和控制系統(tǒng)_第1頁
F2812的時鐘和控制系統(tǒng)_第2頁
F2812的時鐘和控制系統(tǒng)_第3頁
F2812的時鐘和控制系統(tǒng)_第4頁
F2812的時鐘和控制系統(tǒng)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

F2812的時鐘和控制系統(tǒng) 眾所周知,支撐我們身體四肢能夠靈活運動的能量來源于心臟,正是心臟不停的有規(guī)律的跳動給身體的各個機能供血,我們才能去做任意我們想做的事情。如果我們的身體過度疲勞,或者感染了細菌病毒而生病了,這個時候就會有醫(yī)生來給我們檢查身體,并且進行治療。其實DSP也一樣,需要一個類似于心臟的模塊來提供其正常運行的動力和節(jié)奏。在這一章里面,我們一起來學習F2812的“心臟”F2812的振蕩器、鎖相環(huán)PLL和時鐘機制。除此之外還要學習給DSP做“身體檢查”,以維持其正常工作的看門狗模塊。1、振蕩器OSC(Oscillator)和鎖相環(huán)PLL(Phase Locked Logic) 為了能夠讓F2812能夠按部就班的執(zhí)行相應(yīng)的代碼,實現(xiàn)相應(yīng)的功能,他需要不斷的規(guī)律的時鐘脈沖,而這一功能就由F2812內(nèi)部的振蕩器OSC和基于PLL的時鐘模塊來實現(xiàn)。在這里簡單的介紹一下究竟振蕩器OSC和鎖相環(huán)PLL是什么:振蕩器OSC: 一種能量轉(zhuǎn)換裝置,將直流電能轉(zhuǎn)換為具有一定頻率的交流電能。鎖相環(huán)PLL: 鎖相環(huán)也叫相同步邏輯,用途是在收、發(fā)通信雙方建立載波同步或位同步。因為它的工作過程是一個自動頻率(相位)調(diào)整的閉合環(huán)路,所以叫環(huán)。讓我們來看一下整體的圖:圖1 2812芯片內(nèi)的OSC和PLL模塊 如上圖所示,F(xiàn)2812上有基于PLL的時鐘模塊,為器件及各種外設(shè)提供時鐘信號。鎖相環(huán)中有4位倍頻設(shè)置位,以此來提供各種速度的時鐘信號?;赑LL的時鐘模塊可以采用兩種操作模式:(1)內(nèi)部振蕩器:在PLL未被禁止的情況下,使用外部晶振給2812提供時鐘信號,則必須使用X1/XCLKIN引腳和X2引腳,在這兩引腳之間連接一個石英晶體,即外部晶振。(2)外部時鐘源:在PLL被禁止的情況下,旁路片內(nèi)振蕩器,由外部時鐘源提供時鐘信號,這時候講外部振蕩器的信號直接輸入到X1/XCLKIN引腳上,此時X2引腳不使用。 外部引腳可以選擇系統(tǒng)的時鐘源。當為低電平時,系統(tǒng)直接采用時鐘或晶振直接作為系統(tǒng)時鐘;當為高電平時,外部時鐘經(jīng)過PLL倍頻后,為系統(tǒng)提供時鐘。系統(tǒng)可以通過鎖相環(huán)控制寄存器來選擇鎖相環(huán)的工作模式和倍頻的系數(shù)。下面的表格列出了各種PLL的配置模式下,時鐘輸入信號XCLKIN和時鐘模塊輸出信號,即送至CPU的信號CLKIN之間的關(guān)系:PLL模塊功能描述CLKINPLL被禁止上電復(fù)位時如果引腳是低電平,則PLL完全被禁止。此時,輸入CPU的時鐘是由外部振蕩器直接通過X1/XCLKIN引腳輸入的信號。XCLKINPLL旁路如果PLL未處于不使能的狀態(tài),上電默認的PLL配置(PLLCR的值為0)。PLL自身被旁路,從X1/XCLKIN引腳輸入的時鐘信號先除以2,然后再送去CPU。XCLKIN/2PLL使能通過給PLLCR寄存器寫一個不為0的值來實現(xiàn)PLL的使能,時鐘信號需要進入PLL模塊進行n倍頻,然后再除以2,最后送至CPU。(XCLKIN*n)/2 鎖相環(huán)PLL中有鎖相環(huán)控制寄存器PLLCR,作用是用來選擇鎖相環(huán)的工作模式和倍頻的系數(shù)。上面提到過鎖相環(huán)中有4位倍頻設(shè)置位DIV,即為03位,往里面寫入00001010用來確定倍頻的系數(shù),其他為保留。鎖相環(huán)控制寄存器PLLCR如下:15 4 3 0保留DIV 在PLL模式中,平常使用的是PLL使能模式,從圖1可以看到,通常采用30M的晶振來給2812提供時基。當PLLCR的DIV位被置為最大值1010的時候,CPU的時鐘將達到150MHz,是2812所能支持的最大時鐘頻率,這也是為什么我們會選用30M晶振的原因。時鐘頻率具體的計算如下所示:晶振為30M,PLLCR的DIV位被置為1010時的時鐘頻率CLKIN=(OSCLKIN*10)/2=(30M*10)/2=150MHz2、2812芯片中各種時鐘信號的產(chǎn)生情況 2812芯片內(nèi)各種時鐘信號的產(chǎn)生情況如圖2所示。CLKIN是經(jīng)過PLL模塊后送往CPU的時鐘信號,進過CPU分發(fā),作為SYSCLKOUT送至各個外設(shè)。因此,SYSCLKOUT=CLKIN。圖2 2812芯片內(nèi)各種時鐘信號的產(chǎn)生情況 我們在使用2812開發(fā)的時候,通常會用到一些外設(shè),例如SCI,EV,AD等,要使得這些外設(shè)工作,首先的就是向其提供時鐘信號。因此,我們再系統(tǒng)初始化的時候,就需要對使用到的各個外設(shè)的時鐘進行使能,在這里和時鐘使能相關(guān)的寄存器是外設(shè)時鐘控制寄存器PCLKCR。PCLKCR控制各種時鐘的工作狀態(tài),使能或禁止相關(guān)外設(shè)時鐘,而PCLKCR各位的分配如下所示:15 14 13 12 11 10 9 保留ECANENCLK保留MCBSPENCLKSCIBENCLKSCIAENCLK保留 8 7 4 3 2 1 0SPIENCLK保留ADCENCLK保留EVBENCLKEVAENCLK 對PCLKCR中各種外設(shè)時鐘有了基本的了解后,那么究竟是如何對項目中所需要的各個外設(shè)的時鐘進行使能的呢?假設(shè)要做的項目中用到了EVA、SCIB、SPI、AD這4個外設(shè),那么就需要按照下面的程序?qū)@4個外設(shè)進行時鐘的使能。使能外設(shè)時鐘SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;SysCtrlRegs.PCLKCR.bit.ADCENCLK=1; 從圖2中也能看到,SYSCLKOUT信號經(jīng)過低速外設(shè)時鐘預(yù)定標寄存器LOSPCP(取值范圍07,即000111)變成了LSPCLK,提供給低速外設(shè)SCIA、SCIB、SPI、McBSP;SYSCLKOUT信號經(jīng)過高速外設(shè)時鐘預(yù)定標寄存器HISPCP(取值范圍07,即000111)變成了HSPCLK,提供給高速外設(shè)EVA、EVB、ADC。他們各位的分配如下:高速外設(shè)時鐘設(shè)置寄存器HISPCP15 3 2 0保留HSPCLK低速外設(shè)時鐘設(shè)置寄存器LOSPCP15 3 2 0保留LSPCLK 在各個外設(shè)實際使用時鐘的時候,LSPCLK或者HSPCLK需要經(jīng)過各個外設(shè)自己的時鐘預(yù)定標,如果外設(shè)自己的時鐘預(yù)定標位的值為0的話,則外設(shè)實際使用的時鐘就是LSPCLK或者HSPCLK。LSPCLK計算公式LOSPCP=0,LSPCLK=SYSCLKOUTLOSPCP=17,LSPCLK=SYSCLKOUT/(2*LOSPCP)HSPCLK計算公式HOSPCP=0,HSPCLK=SYSCLKOUTHOSPCP=17,HSPCLK=SYSCLKOUT/(2*HISPCP) 通過上面的2個計算公式,可能會產(chǎn)生疑問,LSPCLK的值有沒有可能會比HSPCLK的值大?也就是說提供給低速外設(shè)的時鐘頻率反而比提供給高速外設(shè)的時鐘頻率來的快?從上面的LSPCLK和HSPCLK的計算公式可以看出,這兩個時鐘信號的頻率是獨立無關(guān)的,各自分別取決于LOSPCP或者HISPCP的值,和其他因素沒有關(guān)系。當我們給LOSPCP寄存器所賦的值小于給HISPCP寄存器所賦的值時,LOSPCP的值就會大于HSPCP的值。雖然這完全取決于我們對于寄存器的初始化,但是一般情況下,也不會讓這樣的情況出現(xiàn)的,因為低速外設(shè)所需要的時鐘畢竟要比高速外設(shè)所需要的時鐘慢些,否則就沒有必要區(qū)分高低速了,當然這些定義也都是相對而言的。3、看門狗(Watch Dog) 在學習DSP看門狗之前,先讓我們來了解一下MCU(Microprocessor Control Unit 微處理器單元)中看門狗的原理,以便我們能更好的理解DSP中看門狗,因為兩者之間的原理是類似的。MCU中看門狗的原理 在有MCU構(gòu)成的微型計算機系統(tǒng)中,由于單片機的工作常常會受到來自外界電磁場的干擾,造成程序的跑飛,而陷入死循環(huán),程序的正常運行被打斷,由單片機控制的系統(tǒng)無法繼續(xù)工作,會造成整個系統(tǒng)陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對單片機運行狀態(tài)進行實時監(jiān)測的考慮,便產(chǎn)生了一種專門用于監(jiān)測單片機程序運行狀態(tài)的芯片,俗稱“看門狗”。 看門狗電路的應(yīng)用,使單片機可以在無人狀態(tài)下實現(xiàn)連續(xù)工作,其工作原理是:看門狗芯片和單片機的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在單片機其他控制語句中間的,一旦單片機由于干擾造成程序跑飛后而陷入某一程序段進入死循環(huán)狀態(tài)時,寫看門狗引腳的程序便不能被執(zhí)行,這個時候,看門狗電路就會由于得不到單片機送來的信號,便在他和單片機復(fù)位引腳相連的引腳上送出一個復(fù)位信號,使單片機發(fā)生復(fù)位,即程序從程序存儲器的起始位置開始執(zhí)行,這樣便實現(xiàn)了單片機的自動復(fù)位。 看門狗,又叫watchdog timer,是一個定時器電路,一般有一個輸入,叫喂狗(kicking the dog or service the dog),一個輸出到MCU的RST端,MCU正常工作的時候,每隔一段時間輸出一個信號到喂狗端,給WDT清零,如果超過規(guī)定的時間不喂狗(一般在程序跑飛時),WDT定時超過,就會給出一個復(fù)位信號到MCU,使MCU復(fù)位。防止MCU死機。看門狗的作用就是防止程序發(fā)生死循環(huán),或者說程序跑飛。圖3 看門狗功能框圖 2812中的看門狗原理和上面講訴的MCU的看門狗原理是類似的,其作用是為DSP的運行情況進行“把脈”,一旦發(fā)現(xiàn)程序跑飛或者狀態(tài)不正常便立即使DSP復(fù)位。 為了實現(xiàn)看門狗的各項功能,需要準備設(shè)置其內(nèi)部的3個功能寄存器,而這3個功能寄存器分別是看門狗計數(shù)寄存器WDCNTR、看門狗復(fù)位寄存器WDKEY、看門狗控制寄存器WDCR??撮T狗計數(shù)寄存器WDCNTR15 8 7 0保留WDCNTR 在這里可以看到計數(shù)器一共有8位,當這個8位的計數(shù)器計數(shù)達到最大值256時,看門狗模塊就會產(chǎn)生一個輸出脈沖,脈沖寬度為512個振蕩器時鐘周期??赡苡幸蓡枮槭裁匆a(chǎn)生一個512倍振蕩器時鐘周期的寬脈沖信號?因為需要是內(nèi)核復(fù)位的信號和要喚醒處理器的中斷信號的有效時間遠大于振蕩器的時鐘周期。 為了防止看門狗加法計數(shù)器WDCNTR溢出,不想產(chǎn)生脈沖信號,這里我們通常可以采用兩種方法:(1)禁止看門狗,也即為屏蔽計數(shù)器,使得計數(shù)器WDCNTR無效。則下面我們介紹另外一個寄存器??撮T狗控制寄存器WDCR15 8 7 6 5 3 2 0保留WDFLAGWDDISWDCHKWDPS 禁止看門狗,則只需要在WDCR中的WDDIS位置1即可,相反置0為使能看門狗。跟著我們介紹其他功能位的作用:看門狗復(fù)位狀態(tài)標識位WDFLAG,如果置為1,則表示看門狗復(fù)位滿足了復(fù)位條件;如果置為0,則表示外部器件或上電復(fù)位條件。WDCHK必須置為101,因為寫其他任何值都會引起器件內(nèi)核的復(fù)位,不過這一條件的實現(xiàn)要在看門狗已經(jīng)使能的情況下。最后看門狗預(yù)定標器WDPS,這里跟上面所學到的高低速預(yù)定標器是相同的道理,作用是配置看門狗計數(shù)時鐘WDCLK的。WDCLK計算公式OSCCLK振蕩時鐘信號WDPS=0,WDCLK=OSCCLK/512/1WDPS=17,WDCLK=OSCCLK/512/(2)定期進行“喂狗”,即通過軟件周期性地向看門狗復(fù)位寄存器中WDKEY位寫進“0x55+0xAA”,緊跟著0x55寫入0xAA能夠清除WDCNTR,寫任何其他的值都會使看門狗立即復(fù)位??撮T狗復(fù)位寄存器WDKEY15 8 7 0保留WDKEY4、如何寫系統(tǒng)初始化函數(shù) 要使得2812能夠工作,我們在上電開始的時候就需要對2812進行系統(tǒng)初始化,以提供其正常運行的基本條件,例如分配時鐘信號。 系統(tǒng)初始化函數(shù)InitSysCtrl一般在工程的DSP28_SysCtrl.c文件中。系統(tǒng)初始化函數(shù)分析Void InitSysCtrl(void) Uint16 i; /定義16位int類型的變量i EALLOW; /允許訪問受EALLOW保護的寄存器 /On TMX samples , to get the best performance of on chip RAM blocks M0/M1/L0/L1/H0 /internal control registers bit have to be enabled . The bits are in Device emulation registers . /在TMX采樣時,為了能夠使得片內(nèi)RAM模塊M0/M1/L0/L1/H0能夠獲得最好的性能,/控制寄存器的位必須使能,這些位在設(shè)備硬件仿真寄存器內(nèi)。 DevEmuRegs.M0RAMDFT = 0x0300; /固定格式 DevEmuRegs.M1RAMDFT = 0x0300; DevEmuRegs.L0RAMDFT = 0x0300; DevEmuRegs.L1RAMDFT = 0x0300; DevEmuRegs.H0RAMDFT = 0x0300; /Disable watchdog module /禁止看門狗模塊 SysCtrlRegs.WDCR = 0x0068; /禁止看門狗,WDDIS位置1 /Initalize PLL /設(shè)置PLL SysCtrlRegs.PLLCR = 0xA; /使2812所能支持的最大時鐘頻率,如果外部晶振為/30MHz,則SYSCLKOUT=(30M*10)/2=150MHz /Wai

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論