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.

CCS/TMS320C6748: Multichannel input using EDMA3

Part Number: TMS320C6748

Tool/software: Code Composer Studio

Hi:

        I have  a full array microphone projects that use tms320c6748 ,2 aic3106 and 4 microphones .
Every two microphones are connected to aic3106, The i2s data is passed through mcasp module axr12 and axr14 to tmsc6748. The both 3106 work fine.
C6748 prvide mclk,bclk and frame clock to 2 codecs. I use EDMA to receive data on the bus.
If active one 3106, 6748 can receive data from microphone. But when  activate two 3106  at the same time, C6748 can no longer receive any interrupt.

        Can you provide a copy of edma and mcasp code for my reference?

  • Part Number: TMS320C6748

    Hi team,

    The customer has a full array microphone projects that use tmsc3206748 ,2 aic3106 and 4 microphones .
    Every two microphones are connected to aic3106, The i2s data is passed through axr12 and axr14 to tmsc6748. The both 3106 work fine.
    C6748 prvide mclk,bclk and frame clock to 2 codecs. The customer  use EDMA to receive data on the bus.
    If active one 3106, 6748 can receive data from microphone. But when  activate two 3106  at the same time, C6748 can no longer receive any interrupt.
    The rovrn bit in RSTAT register set to 1, please help to analyze.

  • Hi,

    Which Processor SDK RTOS version are you using?

    Best Regards,
    Yordan
  • I don't use rtos to config mcasp and EDMA module.All the code is based on starterWare .
    It works fine when I active one 3106 to conected 2 mics.I think i some mistakes when configuring a C6748 McASP + DMA multi-channel output.
  • Hi,

    Have you checked the examples in Processor SDK RTOS:
    www.ti.com/.../processor-sdk-c6748

    Best Regards,
    Yordan
  • I did not checked that examples,thanks.
  • Taoyu,

    Since AXR12 and AXR14 are both on McASP0, when both are used they must be read at the same time. When you receive an event from McASP0, the DMA channel must read the data for both channels from that one event; in other words, the DMA channel must read two samples and save those samples into the separate buffers that you use.

    Only one DMA channel will be used whether you are reading 1 or 2 McASP receive channels.

    Regards,
    RandyP
  • Thanks,What you said was right.
    I changed edma configuration like this:
    struct EDMA3CCPaRAMEntry const rxDefaultPar =
    {
    (unsigned int)(EDMA3CC_OPT_SAM | OPT_FIFO_WIDTH), // Opt
    (unsigned int)SOC_MCASP_0_DATA_REGS, // src addr
    (unsigned short)(BYTES_PER_SAMPLE*2), // aCnt
    (unsigned short)(1), // bCnt
    (unsigned int)rxBuf0, // dest addr
    (short) (0), // bIdx
    (short)(BYTES_PER_SAMPLE), // bIdx
    (unsigned short)(PAR_RX_START * SIZE_PARAMSET), // LINK paRAM
    (unsigned short)(0), // bCnt reload
    (short)(0), // cIdx
    (short)(0), // cIdx
    (unsigned short)1 // cCnt
    };

    I change " (unsigned short)(BYTES_PER_SAMPLE*2), // aCnt to
    (unsigned short)(BYTES_PER_SAMPLE*4), // aCnt "
    Now I can receive data from mic.
  • Taoyu,

    Thank you for letting us know you got it working. Great job!

    FYI, the SAM and DAM fields should always be 0 on the C674x devices.

    Regards,
    RandyP