2023-05-22 01:39 PM
Hello,
I am planning to use the STM32H7A3ZI for a personal project and want to achieve the highest speed possible with an external ADC while storing at least 16 million samples in an external memory. In the tenths or hundreds of MSPS range, ADCs tend to have Parallel interface. The memory can be connected to the SRAM or Octal-SPI ports. Either way, it can be connected to DMA. The problema is that the ADC outputs will be connected to individual inputs, and reading each input sequentially and fliping the bit in a 2 byte word to then send it through the DMA will be inefficient and a bottlleneck in the speed limit. Is there a way to do the mapping automatically or any other method that is more direct?
Thank you!
R
2023-05-22 03:07 PM
Can you connect all inputs to one GPIO or 8 to each of two GPIOs and read the GPIO IDR (Input Data Register) once for all or 8 twice for a parallel interface ?
2023-05-22 04:01 PM
That could help, I will use at most 16 bits so I need two sets of 8 contiguous pins from the same port each, hopefully none coincides with the memory interface.
2023-05-22 09:30 PM
If there is a DMA MUX to trigger a memory transfer, coming from the DAC sample data out rate and feeding GPIO, then you'll need 16 bit data well chosen in the STM32 package (no full function pin swap, so this must be well predesigned before getting ironed out in a schematic)
If the device has something like camera interface (DCMI) or FMC (parallel memory interfaces) which sometimes is used in 8 bit parallele motororal or interl LCD drive... turned as input ?
If the application is too niche, maybe have a look at oscilloscopes ASICs as companion chip co-pro to the microcontroller.
2023-05-22 09:59 PM
> In the tens or hundreds of MSPS range
sounds like an FPGA job
2023-05-22 10:09 PM
If you need fastest way, look at PSSI and Flexible external memory controller if fits your ADC interface/protocol. Don't expect to achieve hundreds of MSPS. Tens will be achievable.