Hi TI,
I'm using two 8-channel ADCs, each of which are 16-bit and provide a 16-bit parallel interface to read back the conversion data.
I'm using the PRUs on the AM2434 for other purposes, so would like to interface these ADCs with the Cortex R5F core(s) instead.
Below is the high-level approach I'm considering:
- I will use a single clock signal from the Cortex R5F to shift the data out of both ADCs. I'd like to use an SPI clock for this so it can be done in hardware via DMA rather than by bit banging.
- I will map each of the 16-bit parallel signals from each ADC to a 16-bit GPIO port. This will allow me to shift and read a conversion result from each ADC in a single clock/shift at a fixed GPIO port memory location.
- I'd like to use hardware to perform step 2, using a linked list with DMA (or similar), triggered by the SPI clock (rising or falling edge). Ideally I can configure two DMA transfers, each with a fixed source address (the respective 16-bit GPIO port) and a destination address with an 8x 16-bit linked list/ring buffer.
Does the above sound reasonable and is it possible using the GPIO and DMA capabilities of the Cortex R5F? I've read through the GPIO and Block Copy DMA (BCDMA) sections in the TRM and didn't see anything which would suggest this isn't feasible, but I'd very much appreciate your expert insight! If the above is feasible, is there a DMA frequency/throughput limit I need to bear in mind for implementation? If need be I can share the 16-bit parallel bus between the two ADCs and switch between them using a CS line, but I'd rather look at the dual 16-bit parallel read approach first.
Thanks!