I'm writing to ask for your expertise on a challenging issue customer is facing with reading data from two ADCs simultaneously on the AM6422. Please see below email:
We've implemented a solution to communicate with two ADS7038Q ADCs in parallel using two SPI peripherals (MCSPI0 and MCSPI1), but the implementation is proving to be unreliable.
Our Current Approach
-
MCSPI0 is configured as the clock master, generating the SPI clock for both devices.
-
MCSPI1 is set up as "data-only" and is intended to use the clock from MCSPI0.
-
A single GPIO pin acts as a shared Chip Select (CS) for both ADCs.

-
Pull the shared GPIO CS pin low.
-
We then initiate the two
MCSPI_transfer
calls. To manage the timing, we use the Init delay parameter from the SysConfig tool specifically when starting the transfer for the slave peripheral (MCSPI1), right before the master (MCSPI0) begins generating the clock. -
We wait for both transfers to complete using semaphores.
-
Finally, we pull the shared GPIO CS pin high.
Init delay
, we cannot overcome the inherent timing jitter of starting two peripheral operations from software. The slight, unpredictable delay is enough to cause misalignment and unreliable data.An alternative solution was suggested that involves using the PRU to "bit-bang" the SPI protocol directly. This method would provide the deterministic, cycle-accurate timing needed to solve our synchronization problem.
For example, could we use an internal event trigger or another peripheral feature to ensure both MCSPI modules start in perfect lockstep?