请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: MSPM0G3519-Q1
尊敬的 TI:
关于跳过的 MCAN TX 消息的讨论:
wrt: link 、即:MCAN TX 跳过消息。
有人提到:
“只有在成功传输前一帧后、才需要发送下一帧。 在传输之间增加延迟会有所帮助。“
我知道添加延迟可以让前一帧完成传输、当我在 TX 操作之间添加延迟时、我的消息会正确传输。 但是、我想避免使用延迟、而是依靠 传输完成 (TC) 用于了解前一帧何时已完全发送的中断。
我已使用以下配置启用 TC 中断:
DL_MCAN_enableIntr(pCfg->cfg.pRegs, DL_MCAN_INTERRUPT_TC, 1U);
DL_MCAN_selectIntrLine(pCfg->cfg.pRegs, DL_MCAN_INTERRUPT_TC, DL_MCAN_INTR_LINE_NUM_0);
DL_MCAN_enableIntrLine(pCfg->cfg.pRegs, DL_MCAN_INTR_LINE_NUM_0, 1U);
DL_MCAN_clearInterruptStatus(pCfg->cfg.pRegs, DL_MCAN_MSP_INTERRUPT_LINE0);
DL_MCAN_enableInterrupt(pCfg->cfg.pRegs, DL_MCAN_MSP_INTERRUPT_LINE0);
void MCAN0_INST_IRQHandler(void)
{
uint32_t temp = DL_MCAN_getIntrStatus(MCAN0_INST);
dbgPrintf("temp: %x\n", temp);
if(temp & DL_MCAN_INTERRUPT_TC)
{
tempTXCom = 1;
}
dbgPrintf("tempTXCom: %x\n", tempTXCom);
DL_MCAN_clearIntrStatus(MCAN0_INST, DL_MCAN_INTERRUPT_TC, DL_MCAN_INTR_SRC_MCAN_LINE_0);
但我是 未接收到传输完成中断 、尽管如此:
-
连接了多个 CAN 节点
-
总线端接正确
问题 1: 为什么在 CAN 传输之间添加延迟有助于防止消息跳过?
问题 2: 要正确触发 MCAN TC 中断、需要进行哪些其他配置?