新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > S5PV210(TQ210)學習筆記——系統(tǒng)時鐘和串口

S5PV210(TQ210)學習筆記——系統(tǒng)時鐘和串口

作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
TQ210的系統(tǒng)時鐘配置和串口配置非常簡單,本文從TQ210的系統(tǒng)時鐘配置開始討論。

TQ210的時鐘配置跟2440/6410的時鐘配置差不多,只是鎖相環(huán)的個數(shù)略有不同,配置步驟是一樣的。配置系統(tǒng)時鐘,無非要經(jīng)過以下幾個步驟:

本文引用地址:http://butianyuan.cn/article/201611/322803.htm

(1)設置系統(tǒng)PLL鎖定時間

(2)配置PLL

(3)配置各模塊分頻系數(shù)

(4)切換到PLL時鐘

簡單的看著四步似乎沒有頭緒,但是看到手冊中的“S5PV210時鐘生成線路圖”就可以理解了,現(xiàn)在截圖如下:

上圖中無非就三種模塊,PLL、MUX和DIV,MUX控制時鐘源選擇,PLL負責生成PLL時鐘,DIV負責分頻。

為了系統(tǒng)穩(wěn)定,在設計電路時我們一般不會使用太高頻率的晶振(避免高頻線間/層間干擾),但是,S5PV210的內(nèi)核需要的工作頻率很高(最高可以達到1G),這中情況下,我們通常是通過鎖相環(huán)(英文簡稱PLL)來對外部時鐘源進行倍頻,然后供內(nèi)核使用(在TQ210開發(fā)板上采用的是12M晶振),因此,S5PV210提供了4個PLL(具體四個PLL的用途可以自己閱讀手冊),分別是APLL、MPLL、EPLL和VPLL,通過配置S5PV210提供的鎖相環(huán)控制寄存可以設置鎖相環(huán)的倍頻系數(shù),使內(nèi)核工作頻率達到800M或者1G。需要注意的是PLL設置完成之后并不能立刻穩(wěn)定的工作,需要一個起振過程,在這段時間內(nèi)PLL的輸出頻率很不穩(wěn)定,因此,內(nèi)核的工作也是很不穩(wěn)定的,為了解決這個問題,S5PV210提供LOCK_TIME(鎖定時間)模塊(通過設置相應的LOCK_TIME寄存器可以設定鎖定的時間長度),當鎖相環(huán)控制寄存器的值發(fā)生改變時,系統(tǒng)會鎖定內(nèi)核,鎖定內(nèi)核時CPU不工作,此時鎖定模塊會根據(jù)LOCK_TIME設定的值進行計時,計時完成后CPU才會使用PLL提供的時鐘信號工作。

默認狀態(tài)下內(nèi)核使用外部時鐘源提供的時鐘,配置好PLL后需要設置相應的MUX,使內(nèi)核在PLL提供的時鐘信號下工作。從上面的時鐘生成線路圖中還可以看到很多MUX,我們可以根據(jù)實際要求進行配置。注意,選通PLL的MUX應該在設置完分頻之后配置。

內(nèi)核可以工作在1G的時鐘信號下,而其他設備工作頻率較低,因此,需要根據(jù)實際要求進行分頻,分頻的值并不是隨意的,應該根據(jù)手冊上提供的參考值進行配置,以下是各模塊的最高工作頻率:

這樣,配置完PLL和分頻之后選通PLL,使CPU在高頻模式下工作。

以上S5PV210的系統(tǒng)時鐘配置邏輯,可能說了這么多您也很難理解,這時,您應該參考代碼、手冊和本文進行理解。S5PV210系統(tǒng)時鐘配置的代碼很多,這里我就不貼出來了,下面,我們討論一下S5PV210的串口部分。

S5PV210的串口配置比起系統(tǒng)時鐘來講更為簡單。學習串口應該先了解下串口的工作原理,認識一下串口,具體的工作原理可以閱讀手冊的串口部分,需要知道串口的相關配置參數(shù),如波特率、數(shù)據(jù)位、停止位、校驗位等,流控制相關的也可以看看,理解后自行配置一下,我們這里只討論下串口的配置,為了簡單起見,我們以非FIFO模式為例進行討論。

直接閱讀手冊的寄存器控制部分,第一個寄存器便是ULCON。ULCON可以配置數(shù)據(jù)位長度、停止位長度、教研模式和紅外模式,如果需要設置為8N1,非紅外模式則可以將ULCON配置為0x3。

第二個寄存器是UCON,我們只配置一下傳輸/接收模式和時鐘源即可,其他的采用默認方式,為了簡單,我們選擇“中斷或查詢模式”,以PCLK為時鐘源,因此,可以配置UCON為0x5|(1<<10)。

我們使用非FIFO模式,可以不設置UFCON寄存器。

UMCON是流控制相關的,我們也不作配置。

接下來的四個STAT寄存器是表征串口工作狀態(tài)的,無需配置。

接下來的UTXH是發(fā)送緩沖區(qū)寄存器和URXH是接收緩沖區(qū)寄存器。

UBRDIV和UDIVSLOT是配置串口波特率的,算法也比較簡單,手冊上提供了三個約束公式:

DIV_VAL = UBRDIVn + (num of 1s UDIVSLOTn)/16

DIV_VAL = (PCLK/(bps X 16))-1

或者

DIV_VAL = (SCLK_UART / (bps X 16)) - 1

我們選擇PCLK作為串口工作時鐘源,PCLK的頻率為66.5M,如果我們要設置串口波特率為115200則可以如下計算:

DIV_VAL = (66.5 X 10^6 / (115200 X 16)) - 1 = 35.07,故UBRDIV應該設置為35,

另外,0.07*16 + 1 = 2,所以UDIVSLOT中應該有兩個1,故可以設置為0x3,當然也可以是0x88等,只要有兩個1位就可以。

到這里,串口就配置好了,還是比較簡單的,您配置完后還可以自己配置下FIFO和流控制,學完中斷和DMA之后還可以配置為中斷或者DMA模式,這里就不多說了。代碼比較簡單,網(wǎng)上的例子也比較多,我就不上傳了。



評論


技術專區(qū)

關閉