Hi,
I have a custom board with a C6713 DSP. The board has two ADS 1278 ADC converters and these connect to the C6713 using the McASP1 device. So, the data stream from one ADC goes to channel 0 of McASP1 and the second ADC goes to channel 1 of McASP1 (note that McASP0 is unused).
To begin board testing I have built a simple application that uses ping-pong buffering via EDMA to store the data from ADC0. The EDMA is driven from McASP event EDMA_CHA_REVT1. In this test only one serializer on the McASP is enabled - the one for channel 0. When a new buffer is full the EDMA interrupt is used to trigger the application to process the data. This application works absolutely fine and I see the ADC input data in the ping-pong buffers and the application is triggered via the interrupt at the correct rate.
For the next test I enabled also the serializer for channel 1 and assumed that the data from both ADCs would now appear in the ping-pong buffers. As an additional check I put a scope on the ADC pins to confirm that both ADCs are being clocked and Fsynced correctly and that they are both outputting a data stream and indeed this is the case.
What happens now with this test is that the application no longer runs. It seems that the interrupt never gets raised. Further, if I do some debug into the ping-pong buffers it seems that only a single data sample gets stored there.
Clearly some additional setup is required to drive this two-channel configuration. This is where I am not clear on some points. For example:
Does the single event EDMA_CHA_REVT1 get raised for any/all of the McASP1 channels or are there separate events for each channel that need to be handled individually?
Do I need to replicate the EDMA channels that handle channel 0 for channel 1 or can one set of ping-pong buffers and EDMA channels handle any number of McASP channels? If this is the case then why does the application hang when I enable the second serializer? What I assume at the moment is that McASP channel 1 has data available but there is nothing there to deal with it and so the whole thing stops pending something reading the data.
The ADC is a multi-channel device. On each Fsync it sends 8 channels worth of data from the 8 analogue inputs and the EDMA stores this in the buffers. Again, for the single ADC test this works fine. For the two ADC configuration how would the data get stored in the buffers? Would it be 8 channels from ADC0 followed by 8 channels from ADC 1 or ADC0-ch0; ADC1-ch0; ADC0-ch1; ADC1-ch1 etc etc - or something different?
Any help to understand these points greatly appreciated.