今天专门对MSP430G2553与G2452两款单片机(就是LaunchPad带的哪两个)做了内部的DCO频率测试,结果让我很是迷茫,两个单片机只有G2452可以产生较准确的1MHz的频率,G2553根本就没法产生1MHz的频率,而且也无法按着1MHz,8MHz,12MHz,16MHz的设定来产生。我用的是P1.4口输出SMCLK,用示波器测量其频率。对频率的初始化程序为
void MCU_clk_init(void)
{
if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)
while(1);
BCSCTL1 |= CALBC1_8MHZ; DCOCTL |= CALDCO_8MHZ;//上面两句将内部DCO校准至8MHz
/* //1M
BCSCTL1 = CALBC1_1MHZ; //实际DCO为1.5955MHz
DCOCTL = CALDCO_1MHZ;
//8M
BCSCTL1 = CALBC1_8MHZ; //实际DCO为15.465MHz
DCOCTL = CALDCO_8MHZ;
//12M
BCSCTL1 = CALBC1_12MHZ; //实际DCO为21.0280MHz
DCOCTL = CALDCO_12MHZ;
//16M
BCSCTL1 = CALBC1_16MHZ; //实际DCO为15.7100MHz
DCOCTL = CALDCO_16MHZ;*/
BCSCTL2 |= SELM_0; //MCLK采用8M的内部DCO
BCSCTL2 |= DIVS_0;//SMCLK采用DCO时钟
测试的实际频率结果都写在了后面,最开始我以为是G2553有问题,接着换了G2452也还是无法产生较精确的DCO,编译软件额是CCS5.2。这个问题以前就是存在的,在参加去年的TI杯时就曾发现过,那时总以为是自己的配置有问题,就没有再深究,毕竟那时对频率的精确度没要求。但通过今天的测试,问题依旧,我不知道问题到底是出在哪了?不过我怀疑是芯片的本身的问题,还望能够引起贵公司的足够重视。