Other Parts Discussed in Thread: C2000WARE
器件型号: TMS320F280038C-Q1
主题: C2000WARE 中讨论的其他器件
您好、
背景信息:我正在控制一个功率级、还在我的 C2000 上的应用板上实现了 CAN 和 UART 通信。 我的系统在正常运行时按预期工作。 我有每 1 毫秒、10 毫秒和 100 毫秒调用的后台任务。 我打开了看门狗、并在每项任务结束后提供它。
我发现一种情况、我的 MCU 出现卡滞并停止发送 CAN 消息。 我调试并发现了一些发现。 有时会实现 WD 复位、但有时不会发生复位、如我在下文中所述。
故障模式即时 :断开 USB(RS485 至 USB 转换器)。 它连接到 MCU 的 UART 引脚。 想象一下、我有一台 PC 并使用 USB 端口。 RS485 转 USB 转换器、还有转换器 RS485 转 RS422 的电路板。 我使用 RS422 线路来与 MCU 上的 UART TX-RX 引脚进行通信。
调试时、我找到了以下寄存器组。
正常运行模式:
故障情况:
我的 MCU 进入未定义模式。 我的 CAN 通信中断。 如果我将转换器重新插入 USB 端口、则无法再与 PC 通信。
XRSN 引脚在这种失效模式下不会变低... 这意味着、它不会进入看门狗复位模式。 它在计数时移动。
WDCNTR:一次又一次地增加和减少、但我的软件无法正常工作。
下面的一个,当我的 WD 可以实现去重置。
我的看门狗内部如下所示;我在我的任务中喂我的看门狗。
void InitWDT(void)
{
SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET);
// 10us*4096*8*256=419ms
SysCtl_setWatchdogPredivider(SYSCTL_WD_PREDIV_2048);
SysCtl_setWatchdogPrescaler(SYSCTL_WD_PRESCALE_8);
SysCtl_serviceWatchdog();
SysCtl_enableWatchdog();
SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET);
}
您能帮助我确定应用的情况吗?
您能帮助我找到根本原因吗?


