This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/CC3200:I2S 数据输出问题

Guru**** 2555630 points
Other Parts Discussed in Thread: TLV320AIC3106

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/629295/ccs-cc3200-issue-with-i2s-data-out

器件型号: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Vishnu,

    您是否有 Wi-Fi 音频 BoosterPack 来首先测试您的应用、以便您可以隔离任何潜在的硬件问题?

    此致、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ben、

    否 我没有。 我的电路中的所有其他东西都在工作。 我已经在两个板中测试过这种情况、两个板都有相同的问题。 初始化序列是否有任何问题?

    谢谢、此致
    Vishnu Pradeep
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vishnu、

    我认为初始化序列中没有错误。 您能否检查从 I2SDataPutNonBlocking ()函数调用返回的值?

    谢谢、
    本·M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ben、

    感谢您的回答。 这是硬件和编解码器配置的问题。

    此致、
    Vishnu Pradeep