请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28379D 主题中讨论的其他器件:TMS320F28377D
工具与软件:
尊敬的 TI 您好:
我有一位客户要求我调查他们的产品。 它们使用 TMS320F28377D 、并且似乎正在进行重置、它们无法通过 CAN 检测到重置。
我连接了 A JTAG 探针 来监控代码执行、我注意到了 eCAP 计数器不超过1000 、即使它是计时的 200 MHz 这让我怀疑 A 硬复位 .
我开发了一个代码来监控此行为、但由于发生了复位、我不确定是否成功捕获了它。 下面是我开发的代码:
#pragma DATA_SECTION(por_count, ".TI.ramfunc");
#pragma DATA_SECTION(xrsn_count, ".TI.ramfunc");
#pragma DATA_SECTION(wdrsn_count, ".TI.ramfunc");
#pragma DATA_SECTION(nmiwdrsn_count, ".TI.ramfunc");
#pragma DATA_SECTION(hwbistn_count, ".TI.ramfunc");
#pragma DATA_SECTION(hibresetn_count, ".TI.ramfunc");
#pragma DATA_SECTION(sccresetn_count, ".TI.ramfunc");
volatile Uint16 por_count = 0;
volatile Uint16 xrsn_count = 0;
volatile Uint16 wdrsn_count = 0;
volatile Uint16 nmiwdrsn_count = 0;
volatile Uint16 hwbistn_count = 0;
volatile Uint16 hibresetn_count = 0;
volatile Uint16 sccresetn_count = 0;
void check_reset_cause(void)
{
Uint16 reset_cause = HWREGH(0x80); // Lire le registre RESC
// Vérifier chaque bit et incrémenter le compteur correspondant
if (reset_cause & 0x0001) por_count++;
if (reset_cause & 0x0002) xrsn_count++;
if (reset_cause & 0x0004) wdrsn_count++;
if (reset_cause & 0x0008) nmiwdrsn_count++;
if (reset_cause & 0x0020) hwbistn_count++;
if (reset_cause & 0x0040) hibresetn_count++;
if (reset_cause & 0x0100) sccresetn_count++;
// Effacer les bits de reset pour éviter les faux positifs
HWREGH(0x80) = reset_cause;
}
我如何在知道 eCAP 计数器不超过1000且我怀疑存在硬复位的情况下可靠地检测 TMS320F28377D 上的复位?
感谢你的评分
