STM32F103RE+CS4344使用I2S3输出杂音

2020-01-04 18:58发布

硬件采用STM32F103RE+CS4344,采用I2S3通道master模式,DAM传输方式,播放WAVE文件,无法输出音乐,而是一直都是杂音,目前只播放了44.1K采样率双声道文件

I2S配置

    /* I2S peripheral configuration */
    I2S_InitStructure.I2S_Standard = I2S_Standard_Phillips;
    I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;
    I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Enable;
    I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_44k;
    I2S_InitStructure.I2S_CPOL = I2S_CPOL_Low;
    I2S_InitStructure.I2S_Mode = I2S_Mode_MasterTx;

    I2S_Init(CODEC_I2S_PORT, &I2S_InitStructure);

/* DMA Channel configuration ----------------------------------------------*/
    DMA_Cmd(CODEC_I2S_DMA, DISABLE);
    DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(&(CODEC_I2S_PORT->DR));
    DMA_InitStructure.DMA_MemoryBaseAddr = (u32) addr;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
    DMA_InitStructure.DMA_BufferSize = size;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
    DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
    DMA_Init(CODEC_I2S_DMA, &DMA_InitStructure);

    /* Enable SPI DMA Tx request */
    SPI_I2S_DMACmd(CODEC_I2S_PORT, SPI_I2S_DMAReq_Tx, ENABLE);

    DMA_ITConfig(CODEC_I2S_DMA, DMA_IT_TC, ENABLE);
    DMA_Cmd(CODEC_I2S_DMA, ENABLE);

用示波器测量,LRCK波形正确,单个L或者R下面有16个SCK,每个SCK下面有8个MCLK,并且符合I2S格式,数据在LR边沿后第2个SCK上升沿锁存,播放时间也是对的,但是就是不出正常的音乐声,全是咋音,有没有人遇到过同样的问题?官方也有个IAR开发板电路图也是接的CS4344。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。