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.

[参考译文] TMS320F280025:如何在检测到总线关闭时提取按摩数据。

Guru**** 2576215 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1052125/tms320f280025-how-to-withdraw-the-massage-data-when-the-bus-off-is-detected

器件型号:TMS320F280025

各位专家:

请告诉我们如何在 检测到总线关闭时撤回已在发送缓冲区中设置的消息及其发送请求。

客户已经体验了下面的 e2e 线程。
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/962216/tms320f280049-how-to-clear-the-can-sending-buffer
1) 1)它们禁用 了自动重发。 通过这种方法、他们想要撤回的消息数据是在恢复总线关闭并设置自动重传之后发出的。
2) 2)它们还尝试在检测到总线关闭时禁用报文对象。 它根本不起作用。 之前的消息似乎仍然在发送缓冲区中。
 在这个 e2e 线程中,它说“假定消息没有被复制到传输缓冲区”。 换言之、如果按摩已复制到传输缓冲区、是否无法撤回?

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1023850/tms320f280025-how-to-cancel-a-transmission-request
3) 3)尽管它们将 CAN_IF1MCTL 中的 TxRqst 和 CAN_IF1CMD 中的 TXRQST 都设置为0、但它们希望提取的消息数据在总线关闭恢复后发出。

感谢您向我们介绍解决方案。
此致、
Hitoshi

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

    Sugawara-San、您好!

    感谢您指出这两个帖子。  在第一个帖子中、用户希望在总线关闭事件发生时重新发送未发送的消息对象。  一个建议是、一旦检测到总线关闭条件、就会禁用发送失败的消息对象、以便用户可以在总线关闭恢复后手动重新发送该对象。   对于第二个帖子、我认为它不是关于恢复消息对象、而是有关取消传输请求的更多信息。

    我可以想到的另一个建议是、一旦检测到总线关闭、监测寄存器 CAN_TXRQ_21就会关闭。  根据 TRM、报文对象的初始化独立于 Init 位、在总线关闭状态下、Init 位将自动置位。  这意味着在总线关闭状态期间、消息对象内容仍然保持不变。  通过检查 CAN_TXRQ_21寄存器的内容、用户应该能够判断哪个报文对象有一个挂起的 TxRqst。  一旦确定了邮箱编号、用户就可以通过写入相应邮箱(位7:0)的 CAN_IFxCMD 来启动从邮箱到 IFx 寄存器的消息传输、其中 DIR=0 (位23用于从消息 RAM 到 IFx 的传输)。

    此致、

    Joseph

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

    您好、Joseph、
    非常感谢您的及时支持。
    我已经向客户转达了我们的建议。
    如果有任何其他问题、请将其发布到另一个 e2e 线程上。

    此致、
    Hitoshi