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.

OMAP-L138: Issue with McASP data receiving in I2S mode with EDMA. DSP core, without OS.

Part Number: OMAP-L138

Hi,

I have plan to use OMAP-L138 for RADAR data processing. I try to get data from external ADC through McASP in I2S mode. But EDMA tuning for this mode not clear for me. I looked for solution in different docs and StarterWare mcasp source code but it is just magic.

Advise me please EDMA settings for McASP in I2S mode for getting 16-bit data through one or two Rx pin.

ADC data format on the figure below.

Part of the code McASP initialize for.

void mcaspI2SConfig(void)
{
    McASPRxReset(SOC_MCASP_0_CTRL_REGS);
    McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 2, 2);
    McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, 16, 16, MCASP_RX_MODE_DMA);
    McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);

    McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
    McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
    McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
                                 0x00, 0xFF);

    /* Enable the transmitter/receiver slots. I2S uses 2 slots */
    McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, 0x0F);

    McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, 13);
    McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, 14);

    /*
    ** Configure the McASP pins
    ** Input - Frame Sync, Clock and Serializer Rx
    */
    McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
    McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSR \
                                                   | MCASP_PIN_ACLKR \
                                                   | MCASP_PIN_AXR(13) \
                                                   | MCASP_PIN_AXR(14));

    McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
                                            | MCASP_RX_CLKFAIL
                                            | MCASP_RX_SYNCERROR
                                            | MCASP_RX_OVERRUN);
}

Any usefull example of code or advice greatly valuable for me.

Thank you in advance.

Andrey