Hi, Kerry:
I checked the sai_edma_transfer project settings compare to my maestro_record settings.
Seems I already set all settings.
I checked it dose call streamer_pcm_open()->SAI_TransferTxCreateHandleEDMA(DEMO_SAI3,... )
then call streamer_pcm_setparams()
final it call streamer_pcm_write(), but it lock on below wait semaphore and no saiTxCallback()
/* Wait for the previous transfer to finish */
if (xSemaphoreTake(pcm->semaphoreTX, portMAX_DELAY) != pdTRUE)
Does it look like my EDMA settings still not right?
would you please take a look for my settings.
I can't measure data signal on IOMUXC_GPIO_SD_B1_01_SAI3_TX_DATA,
I guess EDMA do not write data to sai3 tx data pin.
Bye the way, would you please confirm these setting is right or not.
1. pin mux
I follow the SAI1 settings, change to SAI3
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B1_04_SAI3_MCLK, 1U);
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B1_01_SAI3_TX_DATA, 1U);
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B1_03_SAI3_TX_BCLK, 1U);
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B1_02_SAI3_TX_SYNC,1U);
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_04_SAI3_MCLK,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_01_SAI3_TX_DATA,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_03_SAI3_TX_BCLK,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_02_SAI3_TX_SYNC,0x10B0u);
2.Could enable sai1 and sai3 at the same time ?
SAI_Init(DEMO_SAI);
SAI_Init(DEMO_SAI3);
3. Define.
/* SAI instance and clock */
#define DEMO_CODEC_WM8960
#define DEMO_SAI SAI1
#define DEMO_SAI_CHANNEL (0)
#define DEMO_SAI_BITWIDTH (kSAI_WordWidth16bits)
#define DEMO_SAI_IRQ SAI1_IRQn
#define SAI_UserIRQHandler SAI1_IRQHandler
#define DEMO_CHANNEL_NUM 2
#define DEMO_CODEC_CHANNEL kCODEC_PlayChannelHeadphoneLeft | kCODEC_PlayChannelHeadphoneRight
//Speaker TX SAI3
#define DEMO_SAI3 SAI3
#define DEMO_SAI3_CHANNEL (0) //0
#define DEMO_SAI3_IRQ SAI3_TX_IRQn
#define SAI3_UserIRQHandler SAI3_TX_IRQHandler
/* IRQ */
#define DEMO_SAI_TX_IRQ SAI3_TX_IRQn
#define DEMO_SAI_RX_IRQ SAI1_IRQn
#define DEMO_SAI3_TX_IRQ
/* DMA */
#define DEMO_DMA DMA0
#define DEMO_DMAMUX DMAMUX
#define DEMO_TX_CHANNEL (0U) //(0U)
#define DEMO_RX_CHANNEL (1U) //1
#define DEMO_SAI_TX_SOURCE kDmaRequestMuxSai3Tx
#define DEMO_SAI_RX_SOURCE kDmaRequestMuxSai1Rx