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.

[参考译文] TMS320F2808:CAN 自动应答行为

Guru**** 2538930 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1054780/tms320f2808-can-auto-answer-behavior

器件型号:TMS320F2808

我遇到了我无法解释的行为。 似乎  MSGID.bit.AAM 只在定义的发送邮箱为16 - 31时工作。

下面的示例运行为我可以向 ID 为5的 F2808发送一条 CAN 消息、并且我获得一个自动应答。 请注意、MBOX2为 Rx、MBOX28为 Tx

但是、如果我 使 MBOX28 Rx 和 MBOX2 Tx 以及"ECANaRegs.CANMD.ALL = 0xFFFFFF0000;"以交换 Rx 和 Tx 方向并使用 CANTA 位.TA2、则不再获得自动应答。 我已经厌倦了其他 MBOX 组合、但只有0 - 15范围内的 Tx 邮箱工作正常。 有什么想法吗?

// Receive
ECanaMboxes.MBOX2.MSGID.bit.STDMSGID = 5;
ECanaMboxes.MBOX2.MSGID.bit.IDE = 0;
ECanaMboxes.MBOX2.MSGID.bit.AAM = 0;
ECanaMboxes.MBOX2.MSGCTRL.bit.DLC = 8;
// Transmit
ECanaMboxes.MBOX28.MSGID.bit.STDMSGID = 5;
ECanaMboxes.MBOX28.MSGID.bit.IDE = 0;
ECanaMboxes.MBOX28.MSGID.bit.AAM = 1;
ECanaMboxes.MBOX28.MDL.all = 0x28282828;
ECanaMboxes.MBOX28.MDH.all = 0x28282828;

/* Enable appropriate Mailboxes in CAN-A*/
ECanaRegs.CANME.all = 0xFFFFFFFF;

/* Configure CAN-A Mailboxes as RX (1) and TX (0)*/
ECanaRegs.CANMD.all = 0x0000FFFF;

while(1)
{
do {ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;} // Wait for TA28 bit to be set..
while(ECanaShadow.CANTA.bit.TA28 == 0);

if(ECanaShadow.CANTA.bit.TA28)
{
ECanaShadow.CANTA.all = 0;
ECanaShadow.CANTA.bit.TA28 = 1; // Clear TA28
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
// Update the mailbox data
ECanaMboxes.MBOX28.MDL.all += 3;
}
}

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

    假设您使用的是自检模式。 是否可以从外部节点传输远程帧? 另外、请在存储器窗口中检查 MSGID 寄存器的值。

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

    运行的代码不在自检模式中(CANMC.STM = 0)。 我在笔记本电脑上运行 InnoMaker USC2Can 工具。 (笔记本电脑在抓取屏幕截图以获取支持信息时挂起。)

    啊!

    在抓取屏幕快照的过程中、我的笔记本电脑挂起、因此我需要重新启动。 重新启动后,问题不再存在。 CAN AA 现在可用于任何发送 mbox 0 - 31。  

    很抱歉出现错误警报。