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.

[参考译文] TMS320F28035:当通过 CAN 总线发送消息时、传送确认(TA)位未被设定

Guru**** 2387830 points
Other Parts Discussed in Thread: SN65HVD230, TMS320F28335, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1242818/tms320f28035-transmission-acknowledgement-ta-bit-is-not-being-set-when-sending-the-message-over-can-bus

器件型号:TMS320F28035
主题中讨论的其他器件:SN65HVD230TMS320F28335C2000WARE

通过 CAN 总线发送消息时未设置发送确认(TA)位。 我正在使用 www.ti.com/lit/SPRA876中的 TXLOOP_A 项目 、主要代码片段在下面提供。 当我运行程序时、它会卡在 do while 循环中。 好像是在等待 CPU 设置 TA25位、而且我们在 F28035控制器的 TX 引脚上找不到数据等任何信号。 我知道 CAN 总线必须至少有两个节点才能由接收器节点发出确认。 在此上下文中请帮助我,我正在使用 Code Composer Studio v 12.3进行调试。 提前感谢。

/*写入邮箱 RAM 字段*/

ECanaMboxes.MBOX25.MDL.all = 0x55555555;
ECanaMboxes.MBOX25.MDH.all = 0x55555555;

//开始传输
for (I=0;I < TXCOUNT;I++)// TXCOUNT =10000定义为#define TXCOUNT 10000
{
ECanaShadow.CANTRS.all = 0;
ECanaShadow.CANTRS.bit.TRS25 = 1;//为受测邮箱设置 TRS
ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

ECanaShadow.Canta.all = ECanaRegs.Canta.all;
执行{ECanaShadow.Canta.all = ECanaRegs.Canta.all;}//等待 TA25位被设置。
while (ECanaShadow.Canta.bit.TA25 == 0 );

ECanaShadow.Canta.all = 0;
ECanaShadow.CANA.bit.TA25 = 1;//清除 TA5
ECanaRegs.Canta.all = ECanaShadow.Canta.all;

循环计数++;

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

    您尚未提到是否有第二个节点。 如果没有它、代码将永远卡在该循环中。 您是否已查看 SPRA876中的调试提示?

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

    我已经学习了 SPRA876中的调试技巧、并且我使用的是 SN65HVD230 CAN 收发器模块。 我 尝试 观察 F28035的 Tx 引脚上的波形、此时有第二个节点但看不到。 我想知道即使没有第二个节点连接到 CAN 总线、我是否可以在 Tx 引脚上获得波形。

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

    SPRA876示例是经过测试的示例。 请注意、这些示例是为运行频率为150MHz 的 TMS320F28335器件编写的。 但是、如果您注意 SYSCLKOUT 速度的变化和由此引起的对 CANBTC 寄存器的更改、则可以将其轻松地用于任何具有 eCAN 的28x 器件。 对于 F28035、它以60MHz 的频率运行、因此必须相应地调整 CANBTC 值。 您可以从 C:\ti\cc2000\C2000Ware_4_03_00_00\device_support\f2803x\common\source 中的 DSP2803x_eCAN-c 复制时序。

    即使假设位时序错误、您也应该可以看到某个来自 CANTX 引脚的信号。

    我想知道即使没有第二个节点连接到 CAN 总线,我是否可以获得 Tx 引脚上的波形。

    是的、使用收发器、您将能够看到完整的帧。