一、時鍾源
MSP430的Basic Clock Module+支持的時鍾源有:
- DCOCLK:內部數字控制振盪器,Internal digitally contrlled oscillator。所有MSP430芯片都有。
MSP430G2553的DCO支持的最大頻率一般為16MHz,且保存了1MHz、8MHz、12MHz、16MHz四個頻率的校正信息。 - VLOCLK:內部超低功耗、低頻振盪器,Internal very low power, low frequency oscillator,典型頻率12kHz。所有MSP430芯片都有。使用方便,但精准性不是太高。
MSP430G2553的VLO頻率在4kHz到20kHz之間,且受溫度、供電電壓影響較大。 - LFXT1CLK:低頻/高頻晶體振盪器,Low-frequency/high-frequency oscillator。可以是32.768kHz的晶體或外部時鍾(LF模式時),或者是400kHz到16MHz的晶體/晶振/外部時鍾源(HF模式時)。不是所有MSP430芯片都支持。
MSP430G2553支持的低頻晶體(LFXT1)的典型頻率是32.768kHz,且不支持HF模式。 - XT2CLK:高頻振盪器,high-frequency oscillator,頻率范圍最多支持400kHz到16MHz,可以是晶體/晶振/外部時鍾源。不是所有的MSP430芯片都支持。
MSP430G2553不支持XT2。
二、時鍾信號
MSP430的Basic Clock Module+包含了三個時鍾信號:
- MCLK:主時鍾,Master clock。可以從以上四個時鍾源中選擇其一作為MCLK來源,並支持1/2/4/8分頻。用於CPU和系統。
- SMCLK:子主時鍾,Sub-main clock,可以從以上四個時鍾源中選擇其一作為SMCLK來源,並支持1/2/4/8分頻。用於特定的外設。
- ACLK:輔助時鍾,Auxiliary clock,可選擇LFXT1CLK或VLOCLK作為ACLK來源,並支持1/2/4/8分頻。用於特定的外設,特別是低功耗待機時。
典型的時鍾系統框圖如下圖:
留意只有DCO和VLO是所有MSP430的標配,其他的要看具體型號:
三、DCO頻率設置
調整DCO頻率可以通過修改BCSCTL1寄存器中的RESELx位段、DCOCTL寄存器的DCOx、MODx位段來實現。如,若要設置DCO頻率為1MHz左右,通過查數據手冊中“DCO Frequency”表可得0.8MHz~1.5MHz頻率對應設置參數為(7,3),即RSELx=7, DCOx=3, MODx=0。但這樣做誤差很大。
BCSCTL1 &= ~BIT3; // set to DCO(7,3) BCSCTL1 |= BIT0 + BIT1 + BIT2; DCOCTL &= ~BIT7; DCOCTL |= BIT5 + BIT6;
更好的方法是直接將BCSCTL1和DCOCTL寄存器設置成已校准好的值。
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
這樣做的頻率誤差如下圖所示。
四、ACLK時鍾源設置
ACLK時鍾來源由BCSCTL3寄存器中的LFXT1Sx位段設置,可以切換為LFXT1、VLOCLK或外部時鍾源;由BCSCTL1寄存器中的DIVAx位段設置分頻比。當設置為LFXT1時,還需要根據板子情況設置effective capacitance。
如設置ACLK來源為VLOCLK、四分頻:
BCSCTL3 |= LFXT1S_2; //VLO mode BCSCTL1 |= DIVA_2; //ACLK divided by 4
設置ACLK來源為LFXT1、八分頻:
BCSCTL3 |= LFXT1S_0; //32k crystal selected BCSCTL3 |= XCAP_2; //~8.5pF effective capacitance (for G2553) BCSCTL1 |= DIVA_3; //ACLK divided by 8