最近在一个数据采集器中用到MSP430F449,觉着外部高频晶振的稳定性好,就想利用XT2(4M)作为MCLK,项目做好了,测量结果总是出问题,结果不对,我的采样周期通过定时器控制,调试中发现,采样频率高于一定值之后之后,采样周期并不随定时器设置改变而是固定到一个值上,反复思考,怀疑是XT2根本就没有选择高频晶振,而是选择了默认的DCO频率。索性不用XT2作为MCLK,而直接用DCO,只不过设置寄存器设置DCO的频率为4M左右,再次下载运行,结果正确。
以前论坛里有个老帖也是关于MCLK不能选择XT2的,但后来似乎是解决了。在这次开发中我遇到了类似的情况,又重新怀疑是不是
F449的MCLK设置真的存在BUG???
程序片断:
WDTCTL=WDTPW+WDTHOLD; //Stop WDT
IFG2=0; //Clear Interrupt Flag
IFG1=0;
FLL_CTL0|=XCAP18PF;
FLL_CTL1&=~XT2OFF;
do
{
//IFG1&=~OFIFG;
FLL_CTL0&=~XT2OF;
for(int i=0xff;i>0;i--);
}
while((FLL_CTL0&XT2OF)!=0);
FLL_CTL1|=SELM_XT2+SELS; //实际上MCLK并没有真正选择XT2,为什么?
老帖地址:
http://bbs.lierda.com/showthread.php...&highlight=tx2