For a future project I'd like to use the ADS8598S from Texas Instruments, which is a "higher speed" 8 Channel simultanously sampling ADC with 18 Bits and a max. Sample rate of 200 kSPS per Channel. Until now, I just used low speed devices like DACs running at 5 or 10 kHz or ADCs with Sample Rates up to 20 kHz together with STM32F4, F7 or G4 MCUs. However, I never used something really fast with a high(er) channel count. So I am wondering "how to I get this amount of data into a Microcontroller?".
The whole DAQ chain would be: sample the voltages with the ADC, transfer it into a Microcontroller / Microprocessor, convert the data into voltages, eventually scale and calibrate the voltages and send it out via high speed USB or Ethernet (e.g. 100 Mbit Ethernet).
That’s the plan, but it has a lot of issues: When I run that ADC at the maximum sample Rate of 200 kS per channel, I get (at least) 18 x 200k x 8 = 28.8 MBit per second of Data, if I would use the SPI interface. But that is no option anyway, because the SPI on the ADC only supports SPI clock rates up to 20 MHz. This means: I have to use the parallel output, if I want to use the full sample rate and here the trouble starts. Let’s assume I use a STM32H7 MCU with 550 MHz Master Clock, I had to set up a Timer generating a clock with a decent speed (> 1 MHz) and an interrupt to read the GPIO lines. Most probably even such a fast MCU would be completely busy with this job, leaving no room for other tasks like scaling and data transfer. Overall that sounds like a bad idea to me – even without almost no know how in this area.
The STM32H7 has OctoSPI, which – theoretically – would fit to the “parallel Byte” output of the ADC. But I could not find any application notes or application examples using the OctoSPI in that way. Furthermore OctoSPI seems to be more or less be designed for connections to Flash memory.
So the question is: Generally, which architecture is used to approach such a task? Connect the ADC to a DSP, which shifts the data into a (shared) RAM and use a MCU to read the data from the RAM (e.g. OctoSPI via DMA), process them and send them out? Something like that?
I have no idea, so any recommendation, how I can get into this topic, or any general advice how to setup such a system would be highly appreciated!