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.

[参考译文] TMS320F28075:CAN 远程帧问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/613030/tms320f28075-can-remote-frame-issue

器件型号:TMS320F28075

您好、香榭丽舍

我的客户正在将 CanOpen 堆栈移植到 F28075。 它们的接收邮箱设置如下。

CANID = 0x702、标准帧模式。

MSG_OBJ_TYPE_RX_REMOTE 、这意味着此邮箱可以接收远程帧。

代码将检查接收到的帧是否为远程帧。 有一个 PC GUI、USB 转 CAN 工具用于对其进行调试。 如果使用 CANID = 0x702发送远程请求、他们发现只有一次成功发送数据帧。 第二次、PC 可以跳转到由接收标志触发的 ISR、而不是由接收邮箱触发的 ISR。

 由于 CANopen 堆栈、它们无法使用 MSG_obj_type_RxTx_remote。 配置代码和 ISR 如下所示。

e2e.ti.com/.../CAN_5F00_Dispose.c

您是否愿意帮助检查根本原因?

非常感谢。

BR,

年轻

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

    年轻、

               我很遗憾,我不能准确理解问题是什么。 我知道一个标准 MSGID 为0x702的邮箱被配置为接收远程帧、并且在第一次接收远程帧时工作正常、从中断被置为有效的意义上讲。 我不明白"第二次、PC 可以跳转到由接收标志触发的 ISR、而不是由接收邮箱触发的 ISR。" 请澄清。 此外、让客户将代码调整到仍然显示问题的最起码值。 如果传输数据帧而不是远程帧、行为是否会有所不同?

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答、我是客户、本段应描述为"一个将 STD MSGID 为0x702的邮箱配置为接收远程帧、并且在第一次接收远程帧时工作正常、当我收到此远程帧时、 我控制 TMS320F28075以响应具有相同 ID 的数据帧、并且它第一次运行良好。
    但第二次、PC 发送与远程帧相同的 MSGID、TMS320F28075将不会接收远程帧、它只会跳转到由接收标志触发的 ISR、而不是由接收邮箱触发的 ISR。"

    邮箱分配如下:
    1、2、3、4、5 --发送邮箱用作轮询
    6、7、8、9、10 --接收邮箱


    发送数据帧性能良好。
    我将代码剪裁到最下面的最小部分,它有同样的问题。


    1 μ s、TMS320F28075只接收远程帧、并且不响应数据帧、我发现它运行良好
    2、如果 TMS320F28075接收到一个远程帧、并且为了响应一个具有不同 ID 的数据帧、我发现它运行良好
    3 μ s、TMS320F28075接收到一个远程帧、并且为了响应一个具有相同 ID 的数据帧、我发现它只在第一次运行时运行良好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答、我是客户、本段应描述为"一个将 STD MSGID 为0x702的邮箱配置为接收远程帧、并且在第一次接收远程帧时工作正常、当我收到此远程帧时、 我控制 TMS320F28075以响应具有相同 ID 的数据帧、并且它第一次运行良好。

    但第二次、PC 发送与远程帧相同的 MSGID、TMS320F28075将不会接收远程帧、它只会跳转到由接收标志触发的 ISR、而不是由接收邮箱触发的 ISR。"

    邮箱分配如下:

    1、2、3、4、5  --发送邮箱用作轮询

    6、7、8、9、10 --接收邮箱

    发送数据帧性能良好。

    我将代码剪裁到最下面的最小部分,它有同样的问题。

    1 μ s、TMS320F28075只接收远程帧、并且不响应数据帧、我发现它运行良好

    2、如果 TMS320F28075接收到一个远程帧、并且为了响应一个具有不同 ID 的数据帧、我发现它运行良好

    3 μ s、TMS320F28075接收到一个远程帧、并且为了响应一个具有相同 ID 的数据帧、我发现它只在第一次运行时运行良好。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答、我是客户、本段应描述为"一个将 STD MSGID 为0x702的邮箱配置为接收远程帧、并且在第一次接收远程帧时工作正常、当我收到此远程帧时、 我控制 TMS320F28075以响应具有相同 ID 的数据帧、并且它第一次运行良好。
    但第二次、PC 发送与远程帧相同的 MSGID、TMS320F28075将不会接收远程帧、它只会跳转到由接收标志触发的 ISR、而不是由接收邮箱触发的 ISR。"

    邮箱分配如下:
    1、2、3、4、5 --发送邮箱用作轮询
    6、7、8、9、10 --接收邮箱


    发送数据帧性能良好。
    我将代码剪裁到最下面的最小部分,它有同样的问题。


    1 μ s、TMS320F28075只接收远程帧、并且不响应数据帧、我发现它运行良好
    2、如果 TMS320F28075接收到一个远程帧、并且为了响应一个具有不同 ID 的数据帧、我发现它运行良好
    3 μ s、TMS320F28075接收到一个远程帧、并且为了响应一个具有相同 ID 的数据帧、我发现它只在第一次运行时运行良好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Hareesh、
    请按以下方式查找我客户的回复。

    感谢您的回答、我是客户、本段应描述为"一个将 STD MSGID 为0x702的邮箱配置为接收远程帧、并且在第一次接收远程帧时工作正常、当我收到此远程帧时、 我控制 TMS320F28075以响应具有相同 ID 的数据帧、并且它第一次运行良好。
    但第二次、PC 发送与远程帧相同的 MSGID、TMS320F28075将不会接收远程帧、它只会跳转到由接收标志触发的 ISR、而不是由接收邮箱触发的 ISR。"

    邮箱分配如下:
    1、2、3、4、5 --发送邮箱用作轮询
    6、7、8、9、10 --接收邮箱


    发送数据帧性能良好。
    我将代码剪裁到最下面的最小部分,它有同样的问题。


    1 μ s、TMS320F28075只接收远程帧、并且不响应数据帧、我发现它运行良好
    2、如果 TMS320F28075接收到一个远程帧、并且为了响应一个具有不同 ID 的数据帧、我发现它运行良好
    3 μ s、TMS320F28075接收到一个远程帧、并且为了响应一个具有相同 ID 的数据帧、我发现它只在第一次运行时运行良好。

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

    一些问题:
    1.您是否尝试仅使用单个接收邮箱设置进行调试?
    2.当您说"跳转到由接收标志而不是接收邮箱触发的 ISR "时、您指的是错误和状态寄存器中设置的 RxOK?
    3.您在 CAN_IPEN_21中看不到接收邮箱的任何暂挂中断吗? PC 是否收到该消息的 ACK?

    还要验证方案是否为:
    PC 通过 MSGID 0x702向 F28075发送远程消息
    F28075接收远程消息(此 Rx 邮箱的 ID 为0x702??)
    F28075向接收报文 ID (0x702)发送数据报文
    4. PC 用 MSGID 0x702向 F28075发送远程消息
    5. F28075未收到消息

    调试头脑风暴中需要注意/帮助的几个项目:
    1.您要确保数据长度代码必须设置为预期响应消息的长度。
    2、基于 ID 的仲裁优先级不会影响任何传输。
    请注意、即使在代码中消息 IDMask = 0设置为消息、当将消息设置为 MSG_OBJ_TYPE_RX_REMOTE 时、屏蔽将被启用并设置为0x1FFFFFFF (需要匹配的 ID 才能接受消息)。 如果希望掩码为0、则必须指定 MSG_OBJ_USE_ID_FILTER 标志。

    此致
    Chris