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.

[参考译文] TMS570LS3137-EP:DCAN 在具有硬件掩码的 FIFO 模式下使用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1158148/tms570ls3137-ep-dcan-use-in-fifo-mode-with-hw-masks

器件型号:TMS570LS3137-EP
主题中讨论的其他器件:HALCOGENTMS570LC4357

你(们)好

我很难理解在将控制器与 Rx FIFO 搭配使用时如何利用硬件掩码来过滤 CAN 消息。

请注意、我在项目中使用的是 Autosar MCAL、但我不确定它如何与 HALCOGEN 配合使用。

下面是我在 DCAN0上的当前设置:

1个 RX 邮箱,在 MCAL 中声明为基本邮箱,有8条信息

-56个 TX MAIbox 配置为满  

ECU 连接总线上循环的 CAN 消息的所有 ID 都是标准的(11位长)。

当对 ECU 必须接收的 ID 值进行或运算时、等于0x7F7

邮箱的设置如下:

CAN_MailboxType CANConfigSet_0_CanHardwareObject_0 =

1U、/* CanHandleType 0=Full、1=Basic */
0U、/* CanIdType 0=标准1=扩展2=混合*/

0x7FF、//832U、/*扩展 ID 值将设置 MSB */

0U、/* CanObjectId -保留句柄 ID、以便 CAN 用户对指定对象句柄执行 IO *
1U、//硬件对象索引,FIFO*/中的第一个对象
8U、/*=1 =>单个对象、否则 FIFO 从开始 *
0U、/* CanObjectType -邮箱方向、0= Rx 或1= Tx*/

false,/* CanTriggerTransmitEnable -不使用此参数*/
&CANConfigSet_0_CANcontroller_0、/*控制器*/

0U、/* CanHwFilterCode -此参数未使用*/
0x7F7、/* CanHwFilterMask *
8U /*邮箱的长度*/
};

如果掩码设置为0、则接收所有消息。

屏蔽设置为0x7F7时 、不会接收到列表中的任何消息、但会接收到 ID 为0x7F7的虚拟消息。

当掩码设置为列表中的某个 ID 时、仅接收具有此 ID 的消息。  

邮箱的运行方式类似于"完整"邮箱类型。

我需要能够滤除一些流量、因为我的 FIFO 大小不足以包含每个处理循环期间接收到的所有消息。

其中一些消息需要被清除、它们会被丢弃、从而导致问题。

提前感谢您的帮助。

此致

SEB

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

    您好、SEb、

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

    在读取每个邮箱时、必须检查 NewDat 位。 如果 NewDat = 0、您需要跳过此邮箱。

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

    DCAN FIFO 中存在硬件错误、请参阅 TMS570LC4357勘误表中的 DCAN #27。 此错误也适用于 LS3137器件。

    DCAN 27在 DCAN FIFO 模式期间、接收到的消息可能会在 FIFO 缓冲区中按顺序放置

    严重程度:3-中等

    预期行为:在 DCAN FIFO 模式下、具有相同仲裁和屏蔽 ID 的接收报文应按照接收顺序放置在 FIFO 中。 然后、CPU 将通过 IF1/IF2接口寄存器从 FIFO 中检索接收到的消息。

    问题:某些消息可能会按照接收顺序放在 FIFO 中。 如果 消息的顺序对于应用程序的处理至关重要、那么这种行为将阻止 DCAN FIFO 模式的正确使用。

    条件:DCAN 以 FIFO 模式运行并使用 CPU 读取数据。

    含义:应用程序无法可靠地使用 DCAN FIFO 模式。

    解决方法:使用 DMA 通过 IF3寄存器读出 FIFO。 每次在 FIFO 中接收到消息时、数据也会被复制到 IF3寄存器中、并向 DMA 模块发出 DMA 请求以读出数据。

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

    你(们)好  

    好的、我错过了这个勘误表。 感谢您的反馈。

    下一个问题是如何使用 Autosar MCAL 设置 DMA?

    您是否有相关应用手册来提供帮助?

    这是否可以克服64个报文对象/ CAN 控制器的限制?

    此致

    SEB

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

    您好、SEb、

    据了解、在 MCAL 驱动程序中、CAN TX/RX 不支持 DMA。 我没有这样做的应用手册。