DSP28335時鐘配置

在這裏插入圖片描述
一、控制外設時鐘的寄存器有以下幾個:
PCLKCR0(外設時鐘寄存器0):作用於上圖標黃外設,所有時鐘默認不開啓
注:這裏需要注意TBCLKSYNC這個寄存器,他是讓ePWM模塊時鐘同步,且當檢測到TBCLK的上升沿時,同步開啓。另一個需要注意的是,及時這個寄存器沒有使能ePWM,如果PCLKCR1使能了一樣有效。
對於使能ePWM推薦做法:
• Enable ePWM module clocks in the PCLKCR1 register.
• Set TBCLKSYNC to 0.
• Configure prescaler values and ePWM modes.
• Set TBCLKSYNC to 1.
PCLKCR1(外設時鐘寄存器1):作用於上圖倒數第三個框的外設,所有時鐘默認不開啓
PCLKCR3(外設時鐘寄存器1):作用於GPIO,三個CPU定時器,DMA和XINTF。且三個CPU定時器和GPIO的時鐘是默認使能的
HISPCP:對其作用的外設輸入時鐘進行分頻
LOSPCP: 對其作用的外設輸入時鐘進行分頻

二、CPU時鐘
在這裏插入圖片描述
CPU時鐘來源可以是內部的晶體振盪器也可以是外部的晶體振盪器或是外部直接輸入時鐘。
如果選擇外部晶體作爲輸入,則內部晶體可以斷開。將晶體連接到芯片的X1和X2管腳上,並且XCLKIN接地。
直接輸入時鐘信號,將時鐘信號接到XCLKIN管腳上(允許3.3V時鐘信號),X1接地,X2浮空;將時鐘信號接到X1管腳上(允許1.8V時鐘信號),XCLKIN接地,X2浮空。
CPU時鐘無法啓振檢測
在這裏插入圖片描述

這裏有兩個計數器,一個7位,另一個13位。如果7位計數器溢出就會將13位計數器進行清零,所以在正常情況下13位的計數器不會溢出。如果OSCCLK信號突然沒有了,那7位的計數器將不再計數,也就是7位計數器值不再增加無法溢出,但是PLL會輸出一個“limp mode”頻率,因此13位的計數器值會繼續增加直至溢出。

**PLL設置**

PLLCR:設置PLL的倍頻數,最大可倍頻5倍
PLLSTS:PLL狀態寄存器
注:1、只有在PLLSTS[DIVSEL]爲0時在可以對PLLCR進行寫操作;
2、只有PLLSTS[PLLLOCKS]爲1(就是PLL輸出時鐘穩定時)時纔可以對PLLSTS[DIVSEL]進行操作
3、設備只有在PLLSTS[MCLKSTS]爲0時纔可以正常工作
4、當/XRS或看門狗進行復位時,PLLCR和PLLSTS及寄存器所有其將會被恢復爲默認值

PLLCR操作流程圖
在這裏插入圖片描述

例程:

/*
 * 輸入晶振頻率爲30MHZ
 * 經PLL之後輸出SYSClock=90MHZ
 */
void InitClock(void)
{
    while(SysCtrlRegs.PLLSTS.bit.MCLKSTS == 0);
    if(SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
    {
        SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
    }
    SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1; //關閉晶振丟失邏輯
    SysCtrlRegs.PLLCR.bit.DIV = 6; //0110
    while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS == 1); //檢查時鐘是否已經穩定震盪
    SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
    SysCtrlRegs.PLLSTS.bit.DIVSEL = 2; //10b
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章