project comprising of an AD7768 (8 channel, 24-bit ADC - assuming max sample rate for now)
Per the datasheet (
PDF), that would be 24 bits × 8 channels × 256,000 samples per second = 49,152,000 bits per second, or 6,144,000 bytes per second (for the AD7768BSTZ for example). This is about half the theoretical 100 Base-T Ethernet bandwidth, so both standard 100 Base-T (100 Mbits/s theoretical) and USB 2.0 High Speed (480 Mbits/s theoretical) will work.
The SPI interface uses 32 bits per sample, typically a 32.768 MHz clock, with either each ADC having their own data line (octal data), four ADCs sharing a data line (dual data); with a single data line you cannot reach 256 kS/s on all eight channels because 32×8×256000=65,536,000 > 32,768,000.
(Without converting the incoming 32-bit data to 24-bit, the data rate is 65,536,000 bits per second = 8,192,000 bytes per second.)
I'm only a hobbyist, but I'd definitely first try a
Teensy 4.1 (with
Ethernet kit and
8MB PSRAM), if not for anything else then for quick prototyping and verification (at quite low cost). The
Teensyduino add-on to Arduino makes for very rapid development; I like it even if I don't much like Arduino in general. Teensy 4.x has an NXP i.MX RT1062 Cortex-M7 core, which runs at 600 MHz (without overclocking), and my tests indicate I can easily sustain 200,000,000+ bits per second (three times the bandwidth needed here) from a Teensy 4.x to a Linux computer using only simple USB 2.0 serial (standard USB CDC-ACM, no drivers needed in Linux/Android/MacOS). I'd use three SPI buses, two slave for the data (sharing the clock line, DCLK), and one SPI master for the control, so that data is received via DMA. The 8 MB PSRAM can be used as a cache, in case you use a standard UDP protocol with resend/acknowledge responses (to groups of 1.5k data packets), which would make the receive side on the host computer a standard network application that requires no special privileges.
I personally prefer the High-Speed USB, perhaps isolated from the host using Analog Devices' ADuM3165/3166/4165/4165 or TI ISOUSB211 isolator (with a separate isolated power source for the acquisition side), because I really don't like the existing IP stacks – NativeEthernet or QNEthernet – and the standard USB Serial would well suffice here. In that case,
Teensy 4.0 would suffice. SPI1(3) (CS=0, SCK=27, DI=1 or 26) and SPI2(1) (CS=36, SCK=37, DI=34 or 35; these are pads on the bottom side) would be used for the data, and SPI(4) (CS=10, SCK=13, MOSI/DO=11, MISO/DI=12) would be used for control. Note that if you isolate the AD7768 instead, you can use TI ISO7740 and ISO7741 for the isolation; the 32.768MHz rate is no problem at all.
(Apologies to those who are fed up with Teensy being brought up. In my defence, only the separate bootloader chip and board files are proprietary, and PJRC will even sell preprogrammed
bootloader chips if one wants to make their own variants that can be programmed using Teensyduino+Arduino; and other than the SWD/JTAG pins being taken by that chip, one has full control over the
i.MX RT1062 chip, so even bare metal programming is easily done – since the bootloader is on a separate chip, you don't need a bootloader in your own code. Other members here have used the same boards for testing the i.MX RT106x MCUs before making proper designs of their own.)