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.

[参考译文] TMS320F2812:CAN 传输确认寄存器(CANTA)

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1113418/tms320f2812-can-transmission-acknowledge-register-canta

器件型号:TMS320F2812

我想´d 传输确认寄存器(CANTA)是否必须在开始新的传输前被 CPU 清除。

在邮箱0上开始新的传输之前、我的软件不使用中断并执行下面的代码段。

ECanaShady.Canta.all = ECanaRegs.Canta.all;
ECanaShading.Canta.all |= 1;
ECanaRegs.Canta.all = ECanaShady.Canta.all;
操作

ECanaShady.Canta.all = ECanaRegs.Canta.all;
} while (((ECanaShady.Canta.all 和1)=0);

我运行了一个测试、软件被困在"while 循环"中。 在此测试中、CAN 总线上有其他节点、但没有任何节点处于工作状态(确认消息)。

谢谢

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

    如果您不使用中断、您将进行轮询。 在这种情况下、您需要确保在启动下一个传输之前完成之前的传输。 因此、应在 TA 位置位时将其清零。 否则、如何确保之前的传输成功完成。

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

    感谢您的回答。

    我知道、如果软件读取 TA、就会知道 之前的传输没有成功完成。  

    但"while 循环"又如何呢? 为什么软件不会离开它? 这是因为 eCAN 不断重复传输吗?

    谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~ userid="213328" URL" URL"/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1113418/TMS320F2812-ca-transmission 确认寄存器-canta/4126273#4126273)]但"while 循环"又如何? 为什么软件不会离开它? 这是因为 eCAN 不断重复传输吗?[/quot]

    在网络上至少有一个节点发送 ACK 之前、eCAN 将一直重复传输。 当发生这种情况时(并且只有在发生这种情况之后)、发送邮箱的 TA 位将被置位。 我已在 www.ti.com/lit/SPRA876中对此进行了说明。  

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

    在 CAN 中、除非接收成功、否则传输不被视为成功。 当至少有一个节点在没有任何错误的情况下接收到发送帧并将 ACK 位发送给发送器时、接收被视为成功。 希望这能澄清。

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

    好的。 感谢您的帮助。