<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>S32Kのトピック#S32K388 Enhanced RX FIFO + eDMA: Continuous Circular Buffer Reception Without CPU Interrupts</title>
    <link>https://community.nxp.com/t5/S32K/S32K388-Enhanced-RX-FIFO-eDMA-Continuous-Circular-Buffer/m-p/2411682#M60907</link>
    <description>&lt;P&gt;Hi NXP Support,&lt;/P&gt;&lt;P&gt;I am using an &lt;STRONG&gt;S32K388&lt;/STRONG&gt; with the &lt;STRONG&gt;FlexCAN Enhanced RX FIFO&lt;/STRONG&gt; and RTD. I would like to implement a &lt;STRONG&gt;continuous DMA-based CAN reception without any CPU interrupt&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;My requirements are:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;MCU: &lt;STRONG&gt;S32K388&lt;/STRONG&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;CAN: &lt;STRONG&gt;Classical CAN&lt;/STRONG&gt;, CAN FD disabled&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;CAN payload: &lt;STRONG&gt;8 bytes&lt;/STRONG&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;FlexCAN Enhanced RX FIFO enabled&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;DMA reception enabled&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I need to receive CAN messages with &lt;STRONG&gt;any CAN ID&lt;/STRONG&gt;, without filtering.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I want DMA to automatically transfer every received CAN frame into a &lt;STRONG&gt;RAM software ring buffer&lt;/STRONG&gt;.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I do not want a FlexCAN RX interrupt.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I also do not want a DMA major-loop-complete interrupt.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;DMA should continue running automatically without the CPU having to call FlexCAN_Ip_RxFifo() again.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Ideally, each received FIFO element should trigger a DMA transfer immediately, so I do not want to wait for a large FIFO watermark.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I checked the RTD source code. In FlexCAN_StartRxMessageEnhancedFifoData(), I found that the driver configures DMA approximately as follows:&lt;/P&gt;&lt;PRE&gt;Source address              = Enhanced RX FIFO output
Source transfer size        = 4 bytes
Source offset               = 4 bytes
Destination transfer size   = 4 bytes
Destination offset          = 4 bytes
Minor loop size             = 80 bytes
Major loop count            = num_enhanced_watermark
EnMajorInt                  = TRUE
DisAutoHwRequest            = TRUE&lt;/PRE&gt;&lt;P&gt;I understand that the current RTD implementation performs a finite DMA transfer and then stops, requiring FlexCAN_Ip_RxFifo() to be called again.&lt;/P&gt;&lt;P&gt;My question is:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Is it possible on S32K388 to configure the eDMA TCD so that the FlexCAN Enhanced RX FIFO DMA request continuously transfers received FIFO elements into a circular RAM buffer, without any CPU interrupt or software re-arming?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;In particular, can &lt;STRONG&gt;Destination Modulo&lt;/STRONG&gt; and/or another eDMA TCD feature be used to implement this continuous ring buffer?&lt;/P&gt;&lt;P&gt;If this is possible, could you please provide an example configuration or point me to an NXP example/reference implementation?&lt;/P&gt;&lt;P&gt;I am willing to modify the RTD FlexCAN driver or configure the eDMA TCD directly if necessary.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;</description>
    <pubDate>Mon, 07 Sep 2026 09:33:02 GMT</pubDate>
    <dc:creator>zhangyu5454</dc:creator>
    <dc:date>2026-09-07T09:33:02Z</dc:date>
    <item>
      <title>#S32K388 Enhanced RX FIFO + eDMA: Continuous Circular Buffer Reception Without CPU Interrupts</title>
      <link>https://community.nxp.com/t5/S32K/S32K388-Enhanced-RX-FIFO-eDMA-Continuous-Circular-Buffer/m-p/2411682#M60907</link>
      <description>&lt;P&gt;Hi NXP Support,&lt;/P&gt;&lt;P&gt;I am using an &lt;STRONG&gt;S32K388&lt;/STRONG&gt; with the &lt;STRONG&gt;FlexCAN Enhanced RX FIFO&lt;/STRONG&gt; and RTD. I would like to implement a &lt;STRONG&gt;continuous DMA-based CAN reception without any CPU interrupt&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;My requirements are:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;MCU: &lt;STRONG&gt;S32K388&lt;/STRONG&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;CAN: &lt;STRONG&gt;Classical CAN&lt;/STRONG&gt;, CAN FD disabled&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;CAN payload: &lt;STRONG&gt;8 bytes&lt;/STRONG&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;FlexCAN Enhanced RX FIFO enabled&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;DMA reception enabled&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I need to receive CAN messages with &lt;STRONG&gt;any CAN ID&lt;/STRONG&gt;, without filtering.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I want DMA to automatically transfer every received CAN frame into a &lt;STRONG&gt;RAM software ring buffer&lt;/STRONG&gt;.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I do not want a FlexCAN RX interrupt.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;I also do not want a DMA major-loop-complete interrupt.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;DMA should continue running automatically without the CPU having to call FlexCAN_Ip_RxFifo() again.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Ideally, each received FIFO element should trigger a DMA transfer immediately, so I do not want to wait for a large FIFO watermark.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I checked the RTD source code. In FlexCAN_StartRxMessageEnhancedFifoData(), I found that the driver configures DMA approximately as follows:&lt;/P&gt;&lt;PRE&gt;Source address              = Enhanced RX FIFO output
Source transfer size        = 4 bytes
Source offset               = 4 bytes
Destination transfer size   = 4 bytes
Destination offset          = 4 bytes
Minor loop size             = 80 bytes
Major loop count            = num_enhanced_watermark
EnMajorInt                  = TRUE
DisAutoHwRequest            = TRUE&lt;/PRE&gt;&lt;P&gt;I understand that the current RTD implementation performs a finite DMA transfer and then stops, requiring FlexCAN_Ip_RxFifo() to be called again.&lt;/P&gt;&lt;P&gt;My question is:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Is it possible on S32K388 to configure the eDMA TCD so that the FlexCAN Enhanced RX FIFO DMA request continuously transfers received FIFO elements into a circular RAM buffer, without any CPU interrupt or software re-arming?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;In particular, can &lt;STRONG&gt;Destination Modulo&lt;/STRONG&gt; and/or another eDMA TCD feature be used to implement this continuous ring buffer?&lt;/P&gt;&lt;P&gt;If this is possible, could you please provide an example configuration or point me to an NXP example/reference implementation?&lt;/P&gt;&lt;P&gt;I am willing to modify the RTD FlexCAN driver or configure the eDMA TCD directly if necessary.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Mon, 07 Sep 2026 09:33:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K388-Enhanced-RX-FIFO-eDMA-Continuous-Circular-Buffer/m-p/2411682#M60907</guid>
      <dc:creator>zhangyu5454</dc:creator>
      <dc:date>2026-09-07T09:33:02Z</dc:date>
    </item>
    <item>
      <title>Re: #S32K388 Enhanced RX FIFO + eDMA: Continuous Circular Buffer Reception Without CPU Interrupts</title>
      <link>https://community.nxp.com/t5/S32K/S32K388-Enhanced-RX-FIFO-eDMA-Continuous-Circular-Buffer/m-p/2412174#M60941</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/253638"&gt;@zhangyu5454&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;The driver is written in a way that requires FlexCAN_Ip_RxFifo() to be called in order to re-arm reception inside the &lt;SPAN&gt;FLEXCAN_EVENT_DMA_COMPLETE event&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P&gt;It should be possible to have a continuous transfer from DMA to buffer; however, you will need to modify the RTDs or create your own driver.&amp;nbsp;Unfortunately, this is out of our support scope, and if done, verification and functionality should be tested by you.&lt;/P&gt;
&lt;P&gt;You would have to set TCDn_CSR[D_REQ] = 0 (DisAutoHwRequest = FALSE) &amp;amp; TCDn_CSR[INTMAJOR] in order to keep the channel armed and disable interrupts, as well as configure your circular data queue. You can refer to S32K3's DMA Training Presentation, under&amp;nbsp;&lt;A href="https://www.nxp.com/products/S32K3" target="_self"&gt;S32K3 Product Page&lt;/A&gt;&amp;nbsp;and 'Secure Files'.&lt;/P&gt;
&lt;P&gt;Best regards,&lt;BR /&gt;Julián&lt;/P&gt;</description>
      <pubDate>Tue, 08 Sep 2026 23:33:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K388-Enhanced-RX-FIFO-eDMA-Continuous-Circular-Buffer/m-p/2412174#M60941</guid>
      <dc:creator>Julián_AragónM</dc:creator>
      <dc:date>2026-09-08T23:33:07Z</dc:date>
    </item>
  </channel>
</rss>

