TMS28335 時鐘系統

2021-07-29 12:36:55 字數 3955 閱讀 5905

pll作用就是對外部時鐘進行倍頻,降低產生高頻時鐘訊號的成本。但是倍頻配置的時候,需要在特定的條件下更改,因此需要檢測pll工作的各種狀態訊號,因此pll有兩個配置相關暫存器,pll狀態暫存器pllsts和pll控制暫存器pllcr。通過對狀態暫存器pllsts的判斷,可以判斷pll的工作狀態,在特定的工作狀態下,對pll控制暫存器pllcr進行配置,最後產生合適的時鐘訊號clkin輸入給cpu,完成整個過程的倍頻。本文詳細介紹了pll模組,並對初始化過程和初始化**進行了分析。

osc和pll模組方框圖如圖1所示。 

基於 pll 的時鐘模組提供兩種操作模式: 

• 晶振操作模式:允許使用乙個外部晶振/諧振器來提供到器件的時基。 

• 外部時鐘源操作模式:允許旁通內部振盪器被,時鐘由乙個 x1 或者 xclkin 引腳上的外部時鐘源輸入生成。

三種輸入時鐘配置如圖2、圖3、圖4所示 

30mhz 外部石英晶振的典型技術規範如下: 

• 基本模式、 併聯諧振 

• cl( 負載電容) =12pf 

• cl1=cl2=24pf 

• c併聯=6pf 

• esr 範圍 = 25 至 40ω

tms320f23885上有乙個片載、基於pll倍頻器的時鐘模組,它提供所有的時鐘訊號以及實現對低功耗模式的控制。

pll作為dsp的時鐘重要組成部分,它除了提高系統內部sysclkout的頻率之外,還有乙個重要的用途就是監視外部時鐘是不是很好的為dsp內部提供系統時鐘。 

如果pll處於使能狀態,需要監視pplsts暫存器中的mclksts位的狀態。如果mclksts被置位,則軟體要採集恰當的措施保證系統不出現事故,該措施包括使系統停機、復位等。

與pll配置相關的暫存器有兩個:pll狀態暫存器pllsts和pll控制暫存器pllcr,兩個暫存器具體的講解參見第3節。

兩個暫存器中最關鍵的位域分別為 2位的pllsts[divsel]和4位的pllcr[div]。 

pllsts[divsel]選擇cpu時鐘的分頻係數(/4,/2,/1),pllcr[div] 選擇cpu時鐘的倍頻係數(*1,*2,……,*10)。

比如tms320f23885最大工作時鐘為150mhz,通常外部晶振頻率為30mhz,先將30mhz進行10倍頻變成300mhz,再對300mhz進行2分頻得到150mhz的時鐘。(官方例程裡產生150mhz的方式)

pll的設定如表1所示。 

分頻係數的選擇如表2所示。 

pll可能的配置模式如表3所示。 

注: (1)預設情況下,分頻係數為4 

(2)在改變pllcr[div]倍頻係數前,必須滿足兩個條件:

(3)一旦pll穩定之後,會鎖定在新的頻率下工作,pllsts[plllocks] = 1,可以改變pllsts[divsel]。 

(4)在寫入 pllcr 暫存器之前, 安全裝置模組(看門狗)應該被禁用。 

(5)在 pll 模組穩定後,重新啟用安全裝置模組(看門狗),重啟的時間為 131072 個 oscclk 週期。 

(6)在 pll (vcoclk) 的輸出頻率不超過300mhz 時候,選擇輸入時鐘和 pllcr[div] 位。 

(7)當pll啟用時,即pll不是旁路(pllcr[div]!=0),必須需要分頻器,即分頻係數不能為1(pllsts[divsel]!=3),這是因為確保反饋給核心的時鐘具有正確的占空比。 

(8)只有外部復位訊號rst和安全裝置(看門狗)產生復位訊號時,pllcr和pllsts才會復位到預設值,而偵錯程式和missing clock detect logic產生的復位訊號不會使兩者復位到預設值。 

(9)pllcr和pllsts是受ellow保護的。 

特別注意:倍頻時一定要分頻,不倍頻時才允許不分頻。

pll控制暫存器pllcr如表4所示。 

pll狀態暫存器pllsts如表5所示。 

pllsts各位的描述如表6所示 

注:跛行模式(limp mode)系統出現問題的時候,控制邏輯能夠根據對應的條件進行判斷,安排另外的一套控制電平,使得必須控制的負載按照既定的邏輯執行。

pll初始化流程圖如圖2所示。 

根據流程圖,大致可以描述pll的初始化過程為: 

(1)確保存在oscclk,系統能正常工作,即判斷pllsts[mclksts]==1? 

(2)改變pllcr[div]前,確保pllsts[divsel]==0 

(3)改變pllcr[div]前,禁用主振盪器故障檢測邏輯模組,即pllcr[mclkoff]=1 

(4)根據需要,改變pllcr[div] 

(5)判斷pll是否穩定鎖定,即pllsts[plllocks]==1? 

(6)使能主振盪器故障檢測邏輯模組,即pllcr[mclkoff]=0 

(7)根據需要,改變pllsts[divsel]

pll初始化的**如下(來自官方例程,主要對其注釋分析和講解)。

/*

* 函式名稱:initpll

* 函式輸入:倍頻引數val,分頻引數divsel

* val取值為0到10,表示倍頻數;divsel取值0到4,0和1表示4分頻,2表示2分頻,3表示不分頻

* 函式輸出:無

* 函式呼叫:initpll(10,2);

* 先將外部時鐘倍頻10倍,在分頻1/2,最後產生的時鐘clkin輸入cpu28x

*/void initpll(unsigned

short div, unsigned

short divsel)

// pllcr從0x0000改變前,pllsts[divsel]必須為0

// 外部rst復位訊號會使pllsts[divsel]復位

// 此時分頻為1/4

if (sysctrlregs.pllsts.bit.divsel != 0)

// 前面條件都滿足後,可以改變pllcr[div]

if (sysctrlregs.pllcr.bit.div != val)

eallow;

sysctrlregs.pllsts.bit.mclkoff = 0;

edis;

}// 如果需要分頻1/2

if((divsel == 1)||(divsel == 2))

//注意:下面**只有在pll是旁路或者關閉模式時,才可被執行,其他模式禁止。

//倍頻時一定要分頻,不倍頻時才允許不分頻

//如果需要切換分頻到1/1

// * 首先從預設1/4分頻切換到1/2分頻,讓電源穩定

// 穩定所需要的時間依賴於系統執行速度,此處延時50us只是作為乙個特例

// * 穩定後,再切換到1/1

if(divsel == 3)

}

dsp28335時鐘 總結

1.dsp28355的最高頻率為150mhz 30mhz晶振訊號oscclk經鎖相環10倍頻 pllcr設定 然後經過2分頻 pllsts設定 產生150mhz時鐘訊號 2.150mhz 1 lspclk 低速時鐘 spi,sci,iic,mcbsp 2 1 2 75mhz ecan 3 150mh...

TMS320F28335的時鐘介紹

tms320f28335的時鐘介紹 tms320f28335上有乙個基於pll電路的片上時鐘模組,為cpu及外設提供時鐘有兩種方式 一種是用外部的時鐘源,將其連線到x1引腳上或者xclkin引腳上,x2接地 另一種是使用振盪器產生時鐘,用30mhz的晶體和兩個20pf的電容組成的電路分別連線到x1和...

TMS320F28335的時鐘介紹

tms320f28335的時鐘介紹 tms320f28335上有乙個基於pll電路的片上時鐘模組,為cpu及外設提供時鐘有兩種方式 一種是用外部的時鐘源,將其連線到x1引腳上或者xclkin引腳上,x2接地 另一種是使用振盪器產生時鐘,用30mhz的晶體和兩個20pf的電容組成的電路分別連線到x1和...