This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

McASP and EDMA3 in a SYSBIOS receive only application

Other Parts Discussed in Thread: SYSBIOS

5545.McASP_v2_0_0.xlsx

Hello TI E2E,

I am trying to utilize the TI EDMA3 (edma3_lld_02_11_05_02) and C6748 PSP (biospsp_03_00_01_00) software packages to develop a receive only SYSBIOS application.

I have two eight channel 18 bit Analog to Digital converters wired to two McASP serializer pins.

I noticed the comments in the receive setup section of the McASP documentation (sprufm1.pdf) stating...

"This discussion assumes that all slot size and word size are multiples of 4 bits".

So if I need to use the McASP with a 10-bit, 14-bit or 18-bit ADC, how do I properly setup the McASP and the EDMA3?

The amount of time the C6748 spends unraveling the bit stream (8 channels times 18-bit sample is 144bits in a frame which I read as 9 channels with 16-bit samples) for each sample is taking a large amount of DSP cycles. To clarify, the 144 bit data stream is passed through the McASP to the EDMA3 and the DSP is performing the rotation, masking and padding required to get the sample in the proper format.

Could I please get some clarification about the comments in the sprufm1.pdf document section 2.4.5.2 Receive Bit Stream Data Alignment?

I want to receive the two 18bit samples off the two AXR pins and put them into two 32bit locations in the issue/reclaim buffers of the McASP PSP driver for the C6748.

I am going to reference sprufn1.pdf section 2.4.1.5 Synchronous Transmit and Receive Operation and the C6748_BIOSPSP_UserGuide.pdf (03.00.01.00) section 7.18 How to Support "New" Data Format.

  1. Added a new enumeration in Mcasp_bufferFormat in mcasp.h - Multiserializer and multislot is the case I am coding
  2. Update the function mcaspValidateBufferConfig() implementated in mcasp.c to recognize this new data format
  3. Update the function mcaspGetIndicesSyncType() implemented in mcasp_edma.c to provide EDMA3 indices required to configure the EDMA3 driver

I made the suggested code modifications to the Mcasp driver as describe in the documentation plus some changes specific to multichannel/multislot operation that can be found in the Mcasp driver source code. I am having some problems to get the rotation, masking and padding to be performed with the existing EDMA3 driver. The header file Mcasp.h that contains a similar buffer format to the one mentioned is Mcasp_BufferFormat_MULTISER_MULTISLOT_SEMI_INTERLEAVED_3 states it cannot be supported. Since my application is receive only I believe it can be done with some clarification for the TI E2E community.

So I would like to use slot size equal to 32 bits and the data size equal to 18 bits. I can tolerate using the DSP to rotate the value from left justified signed value to signed extended right justified value if the EDMA3 cannot handle the data size not equal to a multiple of 4.

Attached is a sample of the input bit stream.

I already saw a post on the E2E forum about 18 bit ADCs but I did not see the solution.

http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/159800.aspx

An example of the data stream is described in attached spreadsheet.

 

Thanks for your support,

Robert Nickell