Hello,
could you please help me solve the issue regarding the configuration of EDMA for McASP peripheral on C6747 DSP (OMAP L137).
The application is a typical (standard) one:
Interfacing stereo ADC and DAC are of higher (24-bit) resolution, thus 32-bit slot of McASP is used.
I'd like to adapt the existing (and working) 3D setup to perform as 2D setup (found such in one OMAP L137 TI-example).
How adapted? By changing the A-dimension to process both L & R samples.
Two drawings are attached to illustrate both concepts, an existing, and an alternative one (latter not workin properly).
Please review them for discussion of indexes.
Existing 3D setup (RX part discussed):
A-dimension processes one channel sample (L i.e. R), B-dimension both channels (L & R), C-dimension processing the block (eight audiosamples).
SOURCE (McASP Port 0 with 2 serializers with consecutive addresses):
BIDX = 0 Peripheral (port), thus unchangable
CIDX = 0 Peripheral (port), thus unchangable
DESTINATION (Memory):
BIDX: Distance between neighbouring elements of the same frame [bytes]
CIDX: Distance between last element in one frame and the 1st element in the next frame [bytes]
ping_c_index = (rcv_ping_R – rcv_ping_L) + sample_size [bytes]
pong_c_index = (rcv_pong_R – rcv_pong_L) + sample_size [bytes]
Both SOURCE and DESTINATION:
ACNT = 4 Array (1st dym.): Four bytes (=32-bit audiosample)
BCNT = 2 Frame (2nd dym.): STEREO (1.AUDIO_L 2.AUDIO_R)
CCNT = 8 Block (3rd dym.): AUDIO_BLOCK_SIZE
This setup works (see attached oscillogram).
Alternative 2D setup (RX part discussed) not working properly:
A-dimension processes both channel samples (L & R), B-dimension the block (eight audiosamples).
SOURCE (McASP Port 0 with 2 serializers with consecutive addresses):
BIDX = 0 Peripheral (port), thus unchangable
CIDX = 0 Peripheral (port), thus unchangable
DESTINATION (Memory):
BIDX: Distance between neighbouring elements of the same frame [bytes]
CIDX: Distance between last element in one frame and the 1st element in the next frame [bytes]
ping_c_index = pong_c_index = 0 (there’s no another frame in the block)
Both SOURCE and DESTINATION:
ACNT = 2*4 Array (1st dym.): 2 x 4 bytes (L&R 32-bit audiosamples)
BCNT = 8 Frame (2nd dym.): AUDIO_BLOCK_SIZE
CCNT = 1 Block (3rd dym.): 1
New setup does not work (see attached oscillogram; 500 Hz signal is distorted, although main harmonic recognizable).
Question:
Do you see anything wrong in the alternative setup from above?
Can it be that I need to setup McASP in a different way in order to be able to setup EDMA this way?
Thanks!
Mladen