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.

[参考译文] TMS570LC4357:仅用于 TX 远程的 DCAN 消息框配置

Guru**** 2470990 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1051349/tms570lc4357-dcan-message-box-configuration-for-tx-remote-only

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

您好!

 

一直在使用 DCAN。 我知道消息框是双重用途的、用于传输和接收。 如何仅为 TX 远程配置消息框? 我已配置为数据帧的接收对象、并将筛选器(UMASK)标记为未使用。 我不想在消息中接收、只想将消息框用作远程帧的专用发送器。 我操作了 mdir 和 mxtd,但当它与配置的 id 匹配时,我始终会收到一条扩展 id 消息。

我见过

https://www.ti.com/lit/an/sprace5a/

在这方面、它似乎没有太大帮助。 让我认为我要实现的目标是不可能的。

理想情况下、我会将消息框配置为仅接收(我会在我的应用中轮询这些消息框)。 然后、我将拥有专用 TX 远程帧的消息框。 在专用的 TX-远程帧中接收消息是不可取的、因为我必须扩展轮询以容纳潜在接收的消息。 我知道我可以 在...接收消息框和 TX 专用邮箱之间放置一个包罗万象的消息框、但这是一个权变措施。

此致、


Craig

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

    您好、Craig、

    远程帧和数据帧之间的差异

    •  通过仲裁域中的隐性 RTR 位将远程帧显式标记为远程帧
    • 没有数据。 接收器使用远程帧来请求发送器发送 ID 相同的消息。

    2. 传输对象是否用于远程帧?

    否、远程帧存储在接收对象中。 设置接收对象的 TxRqst 位将导致带有接收对象标识符的远程帧的发送。 此远程帧触发另一个 CAN 节点开始发送匹配的数据帧。

    3.远程帧的 DLC 是否与相应(请求的)数据帧的 DLC 相同?

    否,远程帧的 DLC 不会影响所请求数据帧的数据长度代码(DLC)。 请求的 CAN 节点需要具有正确的 DLC。

    4.配置远程帧

    远程帧的报文对象应配置为“接收”(DIR=0)。 请参阅示例文件夹中的示例代码。

    5.配置请求的数据帧以自动响应远程帧

    要接收远程帧、应将报文对象配置为启用 RmtEN 的发送器。 在启用 RmtEN (远程)之前、应填写数据字段。

    当接收到远程帧时、必须考虑匹配报文对象的三种不同配置:

    1. Dir = 1 (方向=发送)、RmtEn = 1、UMask = 1或0。 当接收到匹配的远程帧时、该报文对象的 TxRqst 位将置位。 其余的报文对象保持不变。
    2. Dir = 1 (方向=发送)、RmtEn = 0、UMask = 0。 远程帧被忽略、该报文对象保持不变。
    3. Dir = 1 (方向=发送)、RmtEn = 0、UMask = 1。 远程帧的处理方式与接收到的数据帧类似。 当接收到匹配的远程帧时、该报文对象的 TxRqst 位复位。 移位寄存器中的仲裁位和控制位(标识符+ IDE + RTR + DLC)存储在报文 RAM 中的报文对象中、并且该报文对象的 NewDat 位被置位。 报文对象的数据字节保持不变。

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

    1. Dir = 1 (方向=发送)、RmtEn = 0、UMask = 0。 远程帧被忽略、该报文对象保持不变。

    ^^做到了。 为了后代:  

    按照参考手册27.7.4中的描述、将邮箱配置为远程帧的单个接收对象、但将 UMASK 设置为0。  

    粗体语句位于27.8.8

    这将为您提供一个邮箱、它不会接收任何内容、但允许您传输远程帧。 谢谢 QJ!



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

    附件是一个示例:

    e2e.ti.com/.../TMS570LS0432_5F00_CAN12_5F00_Remote.zip

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

    回顾一下、我确实对 HALCOGEN 配置有一些疑问。

    CAN_TX 被启用
    RTR 被启用

    -配置为在匹配远程响应时传输 OJBECT、传输数据消息(不存储匹配的消息)

    CAN_TX 被启用
    RTR 被禁用

    -传输数据消息和接收远程消息(存储匹配的消息、因此可由用户/CPU 读取)

    CAN_RX 被启用
    RTR 被启用

    -配置为接收对象-接收数据消息、发送远程消息

    如何配置接收远程消息? 技术参考手册中概述的缓冲器类型项目。 这需要将消息配置为 DIR = 1 (发送)、但这种传输到 Halcogen 的方式不清楚。

    也许:
    CAN_RX 被启用   (如果它改变了 Dir 位接收、这将不起作用)
    RTR 被禁用

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

    在我的示例中、DCAN1从 msgbox1 (ID=0x123)和 msgbox2 (ID=0x985)传输2个远程帧。 远程对象是 RX。 DCAN2 msg box1和 msg2接收远程帧并发送请求的数据。 请求数据对象为 TX。

    DCAN1配置:

    DCAN2配置: