TI中文支持网
TI专业的中文技术问题搜集分享网站

OFIFG的晶振故障标志位不能清除

使用F5529的CPU在经过电场干扰后,外部看门狗对CPU复位不能正常工作。

使用示波器量外部高速的8M晶振是有起振,且频率也对。

但是CPU执行到等待晶振稳定一步就不能执行下去,OFIFG标志位一直清不掉,经过1S多后,外部看门狗又对CPU复位。一直这样。

只有在重新上电复位才能执行下去。

以下是晶振初始化代码。卡在红色部分

void Init_Clock(void)
{
P5SEL |= BIT2+BIT3; // Port select XT2
P5SEL |= BIT4+BIT5; // Port select XT1

UCSCTL6 = XCAP_3;
UCSCTL6 &= ~XT2OFF;
UCSCTL6 &= ~(XT1OFF); // XT1 On

do
{
UCSCTL7 &= ~(XT1LFOFFG + DCOFFG + XT2OFFG);
SFRIFG1 &= ~OFIFG;
}while ( (SFRIFG1 & OFIFG) );

灰小子:

建议楼主提供下电路

灰小子:

建议检查复位电路,看是否正确复位

HAO CHEN10:

回复 灰小子:

电路没问题,受到电场干扰后,复位信号不能复位CPU。

示波器测过复位信号正常,晶振频率正常。

但复位信号,似乎不能清除CPU状态。只有上电复位,才能正常。

tianyu yang:

晶振不起振 或者说标志位清除不了 这问题我遇到的  两种情况:1、板子排的有问题   2、有的片子在do{}while();代码前需要配一些寄存器

假如你用的评估板  遇到的是问题2  

heqiang yang:

回复 tianyu yang:

@tianyu yang

           您好!您说的真准,哈哈,我用的是评估版,一直在这个do while里面出不来,请问怎么解决?谢谢

tianyu yang:

回复 heqiang yang:

哦这评估板  用的是XT2  晶振是8M

我首先 引脚复用 设置成XIN/XOUT  然后开始编写初始化代码  我4系比较熟练  5系才刚刚上手

Jason Guo:

HAO CHEN10,

你好。

请问是如何确定 程序卡在 do while循环里的?

是不是把do while 注释掉,程序就能正常运行了?

如果是的话,那可能需要进一步确认OFIFG的来源到底是 XT1,XT2,还是DCO. 不合适的配置是有可能让DCOFFG置位。

如果把do while注释掉,程序还是 不能正常运行。那就要考虑是不是MCU被强干扰强放电latch up了,典型症状就是复位不能恢复,只能重新上电。这就是一个系统问题了,需要整机设计来考虑。 MCU能做的是使能内部的SVS、SVM模块。有可能能改善。 

赞(0)
未经允许不得转载:TI中文支持网 » OFIFG的晶振故障标志位不能清除
分享到: 更多 (0)