平台: MSP430F5418
问题描述:
XT1和XT2均未接外部晶振, 时钟代码如下:
void InitSysClk(void)
{
int i,XT2_Work=0;
int RetryTime=5;
UCSCTL0 = DCO4;
UCSCTL1 = DCORSEL_7;
UCSCTL3 = DCORSEL_5+FLLREFDIV_0; //XT2 as FLL reference, FLL div=1
UCSCTL4 = SELA_2+SELS_5+SELM_5;//ACLK=REFCLOCK,MCLK=SMCLK=XT2/DCO
UCSCTL6 &= ~XT2OFF;
//检测XT2
{
UCSCTL7 &= ~(XT2OFFG + DCOFFG);
// Clear XT2,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
for(i=0;i<0xFFFF;i++); // Delay for Osc to stabilize
if ((SFRIFG1&OFIFG) == 0)
{
XT2_Work = 1;
break;
}
}while ((RetryTime--)>0); // Test oscillator fault flag
if (XT2_Work == 0)//XT2不起振,初始化DCO
{
UCSCTL4 = SELA_2 + SELS_3 + SELM_3;
}
__no_operation();
}
由于没有外接XT2, 最后应该是初始化了DCO, 使用示波器测量SMCLK, 测试了5pcs板子, 时钟差别比较大
14.75Mhz, 13.25Mhz, 15.475Mhz, 15.15Mhz,13.75Mhz
问题: 使用内部DCO为什么不同板子时钟差距这么大, 如何能让DCO比较准确的固定在一个频率上