初始化
void AudioI2sOutParamsSet(void)
{
I2SParamCt i2s_set;
i2s_set.IsMasterMode=CFG_RES_I2S_MODE;// 0:master 1:slave
i2s_set.SampleRate=mainAppCt.SampleRate;
i2s_set.I2sFormat=I2S_FORMAT_I2S;
i2s_set.I2sBits=I2S_LENGTH_16BITS;
i2s_set.I2sTxRxEnable=1;
#if (CFG_RES_I2S_PORT == 0)
i2s_set.TxPeripheralID=PERIPHERAL_ID_I2S0_TX;
#else
i2s_set.TxPeripheralID=PERIPHERAL_ID_I2S1_TX;
#endif
i2s_set.TxBuf=(void*)mainAppCt.I2SFIFO;
i2s_set.TxLen=mainAppCt.SamplesPreFrame * 2 * 2 * 2;
#if (CFG_RES_I2S_IO_PORT==0)
//i2s0 group_gpio0
GPIO_PortAModeSet(GPIOA0, 9);// mclk out
GPIO_PortAModeSet(GPIOA1, 6);// lrclk
GPIO_PortAModeSet(GPIOA2, 5);// bclk
GPIO_PortAModeSet(GPIOA3, 7);// dout
GPIO_PortAModeSet(GPIOA4, 1);// din
//i2s0 group_gpio0
#else //lif (CFG_RES_I2S_IO_PORT==1)
//i2s1 group_gpio1
GPIO_PortAModeSet(GPIOA0, 3);//mclk in
//GPIO_PortAModeSet(GPIOA7, 3);//mclk in
GPIO_PortAModeSet(GPIOA8, 1);//lrclk
GPIO_PortAModeSet(GPIOA9, 2);//bclk
GPIO_PortAModeSet(GPIOA10, 4);//do
//GPIO_PortAModeSet(GPIOA11, 2);//di
//i2s1 group_gpio1
#endif
#if (CFG_RES_I2S_PORT == 0)
AudioI2S_Init(I2S0_MODULE, &i2s_set);
#else
AudioI2S_Init(I2S1_MODULE, &i2s_set);
#endif
}
#endif
还需修改下图所示地方
case 3://I2S1 mclk src
memcpy(&TmpData, &buf[1], 2);
TmpData = TmpData > 4? 4 : TmpData;
gCtrlVars.i2s1_mclk_src = TmpData;
GlobalMclkSet();
if((gCtrlVars.i2s1_mclk_src == 3) ||(gCtrlVars.i2s1_mclk_src == 4))
{
#if CFG_I2S1_OUT_EN || CFG_I2S1_IN_EN
Clock_AudioMclkSel(AUDIO_I2S1, GPIO_IN0);
#endif
}
else
{
#if CFG_I2S1_OUT_EN || CFG_I2S1_IN_EN
Clock_AudioMclkSel(AUDIO_I2S1, GPIO_IN0);
#endif
}
break;