历史上的今天
今天是:2025年01月22日(星期三)
2021年01月22日 | MSP430F2619单片机时钟初始化故障始末
2021-01-22 来源:eefocus
初次使用该芯片,问题说大不大,说小也折腾了挺久,写出来,让后来者能避免此类简单错误。
项目需要,使用MSP430F2619捕获功能对待测频率信号进行采样计算。
待测信号由信号发生器给出。
硬件上,MSP430F2619单片机XIN和XOUT并未按手册建议接入32.768kHz低频时钟,仅在XT2IN和XT2OUT引脚接入8MHz高频时钟。(此处是导致错误的根源)
在后期调试时,有尝试使用MSP430FG439芯片最小系统进行测试,因此查阅用户指南时,在时钟模块章节,有阅读到一句“If there is only one crystal in the system it should be connected to LFXT1. Using only XT2 causes the LFOF fault flag to remain set, not allowing for the OFIFG to ever be cleared.”,说明了只使用一个外部时钟源时,应将其接入LFXT1接口。
参照各个例程,MSP430时钟初始化程序大同小异,参考某品牌MSP430F149开发板例程。
void SetupClock()
{
unsigned int i;
BCSCTL1 &= ~XT2OFF; //打开XT2振荡器
BCSCTL2 |= SELM_2+SELS; //MCLK为8MHZ,SMCLK为8MHZ
do{
IFG1 &= ~OFIFG; //清楚振荡器错误标志
for(i=0;i<100;i++)
_NOP();
}
while ((IFG1&OFIFG)!=0); //如果标志位1,则继续循环等待
IFG1 &= ~OFIFG;
}
其中
while ((IFG1&OFIFG)!=0); //如果标志位1,则继续循环等待
对振荡器故障中断标志进行判断,若故障不消除,则不跳出循环。
若按上述程序对MSP430F2619芯片进行初始化,则会陷入时钟初始化的死循环。
可以明白按MSP430F2619芯片硬件电路的时钟连接是有问题的,介于初期并未参考MSP430FG439芯片用户手册,因此根据个人理解,引入所犯的第二个错误。看时钟配置程序如下:
void SetupClock()
{
uint16_t tmpv;
BCSCTL1 &= ~XT2OFF; //开启外部振荡器
do
{
IFG1 &= ~OFIFG; //清除晶振失效标志
for (tmpv = 0xff; tmpv > 0; tmpv--);
}
while((BCSCTL3 & XT2OF) == 1); //*等待外部晶振就绪,该句有误
BCSCTL2 |= SELM_2+SELS; //选择MCLK,选择SMCLK //
}
其中
while((BCSCTL3 & XT2OF) == 1); //*等待外部晶振就绪
参考

看过逻辑图,为跳过LFXT1OF的错误标志,则将while循环内语句进行修改,直接判断XT2OF是否置位。
修改后,程序编译通过,初始化正常,整个程序所实现其他功能均正常,唯独频率信号采样不正常。
在修改过算法,更换过MSP430F149开发板和MSP430FG439目标板进行移植试验(两块板均焊接有低频和高频两类时钟源)。
经过多番测试之后,才尝试为MSP430F2619芯片电路板焊接低频晶振,并使用
while ((IFG1&OFIFG)!=0); //如果标志位1,则继续循环等待
作为初始化循环等待语句。此时成功编译通过,运行时,频率捕获采样功能正常。
总结:
针对用户指南和数据手册仔细阅读:
BCSCTL1寄存器和IFG1寄存器说明如下


由XT2OFF、XTS位可知,XT2振荡器可以关闭,并将XTS置1可将高频晶振接入LFXT1接口。
但是LFXT1无法进行关闭操作,若仅XT2接入高频晶振,XT1悬空,结合振荡器故障逻辑则导致LFXT1OF置1,会导致OFIFG置1,则会导致程序运行过程中反复振荡器故障中断,导致定时器捕获功能异常。
史海拾趣
|
加拿大一家企业最近推出可取代现有汽车液晶显示器的显示系统。该系统在仪表盘内部设置小型投影机,可以向整个仪表盘投射内容并显示,既可使画面尺寸大型化,又可在仪表盘之类的曲面上显示。另外,如只需改变投影图像,就能更改仪表盘的外形,以满足 ...… 查看全部问答> |
|
请帮忙推荐一款元器件I-V曲线测试仪,用作手机领域电子器件的失效分析用,要求价格适中。 我们工厂现在用的是Sony 370A programmable curve tracer,我需要与之功能类似的I-V曲线测试仪。 我的邮箱为liuping_davy@yahoo.com.cn 谢谢大家。 [ 本 ...… 查看全部问答> |
|
看到坛子里正在带着大家做电子钟,看到了一个博客,写的很清晰,引用过来供大家参考: LED3216电子钟是由LED3216点阵显示系统升级过来的,在这个过程中硬件电路也有过几次变动,如果不是跟着我一起升级过来的爱好者, ...… 查看全部问答> |
|
这是我找到的一些信息,供大家参考下~~~~ 日前,德州仪器 (TI) 宣布推出业界最低功耗 6 核 DSP,该款 TMS320C6472 器件旨在满足要求极低功耗的处理密集型应用的需求。此外,为了更便捷、更经济地评估 C6472 器件的性能,TI 还同步推出了一款多核处 ...… 查看全部问答> |
|
需要一些提示! 因为对数据的传输要求高! 我是利用SPI 来实现向设备写数据的,而且写数据时在设备触发的IST中的! 我想用DMA的方式来做! 【平台】 2440 wince5.0… 查看全部问答> |
|
【参与有分】EBoot升级Image时会用到带有"N000FF"的Image文件,这种文件怎么得到? **************************问题描述******************************* 使用MS的EBoot升级Image的时候,代码上依次会走下面的流程: OEMPlatformInit( )----初始化板上设备(初始化显示、RTC、OAL与eboot共享参数、打印用户菜单、网 ...… 查看全部问答> |
|
请教各位大侠,如何快速地利用板子上已有的+5V和+12V产生-5v和-12v电压? 采用什么芯片或者电路构建比较简单合理呢? 补充: -12v负电压没什么要求,只要引到LF353的4脚给他做负电源就行了~ 板子上的+5v和+12v是通过PC104总线 ...… 查看全部问答> |




