您好!
我通过 CC3200 ind DMA Ping Pong 模式上的 I2S 接口从 SD 卡播放.WAV 文件。
为了延长电池使用寿命、我现在必须在没有音频播放时禁用 I2S、
因为放大器将进入睡眠模式。
当 I2S 首次初始化且 WAV 文件播放时、无论音频流持续多长时间、一切都能正常工作。
但当 I2S 再次被禁用并使能时、TH E SOUND 有很多失真、例如滴答噪声。
我发送的数据与禁用 I2S 之前的数据相同。
初始时、我通过以下方式激活 I2S 功能:
MAP_PRCMPeripheralClkEnable (PRCM_I2S、PRCM_RUN_MODE_CLK);//启用外设时钟 MAP_PRCMPeripheralReset (PRCM_I2S); UDMAChannelSelect (UDMA_CH5_I2S_TX、NULL);//初始化 I2S 的 UDMA
这是我用于启用 I2S 的代码:
HWPinMapping::SetI2SClk (此-> ClkPin); HWPinMapping::SetI2SSX (此-> SXPin); HWPinMapping::SetI2STXData (此->数据引脚); MAP_I2SIntRegister (I2S_base、此->中断调度程序); MAP_I2SIntEnable (I2S_base、I2S_INT_XDATA); MAP_I2SSerializerConfig (I2S_base、I2S_DATA_LINE_0、I2S_SER_MODE_TX、 I2S_INACT_LOW_LEVEL); MAP_I2STxFIFOEnable (I2S_BASE、16、1); MAP_PRCMI2SClockFreqSet (此->位时钟); MAP_I2SConfigSetExpClk (I2S_base、此->位时钟、此->位时钟、I2S_SLOT_SIZE_16 | I2S_PORT_DMA); I2SIntClear (I2S_BASE、 I2S_INT_XDATA); MAP_I2SEnable (I2S_BASE、I2S_MODE_TX_ONLY);
此代码用于禁用 I2S
MAP_I2SDisable (I2S_base); MAP_I2SIntDisable (I2S_base、I2S_INT_XDATA); MAP_I2SIntUnregister (I2S_base); MAP_I2SIntClear (I2S_base、 I2S_INT_XDATA); MAP_I2STxFIFODisable (I2S_base); UDMAStopTransfer (UDMA_CH5_I2S_TX | UDMA_PRI_SELECT); UDMAStopTransfer (UDMA_CH5_I2S_TX | UDMA_ALT_SELECT); HWPinMapping:::SetClkPin (此) HWPinMapping::SetPulldown (此-> SXPin); HWPinMapping::SetPulldown (此-> DataPin);
我已经尝试了所有我想到的东西、但无法解决...
启用或禁用 I2S 是否存在任何已知问题、或者在启用/禁用后是否必须清除某个寄存器?
我还尝试了 MAP_PRCMPeripheralReset (PRCM_I2S);但也没有显示任何有效。
此致。