iMXR1176 SDK 25.09.00 Manifest 3.15.0
Goal
I am acquiring data from an LTC2164 16-bit ADC on an i.MX RT1176. The data path is:
LTC2164 (full-rate CMOS output) → FlexIO2 (parallel RX) → eDMA → external SDRAM
Hardware setup
Software setup
Problem
At 100 MSPS, 16384 samples should take 163.84 µs. Measuring the time between two consecutive DMA interrupts (GPIO toggle + scope), I consistently get 338 µs, i.e. a factor of ~2.06.
This corresponds to an effective sustained rate of about 48 MSPS, which suggests the bottleneck is on the FlexIO side rather than the ADC or the SDRAM.
Questions
Any guidance on the maximum realistic sustained throughput of FlexIO + eDMA on this part would be very helpful, since this determines whether I need to move to a different peripheral or an external FIFO.
Thanks in advance.
Hello, thank you for your reply. I was indeed able to achieve the desired performance, but only by exceeding the maximum recommended clock frequency for the Flexio peripheral; specifically, instead of configuring the clock at 120 MHz, a clock speed greater than 200 MHz is required to achieve 100 MSps acquisition, whereas a 120 MHz configuration results in missed clock edges. The problem is that, even though it works at 200 MHz (despite the Reference Manual specifying a 120 MHz maximum), I have no guarantee of reliable operation under varying temperature conditions or across different production batches.
Hello @azed38,
Please keep in mind that when an external pin is used as the clock source, a small synchronization latency is introduced. According to Section 67.3.3.2 of the RM, this latency can range from 0.5 to 1.5 FlexIO clock cycles:
Habib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.png
Regarding the maximum throughput achievable with FlexIO and DMA, there is not a performance test for the FlexIO and DMA. However, you may find the AN12686 useful, as it demonstrates a parallel communication implementation using FlexIO and DMA, this may provide guidance relevant to your use case.
BR
Habib
Hello @azed38,
I noticed that you are already receiving support through another channel regarding this topic, so the support will continue there to keep all communication centralized. I would only like to add that operating FlexIO beyond its maximum frequency specifications could cause unexpected behaviors affecting your end application. Based on the information provided in Table 15-4 "Clock Roots" of the RM, I recommend using a maximum frequency of 120 MHz.
BR
Habib