使用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模块。有可能能改善。
TI中文支持网



