Crashing Example #1 :
/***** I2S FORMAT STRUCTURE ******/
i2s_data_format.bits = 16;
i2s_data_format.sample_rate = 16000;
i2s_data_format.mclk = 256 * i2s_data_format.sample_rate;
i2s_data_format.mono_streo = kSaiMono;
/***** RECEIVER SETTINGS *****/
i2s_config.bclk_source = kSaiBclkSourceMclkDiv;
i2s_config.channel = 0;
i2s_config.mclk_divide_enable = true;
i2s_config.mclk_source = kSaiMclkSourceSysclk;
i2s_config.protocol = kSaiBusI2SLeft;
i2s_config.slave_master = kSaiMaster;
i2s_config.sync_mode = kSaiModeAsync;
i2s_config.watermark = 8;
/***** LOOP SETUP *****/
i2s_dma_loop_setup.dmaChanNum = 0;
i2s_dma_loop_setup.dmaCh = &dmaCh0;
i2s_dma_loop_setup.type = kEDMAPeripheralToMemory;
i2s_dma_loop_setup.chSource = kDmaRequestMux0I2S0Rx;
fifobase = SAI_HAL_RxGetFifoAddr((uint32_t)I2S0_BASE, 1);
i2s_dma_loop_setup.srcAddr = (uint32_t)fifobase;
i2s_dma_loop_setup.destAddr = (uint32_t)&audio_buffer[0];
i2s_dma_loop_setup.length = sizeof(audio_buffer);
i2s_dma_loop_setup.size = 1;
i2s_dma_loop_setup.watermark = 1;
i2s_dma_loop_setup.period = 1;
i2s_dma_loop_setup.dmaCallBack = spectrum_edma_callback;
..... Send some values to codec over I2C .....
SAI_DRV_RxInit(0, &i2s_config, &i2s_state);
SAI_DRV_RxConfigDataFormat(0, &i2s_data_format);
..... Send some more values to codec over I2C .....
setup_edma_loop(&i2s_dma_loop_setup); // FUNCTION BORROWED FROM EDSPI EXAMPLE...
SAI_HAL_RxSetDmaCmd(I2S0_BASE, kSaiDmaReqFIFORequest ,true);
EDMA_DRV_StartChannel(&dmaCh0);
SAI_DRV_RxStartModule(0);