TMS320F28035: TMS320F28035 使用内部晶振1,看门狗溢出复位后,再次进入应用后看门狗异常

Part Number: TMS320F28035

各位TI的工程师:

       你们好。我可能需要一些帮助。我有个项目使用了C2000 TMS32028035的MCU芯片。目前遇到了一个问题,因为一些原因,我们使用了内部晶体振荡器1作为主时钟源,正常情况下,我们的固件会正常运行。但是当我们需要在线升级固件时,出现了一些问题。我们的固件使用CAN通信升级,从APP固件跳转BOOT固件是通过屏蔽看门狗喂狗方式通过看门狗复位实现的。然而我们发现看门狗溢出复位再次进入APP固件后,看门狗出现了异常,无法再次复位。为了调查原因,我们进行仿真,下面是仿真过程

1)刚烧录,进行仿真,直接运行时看门狗寄存器 

2) 第一次发CAN升级指令(通过设置标志符,使APP无法喂狗,通过看门狗复位到boot),注意框中的CAN报文是由BOOT固件发出来的,说明收到指令后,程序跳到BOOT固件后,又从BOOT跳到APP里,这是我们预期的,然而仿真窗口看门狗寄存器已经发生变化

3) 再次发送升级报文,程序没有进行跳转,这里程序还在APP固件里,没有发送APP的报文,是因为升级标志位置位,没有运行CAN发送函数

4)  通过仿真器将升级标志符清0,程序发送APP固件报文,则进一步印证了3)的猜测:看门狗复位失效,特别说明:使用内部晶振2,每次都能正常复位

5)下面是我的初始化配置函数

 

以上,希望工程师大佬帮忙分析下原因,顺便问下内部晶振1和内部晶振2的区别,非常感谢大佬的指导!

 

  • 您好,收到了您的案例,调查需要些时间,感您的耐心等待。

  • 您好

    WD寄存器发生了什么变化?这是预期的还是故意的?不明白你上面说的是什么意思?你是说这次WD重置没有触发?您确定此时启用了WD,并且它不是从APP固件馈送的吗?

    INTOSC1和INTOSC2之间没有重大区别,在使用WD clk时需要记住以下几点

    看门狗时钟源选择位:此位选择看门狗时钟的源。在XRS低和XRS高之后,默认选择内部振荡器1。用户在初始化过程中需要选择外部振荡器或内部振荡器2。如果丢失时钟检测电路检测到丢失时钟,则该位被强制为0,并选择内部振荡器1。用户更改此位不会影响PLLCR值。

  • 看门狗WDCR 0x0007变为0x0087

    看门狗WDNTR 0x0000变为0x0011

    DSP重启进入APP是符合我们的预期,但是看门狗寄存器变化不符合预期,我想W问下:我的APP固件里有了看门狗初始化代码,在看门狗发生溢出重新进入APP,我是否需要进行不同的初始化,比如我需要清除某个寄存器标志位

  • 你好,感谢回复

    看门狗WDCR 0x0007变为0x0087

    看门狗WDNTR 0x0000变为0x0011

    DSP重启进入APP是符合我们的预期,但是看门狗寄存器的变化不符合预期,我想W问下:我的APP固件里有了看门狗初始化代码,在看门狗发生溢出重新跳转进入APP,我是否需要进行不同的初始化,比如清除每个标志位

  • 您好

    看门狗超时后无需清除任何标志,系统应直接启动并进入应用。

    看门狗WDCR 0x0007变为0x0087

    看门狗WDNTR 0x0000变为0x0011

    WDCR是预期的,因为它只是设置重置状态FLG。启用WD后,CNTR将发生变化