香水城 发表于 2013-10-11 11:17 
什么芯片?I2S如何配置?
数据两两相同一般都是左右声道数据相同的原因
谢谢香版主,数据俩俩相同的问题已经查出来是左右声道相同的原因。用的是UDA1380这个片子.i2s配置如下
static void codec_i2s_init(uint32_t sampleRate)
{
int i;
I2S_InitTypeDef I2S_InitStructure;
int num = sizeof(codecs) / sizeof((codecs)[0]);
for (i = 0; i < num; i++)
{
//enable i2s clock
RCC_APB1PeriphClockCmd(codecs.clock.i2sClk, ENABLE);
SPI_I2S_DeInit(codecs.i2sReg);
//set i2s param
I2S_InitStructure.I2S_AudioFreq = sampleRate;
I2S_InitStructure.I2S_Standard = I2S_Standard_Phillips;
I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;
I2S_InitStructure.I2S_CPOL = I2S_CPOL_Low;
if (DMA_DIR_MemoryToPeripheral == codecs.dma.DMA_DIR)
{
I2S_InitStructure.I2S_Mode = I2S_Mode_MasterTx;
}
else
{
I2S_InitStructure.I2S_Mode = I2S_Mode_MasterRx;
//I2S_InitStructure.I2S_Mode =I2S_Mode_SlaveRx;
}
#ifdef CODEC_MCLK_ENABLE
I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Enable;
#else
I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Disable;
#endif
I2S_Init(codecs.i2sReg, &I2S_InitStructure);
}
//CODEC_SWITCH(CODEC_RECORD, ENABLE);
//CODEC_SWITCH(CODEC_PLAY, ENABLE);
}
设置的采样率是8K,这个杂音我能听出来,和我播放的歌曲音调一样,应该不是断流引起的。我把我的采样数据放到另一个项目板子(已经测过播放没问题的)来播放,发现也有杂音,因此肯定是采样数据(录音)有问题,但是不知道是什么问题。
|