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.
工具/软件:Code Composer Studio
你(们)好
我正在尝试使用 CAN 将数据从一个 MCU0传输到 MCU1。MCU0-能够传输数据、但 MCU1无法接收相同的数据。 请帮帮我。 我将随附发送器和接收器代码。
此致、
Silpae2e.ti.com/.../transmitter.txte2e.ti.com/.../receiver.txt
是的、Hareesh、我已根据 我的要求修改了 SPRA876中的示例(CAN_TXLOOP、CAN_RXLOOP)、但接收 MCU 仍然无法获取任何数据。 我尝试 使用示波器在发送和接收 MCU 上的收发器的 CANL 和 CANH 引脚上查看数据、当我单独运行发送器代码时、我能够在两端看到一些数据。 一旦我开始运行接收器端代码、数据就会在两个 MCU 收发器端消失。 我要附上修改 后的代码。 您能否检查它在您的终端是否起作用?
此致、
Silpa
Silpa、
您在发送器和接收器上使用不同的 MSGID。 由于您不使用过滤、MSGID 必须完全匹配。
在发送器侧、您将使用:
ECANaMboxs.MBOX25.MSGID.ALL = 0x95555555;
在接收器侧、您将使用:
ECANaMboxs.MBOX0.MSGID.ALL = 0x9555AA0;
这不奏效。 将其更改为:
ECANaMboxs.MBOX0.MSGID.ALL = 0x95555555;
这是我的 app.note SPRA876中的调试检查清单的一部分:开始时不要使用接受屏蔽过滤。 发送相同的 MSGID。 一旦确认总线没有硬件问题、可以在稍后添加滤波。
此外、您将轮询 CANRMP 中的所有位、但仅配置 MBX0。 您的代码将一直等待 CANRMP 成为 FFFFFFFF、这种情况永远不会发生。 修改如下:
/*开始接收*/
while (1)
{
while (ECANaRegs.CANRMP.all!= 0x00000001){}//等待 RMP0被置位。
ECanaRegs.CANRMP.ALL = 0x00000001; //清除 RMP0位
RXCOUNT++;
}
Hareesh、
我已根据您的建议更改了代码、但仍在接收终端邮箱 MBOX0、对于除 MSGID (我们正在分配)之外的所有字段、显示为0x00000000。 我随附了修改后的代码以及 this.e2e.ti.com/.../8311.transmitter.txt
e2e.ti.com/.../4657.receiver.txt
此致、
Silpa