This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28035-WDFLAG EP:在看门狗测试期间看门狗复位时不设置 WDFLAG

Guru**** 2563960 points
Other Parts Discussed in Thread: TMS320F28035, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1565741/tms320f28035-ep-wdflag-is-not-setting-upon-watchdog-reset-during-watchdog-test

器件型号:TMS320F28035-TMS320F28035 EP
Thread 中讨论的其他器件:TMS320F28035C2000WARE

工具/软件:

您好:

我尝试在 TMS320F28035 上实施看门狗测试。 目标是启用看门狗、提供大于配置的超时周期的延迟、并检查看门狗是否会使系统复位。 我还想通过寄存器检查确认复位是由看门狗引起的、而不是上电复位引起的。

在测试中、我添加了一个while循环。 系统复位(我的 LED 在和看门狗测试循环之间切换,因此我可以看到复位的发生)main()。 不过、 WDFLAG 中的哪个位 WDCR 寄存器从不置位。  如果 ((SysCtrlRegs.WDCR & 0x0080)!= 0)  绝不会变为 true、则看门狗测试始终会失败。

在调试期间检查时、WDCR 值始终为0x0046。 即使我明确写SysCtrlRegs.WDCR = 0x002E;,读回它仍然显示0x0046.

下面是我的代码

void CPU_EnableWatchDog (void)

// WDPS(预分频):110 (512/32)
// WDCHK(第 3-5 位):101.
// WDDIS(位 6):0(启用看门狗)
// WDFLAG(位 7):0(忽略写入 0)

EALLOW;
SysCtrlRegs.WDCR = 0x002E;
EDIS;
}

void cpu_configurewatchdog()

// WDENINT = 0 μ s 复位→
// WDOVERRIDE = 1→允许 WDDIS 更改
EALLOW;
SysCtrlRegs.SCSR = 0x0005;
EDIS;
}

静态 UINT8 bit_pbitWDTTest (void)

UINT8 WDTTestPassed = 0;

//检查上次复位是否是 WDT 导致的
if ((SysCtrlRegs.WDCR & 0x0080)!= 0)// WDFLAG

WDTTestPassed = 1;
}
暴露

while (1)

GpioDataRegs.GPBSET.bit.GPIO33 = 1;// LED
}
}

返回 WDTTestPassed;
}

这里的问题是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    我已经邀请了看门狗专家、他们应该会尽快回复您。

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我能够运行看门狗示例和复位模式、可以看到复位后 WDCR 为 0x80。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    我不知道为什么我无法在 WDCR 中读取 0x80!。 您能分享您的测试代码吗? 对写入/读取 WDCR 是否有任何限制? 我在写入 WDCR 之前使用 EALLOW。

    在调试期间检查时、WDCR 值始终为 0x0046。 即使我明确写 SysCtrlRegs.WDCR = 0x002E;,读回它仍然显示 0x0046.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    如前所述、我以 C2000WARE 中的看门狗为例、修改/注释掉了代码、以便将 WD 保持在复位模式而不是中断模式。

    示例 c200ware 路径 — C2000Ware_xx\device_support\F2803x\examples\c28\watchdog

    谢谢