2266979_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2266979_zh-CN

2266979_zh-CN

S32K3 上的 FlexCAN DMA - 中断与 TCD

您好,NXP团队,

我们正在评估S32K3 上的 FlexCAN Rx DMA,希望确认我们的观察结果是否符合预期,或者是否有推荐的方法。

方法 1: 中断基于 DMA 完成 事件
  • DMA 将一个 CAN 帧从 Rx FIFO 复制到 RAM 临时缓冲区,并产生一个中断。
  • 在将数据推送到应用程序循环缓冲区之前,需要一个临时缓冲区。
意见/问题:
  1. 临时存储似乎是必要的,因为 eDMA 不支持循环队列或自动重新Arm。
  2. 我们观察到 RX 信息丢失,偶尔 TX 也会在负载情况下卡住。

对于传统 Rx FIFOER-FIFO,是否有使用 DMA 实现无损耗循环Rx缓冲的推荐方法,或者这是已知的限制?

方法 2:基于 TCD 的 DMA
  • DMA 将原始 FlexCAN 寄存器字(CS/DLC/标志、ID、数据)从 RxFIFO 输出位置(源)复制到 RAM 缓冲区(目标)。
  • 接收的数据不是正常化的 CAN 报文格式。
意见/问题:
  • CPU 仍需要按正确顺序解析消息 ID(STD/EXT)、有效负载长度(源自 DLC)、有效负载字节、FD/BRS 标志和时间戳。
  • FlexCAN DMA 是否只能执行原始传输,而报文规范化必须始终由软件完成?
  • 有没有推荐的方法可以为 DMA 接收到的帧重复使用 RTD 驱动程序解析逻辑?
  • 另一个问题是目的地调制解调器无法处理 CAN FD 帧的循环队列操作。这意味着 TCD 方法中有一个目标模的概念,它有助于在达到一定字节数后封装目标地址。因此,CAN FD 帧字节(每帧 72 字节)的数量未正确与那里的模值对齐。
  • 我们还尝试了另一种调整目的地最后地址寄存器的方法。它适用于单帧,但存在一个问题,即不能正确封装帧数的目标地址,如 20 帧队列。
附加问题
  • 普通的 Rx FIFO 中断相比,使用CAN DMA 中断的优势是什么。

请确认上述观察结果是否都是 S32K3 上 FlexCAN Rx DMA 的预期行为?

谢谢...

Re: FlexCAN DMA on S32K3 –Interrupt vs TCD

你好@kapidlitap

类似的主题问题。

https://community.nxp.com/t5/S32K/S32K358-Legacy-RX-Fifo-with-DMA-vs-enhanced-RX-Fifo-DMA/td-p/22664...


我们的 RTD 驱动程序已经为用户完成了 DMA 配置,因此用户无需根据自己的需要重新配置 DMA。

我们不提供中断和 DMA 方法之间的性能比较数据;用户应根据自己的实际使用情况进行配置和测试,以选择最佳方法。


增强型 FIFO+DMA 演示

https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-FlexCAN-Ip-TX-RX-EnhanceRXFIFO-DMA-...

Tags (1)
No ratings
Version history
Last update:
‎12-30-2025 04:26 AM
Updated by: