I2S 配置初始化 app_i2s_master_init()
初始化 I2S,配置时钟频率、采样率、数据长度、通信协议、传输模式及是否使能 MCLK 。
void app_i2s_master_init(void)
{
/* setup I2S master module. */
I2S_Master_Init_Type i2s_master_init;
i2s_master_init.ClockFreqHz = BOARD_I2S_FREQ;
i2s_master_init.SampleRate = BOARD_I2S_SAMPLE_RATE;
i2s_master_init.DataWidth = BOARD_I2S_DATA_WIDTH;
i2s_master_init.Protocol = BOARD_I2S_PROTOCOL;
i2s_master_init.EnableMCLK = true;
i2s_master_init.Polarity = BOARD_I2S_CPOL;
i2s_master_init.XferMode = I2S_XferMode_TxOnly;
I2S_InitMaster(BOARD_I2S_PORT, &i2s_master_init);
/* enable I2S. */
I2S_Enable(BOARD_I2S_PORT, true);
}
Protocol
通信标准格式选择,可选 I2S Philips 标准、左对齐标准、右对齐标准、 PCM 短帧标准或 PCM 长帧标准,它设定 SPI\_I2S\_I2SCFGR 寄存器 I2SSTD位和 PCMSYNC位的值。一般设置为 I2S Philips 标准即可。
DataWidth
数据格式选择,设定有效数据长度和帧长度,可选标准 16bit 格式、扩展 16bit( 32bit 帧长度) 格式、 24bit 格式和 32bit 格式,它设定 SPI\_I2SCFGR 寄存器 DATLEN 位和CHLEN 位的值。对应 16bit 数据长度可选 16bit 或 32bit 帧长度,其他都是 32bit 帧长度。
EnableMCLK
主时钟输出使能控制,可选使能输出或禁止输出,它设定 SPI_I2SPR 寄存器 MCKOE 位的值。为提高系统性能一般使能主时钟输出。
SampleRate
采样频率设置,标准库提供采样采样频率选择,分别为 4KHz、8kHz、 11kHz、12KHz、16kHz、22kHz、32kHz、44kHz、48kHz、96kHz、192kHz 以及默认 2Hz,它设定 SPI\_I2S\_SPBRG 寄存器的值。
Polarity
空闲状态的 CK 线电平,可选高电平或低电平,它设定 SPI\_I2S\_CCTL 寄存器 CPOL位的值。一般设置为低电平即可。 |