请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3200 主题中讨论的其他器件:TLV320AIC3106
工具/软件:Code Composer Studio
您好!
我的应用需要从音频编解码器 TLV320AIC3106接收和发送数据。 我已经在 CPU 模式下配置了 I2S、并且能够成功地从编解码器读取音频数据、但无法将数据发送到编解码器。 我探测到一个示波器、I2S 数据输出线路中没有信号。 当我使用 I2SDataPut (I2S_base、I2S_STS_XDATA、ulDummy)时、程序会被卡住。 下面是 I2S 初始化代码以及 I2S 处理程序代码和引脚多路复用器配置。 我还在为大家附上原理图、以确保引脚多路复用器配置正确。
void I2SIntHandler (void) { unsigned long ulStatus; //获取中断状态 ulStatus = I2SIntStatus (I2S_base); //检查是否存在发送中断;如果存在、则将下一个数据写入 TX 缓冲区并确认 //中断 if (ulStatus & I2S_STS_XDATA) { I2DataPutNonBlocking (I2S_base、I2S_DATA_LINE_0、ulDummmy);//将 ulDummmy 替换为0x55以查看是否有任何内容、但无结果 I2SIntClear (I2S_base、I2S_STS_XDATA); } //检查是否存在接收中断;如果存在、从 Rx 缓冲区读取数据并确认 //中断 if (ulStatus & I2S_STS_RDATA) { I2DataGetNonBlocking (I2S_base、I2S_DATA_LINE_1、ulDummmy); I2SIntClear (I2S_base、I2S_STS_RDATA); AUDIO_DATA_BUFFER[I2S_handler_index+]=ulDummy; if (I2S_handler_index>=320){//检查320个样本 I2S_handler_index=0; i2sddatarecvdflag=1; } } // 初始化 I2S 外设 */ void AudioCaptureRenderConfigure (unsigned char bitsPerSample, 无符号短比特率、 unsigned char noOfChannels、 unsigned char RxTx、 unsigned char DMA) { unsigned longbitClk; //初始化 McASP // MAP_PRCMPeripheralClkEnable (PRCM_I2S、PRCM_RUN_MODE_CLK); PRCMPeripheralReset (PRCM_I2S); bitClk = bitsPerSample * bitrate * noOfChannels; DMA=1; if (bitsPerSample = 16) { MAP_PRCMI2SClockFreqSet ((bitClk*10));//(bitClk*10);//512000);(I2S_base、(bitClk*10)、bitClk、I2S_SLOT_SIZE_16| MAP_I2SConfigSetExpClk (I2S_base、(bitClk*10)、bitClk、I2S_SLOT_SIZE_16| I2S_PORT_CPU);//(I2S_base、512000、bitClk、I2S_SLOT_SIZE_16| } MAP_I2SIntRegister (I2S_base、I2SIntHandler); MAP_I2SIntEnable (I2S_BASE、I2S_INT_XDATA); MAP_I2SIntEnable (I2S_BASE、I2S_INT_RDATA); IF (RxTx = I2S_MODE_RX_TX) { I2SSerializerConfig (I2S_base、I2S_DATA_LINE_1、I2S_SER_MODE_RX、 I2S_INACT_LOW_LEVEL); } IF (RxTx 和 I2S_MODE_TX) { I2SSerializerConfig (I2S_base、I2S_DATA_LINE_0、I2S_SER_MODE_TX、 I2S_INACT_LOW_LEVEL); } IF (RxTx = I2S_MODE_RX_TX) { MAP_I2SEnable (I2S_base、I2S_MODE_TX_RX_SYNC); } 否则、IF (RxTx 和 I2S_MODE_TX) { MAP_I2SEnable (I2S_base、I2S_MODE_TX_ONLY); } } void PinMuxConfig (void) { //初始化 McASP // MAP_PRCMPeripheralClkEnable (PRCM_I2S、PRCM_RUN_MODE_CLK); PRCMPeripheralReset (PRCM_I2S); MAP_PinTypeI2S (PIN_64、PIN_MODE_7);//PIN_MODE_7 MAP_PinTypeI2S (PIN_62、PIN_MODE_13); MAP_PinTypeI2S (PIN_63、PIN_MODE_7); MAP_PinTypeI2S (PIN_50、PIN_MODE_6); }
谢谢、此致、
Vishnu Pradeep
