历史上的今天
返回首页

历史上的今天

今天是: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寄存器说明如下

BCSCTL1寄存器说明在这里插入图片描述

由XT2OFF、XTS位可知,XT2振荡器可以关闭,并将XTS置1可将高频晶振接入LFXT1接口。


但是LFXT1无法进行关闭操作,若仅XT2接入高频晶振,XT1悬空,结合振荡器故障逻辑则导致LFXT1OF置1,会导致OFIFG置1,则会导致程序运行过程中反复振荡器故障中断,导致定时器捕获功能异常。


推荐阅读

史海拾趣

Fischer Elektronik公司的发展小趣事

在追求业务增长的同时,Fischer Elektronik也始终关注可持续发展和环保问题。公司积极采用环保材料和生产工艺,努力减少对环境的影响。此外,Fischer Elektronik还致力于推动绿色能源的应用,通过研发高效节能的产品,帮助客户降低能耗和减少碳排放。这种负责任的企业形象,不仅提升了公司的社会声誉,也为其在未来的发展中赢得了更多的支持和机遇。

Gold Peak Group公司的发展小趣事
控制电路的布局应合理,避免元件之间的电磁干扰和机械碰撞。
EiKO Global LLC公司的发展小趣事

随着智能家居和物联网技术的兴起,EiKO开始积极探索智能照明系统的研发与应用。公司投入大量研发资源,将传统照明产品与智能控制技术相结合,推出了具有远程控制、定时开关、色温调节等功能的智能照明系统。

这些智能照明系统不仅提高了用户的使用体验,还为用户带来了更加便捷和智能的生活方式。例如,用户可以通过手机APP远程控制家中的照明设备,实现定时开关和色温调节等功能;同时,智能照明系统还可以与智能家居系统相连接,实现与其他智能设备的联动控制。

BSI公司的发展小趣事

在电子行业的初期,由于缺乏统一的标准,各种电子产品之间的兼容性和互通性成为了一个大问题。这时,BSI作为国际标准化组织的重要参与者,积极推动了电子产品的标准化工作。通过与各国政府、行业协会和企业的合作,BSI制定了一系列电子产品的标准,为行业的发展提供了可靠的参考依据。这些标准的出台,极大地促进了电子产品的互通性和兼容性,推动了电子行业的健康发展。

Heyco公司的发展小趣事

进入20世纪50年代,Heyco开始设计和生产应力缓解电线保护线扣,这一创新产品迅速成为公司的主打系列之一。随着技术的不断进步,Heyco逐渐将产品线扩展到包括电缆配件、钉子固定器、紧固件等多种工业零部件,以及电气连接器和电线保护系统。这些产品广泛应用于汽车制造、医疗设备、能源水电、机械设备维护以及建筑施工安装等多个领域,展现了Heyco强大的技术实力和市场适应性。

EKIT公司的发展小趣事

2023年10月,华为坤灵(HUAWEI eKit)在香港成功举办了分销新品发布会。针对香港市场的特点,HUAWEI eKit展示了面向SOHO办公、酒店餐饮、商业地产、零售商超等场景的新品,并通过整合政策、产品、解决方案、服务和数字工具平台等措施,助力香港区域分销伙伴不断开拓中小企业市场。通过与联强国际(香港)有限公司(SYNNEX)的紧密合作,HUAWEI eKit成功吸引了超过100名香港分销商参与此次发布会,进一步巩固了其在香港市场的地位。

问答坊 | AI 解惑

新型显示系统引领汽车仪表技术新潮流

加拿大一家企业最近推出可取代现有汽车液晶显示器的显示系统。该系统在仪表盘内部设置小型投影机,可以向整个仪表盘投射内容并显示,既可使画面尺寸大型化,又可在仪表盘之类的曲面上显示。另外,如只需改变投影图像,就能更改仪表盘的外形,以满足 ...…

查看全部问答>

请帮忙推荐一款元器件I-V曲线测试仪

请帮忙推荐一款元器件I-V曲线测试仪,用作手机领域电子器件的失效分析用,要求价格适中。 我们工厂现在用的是Sony 370A programmable curve tracer,我需要与之功能类似的I-V曲线测试仪。 我的邮箱为liuping_davy@yahoo.com.cn 谢谢大家。 [ 本 ...…

查看全部问答>

LED3216电子钟硬件电路正式版

看到坛子里正在带着大家做电子钟,看到了一个博客,写的很清晰,引用过来供大家参考:        LED3216电子钟是由LED3216点阵显示系统升级过来的,在这个过程中硬件电路也有过几次变动,如果不是跟着我一起升级过来的爱好者, ...…

查看全部问答>

单片机实例8X8点阵显示出入平安

RT,再附带一个取字模软件,…

查看全部问答>

好家伙,TI又推了个6核DSP TMS320C6472

这是我找到的一些信息,供大家参考下~~~~ 日前,德州仪器 (TI) 宣布推出业界最低功耗 6 核 DSP,该款 TMS320C6472 器件旨在满足要求极低功耗的处理密集型应用的需求。此外,为了更便捷、更经济地评估 C6472 器件的性能,TI 还同步推出了一款多核处 ...…

查看全部问答>

Windows CEnet的智能移动信息终端设计.pdf

Windows CEnet的智能移动信息终端设计.pdf…

查看全部问答>

SPI 使用DMA方式如何来做?

需要一些提示! 因为对数据的传输要求高!    我是利用SPI 来实现向设备写数据的,而且写数据时在设备触发的IST中的! 我想用DMA的方式来做!   【平台】 2440 wince5.0…

查看全部问答>

【参与有分】EBoot升级Image时会用到带有"N000FF"的Image文件,这种文件怎么得到?

**************************问题描述******************************* 使用MS的EBoot升级Image的时候,代码上依次会走下面的流程:     OEMPlatformInit( )----初始化板上设备(初始化显示、RTC、OAL与eboot共享参数、打印用户菜单、网 ...…

查看全部问答>

在open at程序中如何让调用at命令?

能不能在open at程序中调用at的命令?如何调用?…

查看全部问答>

请问如何比较简单地产生负电源?

请教各位大侠,如何快速地利用板子上已有的+5V和+12V产生-5v和-12v电压?   采用什么芯片或者电路构建比较简单合理呢?   补充: -12v负电压没什么要求,只要引到LF353的4脚给他做负电源就行了~ 板子上的+5v和+12v是通过PC104总线 ...…

查看全部问答>