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:DCAN FIFO--消息对象适用性

Guru**** 2468220 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1055230/tms570lc4357-dcan-fifo----message-object-applicability

器件型号:TMS570LC4357

这不是重复的问题!

阅读技术参考手册时,它的内容就像 dcan fifo 一样,只适用于“远程帧的接收对象”,而不适用于“数据帧的接收对象”或“传输 Objbects”……

我们非常希望在这里作出一些澄清。

27.7.4远程帧的单个接收对象的配置
图27-11显示了如何初始化远程帧的接收对象。
图27-11. 远程帧的单个接收对象的初始化
MsgVal ARB 数据掩码 EOB Dir NewDat MsgLst RxIE TxIE IntPnd RmtEn TxRqst
1个应用 应用 应用 1 1 0 0应用 0 0 0 0 0
远程帧的接收对象可用于监视 CAN 总线上的远程帧。 。
存储在接收对象中的远程帧不会触发数据帧的发送。 接收
远程帧的对象可以扩展为 FIFO 缓冲区、请参阅第27.7.5节。
UMASK 必须设置为1。 屏蔽位(MSK[28:0]、UMASK、MXtd 和 MDir 位)可以设置为"必须-
匹配”或“无关”,以允许接受具有类似标识符的远程帧组。 目录
在典型应用中、位不应被屏蔽。 有关详细信息、请参阅第27.7.8节。
仲裁位(ID[28:0]和 XTD 位)可由应用程序指定。 它们定义了标识符和
接受的远程帧的类型。 如果屏蔽位的某些位设置为“无关”
仲裁位的相应位将被存储的远程帧的位覆盖。 如果是
使用11位标识符(标准帧)(XTD = 0)、它被编程为 ID[28:18]。 在本例中、ID[17:0]
可以忽略。 当接收到标识符为11位的远程帧时、ID[17:0]将设置为0。
数据长度码(DLC[3:0])可由应用程序给出。 当消息处理器存储 A 时
远程帧、它将存储接收到的数据长度代码。 的数据字节
消息对象将保持不变。
如果 RxIE 位被置位、IntPnd 位将在接收到的远程帧被接受并存储在中时被置位
消息对象。
27.7.5 FIFO 缓冲器的配置
除了 EOB 位、属于 FIFO 缓冲区的接收对象的配置为
与单个接收对象的配置相同。
若要将多个报文对象连接到 FIFO 缓冲区、应使用这些报文对象的标识符和掩码(如果使用)
报文对象必须编程为匹配的值。 这是因为消息的隐式优先级
编号最小的报文对象将是 FIFO 缓冲区的第一个报文对象。
除了最后一个报文对象外、FIFO 缓冲区中所有报文对象的 EOB 位都必须编程为0。
FIFO 缓冲区最后一个报文对象的 EOB 位设置为1、将其配置为结束
块。

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

    您好!

    FIFO 可用于 RX 数据帧和 TX 数据帧。 由于远程帧不包含数据字段、因此 FIFO 不用于远程帧、但用于远程帧的接收对象可以使用 FIFO 缓冲区。

    FIFO 模式允许您接收一组 ID 相同(或在过滤后 ID 相同)的帧、并且仅在最后一个帧进入时向 CPU 生成中断。 设置具有相同标识符和掩码的邮箱块。 例如、如果在此组中需要接收的最大字节为64、则使用相同的标识符和掩码配置8个邮箱。 例如、让我们使用邮箱1-8。 前7个(1-7)将 EOB (缓冲区末尾)设置为0、并将 RxIE (接收中断使能)设置为0。 在第八个邮箱中、将 EOB 设置为1、将 RxIE 设置为1。

    现在、假设其中一个节点需要发送24个字节。 它发送前两个帧 EOB=0、第三个帧 EOB=1。 前两个帧结束在邮箱1和2中、第三个帧结束在邮箱8中并生成一个中断。 在邮箱8的中断例程中、由于您知道它是 FIFO 的末尾、因此您开始从邮箱1读取。 在读取每个邮箱时、必须检查 NewDat 位。 当您单击邮箱3时、NewDat = 0、因此您现在可以跳到邮箱8并从组中读取最后一个帧。