|
播放速率,声道,数据长度如何配置
pll_config_t audio_pll_config = {
.desiredRate = 24576000U, .inputRate = 12000000U,
};
pll_setup_t audio_pll_setup;
CLOCK_EnableClock(kCLOCK_Iocon);
/* Initialize AUDIO PLL clock */
CLOCK_SetupAudioPLLData(&audio_pll_config, &audio_pll_setup);
audio_pll_setup.flags = PLL_SETUPFLAG_POWERUP | PLL_SETUPFLAG_WAITLOCK;
CLOCK_SetupAudioPLLPrec(&audio_pll_setup, audio_pll_setup.flags);
/* I2S clocks */
CLOCK_AttachClk(kAUDIO_PLL_to_FLEXCOMM6);
/* Attach AUDIO PLL clock to MCLK for I2S, no divider */
CLOCK_AttachClk(kAUDIO_PLL_to_MCLK);
SYSCON->MCLKDIV = SYSCON_MCLKDIV_DIV(0U);
SYSCON->MCLKIO = 1U;
/* reset FLEXCOMM for I2S */
RESET_PeripheralReset(kFC6_RST_SHIFT_RSTn);
/* Enable interrupts for I2S */
EnableIRQ(FLEXCOMM6_IRQn);
/*
* masterSlave = kI2S_MasterSlaveNormalMaster;
* mode = kI2S_ModeI2sClassic;
* rightLow = false;
* leftJust = false;
* pdmData = false;
* sckPol = false;
* wsPol = false;
* divider = 1;
* oneChannel = false;
* dataLength = 16;
* frameLength = 32;
* position = 0;
* watermark = 4;
* txEmptyZero = true;
* pack48 = false;
*/
I2S_TxGetDefaultConfig(&s_TxConfig);
s_TxConfig.divider = I2S_CLOCK_DIVIDER;
I2S_TxInit(PT8211_I2S_TX, &s_TxConfig);
DMA_Init(PT8211_DMA);
DMA_EnableChannel(PT8211_DMA, PT8211_I2S_TX_CHANNEL);
DMA_SetChannelPriority(PT8211_DMA, PT8211_I2S_TX_CHANNEL, kDMA_ChannelPriority3);
DMA_CreateHandle(&s_DmaTxHandle, PT8211_DMA, PT8211_I2S_TX_CHANNEL);
|
|