Unified Clock System Introduction
统一时钟系统(UCS)支持低功耗和超低功耗。使用三个内部时钟信号,用户可以在性能和低功耗间做出最好的权衡。统一时钟系统模块可以被设置为操作不带任何外部器件、带一或两个外部晶振、陶瓷振荡器,其完全在软件控制之下。
统一时钟系统模块包含5个时钟源:
l XT1CLK:低频/高频晶振,可以用低频32768Hz手表晶振、标准晶振、陶瓷振荡器、或范围4MHz-32MHz的外部时钟源。
l VLOCLK:内部非常低功率、低频率的12KHz典型频率的晶振
l REFOCLK:内部的、修正过的、低频32768Hz典型频率振荡器,可以作为FLL的基准时钟。
l DCOCLK:内部数控振荡器,可以用FLL稳定。
l XT2CLK:可选择的高频振荡器,可以用标准晶振、陶瓷振荡器、或范围4MHz-40MHz的外部时钟源。
从统一时钟系统模块有3个有效的时钟信号:
l ACLK:辅助时钟。ACLK可软件选择来自XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV和XT2CLK(如果有)的信号。DCOCLKDIV是在FLL模块作用下分频为1、2、4、6、8、16或32的DCOCLK频率。ACLK可软件选择为个人外设模块的信号。ACLK/n是ACLK被分为1,2,4,6,8,16,32,并且可以用一个引脚外部输出。
l MCLK:系统主时钟。MCLK可软件选择来自XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV和XT2CLK(如果有)的信号。MCLK可分频为1,2,4,6,8,16或32。MCLK主要用于CPU与系统.
l SMCLK:子系统时钟。SMCLK可软件选择来自XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV和XT2CLK(如果有)的信号。SMCLK可分频为1,2,4,6,8,16或32。SMCLK可软件选择为个人外设模块。
时钟配置如下:
void clk_init()
{WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P5SEL |= 0x0C; // Port select XT2
P7SEL |= 0x03; // Port select XT1
UCSCTL6 &= ~(XT1OFF + XT2OFF); // Set XT1 & XT2 On
UCSCTL6 |= XCAP_3; // Internal load cap
// Loop until XT1,XT2 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
UCSCTL6 &= ~XT2DRIVE0; // Decrease XT2 Drive according to
// expected frequency
UCSCTL4 |=SELA__DCOCLK + SELM__XT2CLK + SELA__XT1CLK ; // Select SMCLK, ACLK source and DCO source
}