TI论坛
直播中

王银喜

7年用户 2397经验值
私信 关注
[问答]

求助,用28335通过AIC23做音频双通道数据收发遇到的疑问求解


  • 拟采用line in方式通过Mcbsp口采集声音,于DRR1和DRR2接收左右通道的数据(各16位),AIC23设为主模式且左右通道更新已打开,右通道设为低电平,数据格式已配置到DSP模式,但对DSP的设置不太清楚导致不能正常接收两通道数据,想请前辈们帮忙指导一下或者能提供一些参考例程,感谢!AIC23与DSP的具体配置如下:

    AIC23寄存器设置:
    /*AIC23寄存器复位*/
    AIC23Write(0x1e,0x0);
    Delay(100);
    /*AIC23节电方式设置,所有部分均所与工作状态*/
    AIC23Write(0x0C,0x02); //mic input关闭
    Delay(100);
    /*AIC23左通路音频调节*/
    // AIC23Write(0x00,0x17);
    AIC23Write(0x01,0x17);
    Delay(100);
    /*AIC23右通路音频调节*/
    // AIC23Write(0x02,0x17);
    AIC23Write(0x03,0x17);
    Delay(100);
    /*AIC23耳机左通路音频调节*/
    AIC23Write(0x05,0xff);
    Delay(100);
    /*AIC23耳机右通路音频调节*/
    AIC23Write(0x07,0xff);
    Delay(100);
    /*AIC23模拟音频的控制DAC使能,ADC输入选择为Line,开旁路08 18*/
    AIC23Write(0x08,0x10); //08 10 line input
    Delay(100);
    /*AIC23的波特率设置,采样率为96K*/
    AIC23Write(0x10,0x1f); //
    Delay(100);
    /*AIC23数字音频通路的控制*/
    AIC23Write(0x0A,0x00);
    Delay(100);
    /*AIC23数字接口的使能*/
    AIC23Write(0x12,0x01);
    Delay(100);
    /*数字音频接口格式设置AIC23为主模式,数据为DSP模式,数据长度32位 53? 5f?*/
    AIC23Write(0x0E,0x5f);
    Delay(100);

    Mcbsp的设置为:
    McbspaRegs.SPCR2.all=0;
    McbspaRegs.SPCR1.all=0;
    McbspaRegs.SPCR1.bit.RJUST=2; //
    McbspaRegs.PCR.all = 0x03;
    McbspaRegs.SPCR1.bit.RINTM=1; //
    McbspaRegs.SPCR2.bit.XINTM=1; //
    // InitMcbspa32bit();
    McbspaRegs.RCR1.bit.RWDLEN1=2; // 16-bit word
    McbspaRegs.XCR1.bit.XWDLEN1=2; // 16-bit word
    McbspaRegs.RCR2.bit.RWDLEN2=2; // 16-bit word
    McbspaRegs.XCR2.bit.XWDLEN2=2; // 16-bit word
    McbspaRegs.SPCR1.bit.RRST = 1; // 发送使能
    McbspaRegs.SPCR2.bit.XRST = 1; //接收使能

回帖(2)

沈会笛

2024-10-18 17:04:36
AIC23设为主模式, 则 DSP 应该为从模式. 
可以开启 FIFO 或 DMA 来接收数据, 以保证数据不会丢失.
举报

h1654155275.5669

2024-10-21 09:08:00
根据您的描述,您正在尝试使用AIC23音频编解码器通过McBSP接口在TMS320F28335 DSP上实现双通道音频数据的接收。以下是一些建议和参考步骤,以帮助您解决问题:

1. 确保AIC23和DSP的时钟设置正确。AIC23需要一个稳定的时钟输入,而DSP也需要正确配置时钟系统。请检查您的硬件设计和软件设置,确保时钟信号正确连接和配置。

2. 配置AIC23的I2C接口。AIC23通过I2C接口与DSP通信。确保I2C接口已正确配置,并且AIC23的I2C地址已正确设置。

3. 配置DSP的McBSP接口。您需要配置McBSP接口以接收来自AIC23的音频数据。这包括设置采样率、数据格式、帧同步等参数。以下是一个基本的McBSP配置示例:

```c
// McBSP初始化
McBSPRegs.SPCR2.bit.GRST = 1; // 复位McBSP
McBSPRegs.SPCR2.bit.GRST = 0; // 释放复位

// 设置McBSP时钟分频
McBSPRegs.SPCR1.bit.CLKGDV = 1; // 时钟分频器设置为1

// 设置McBSP数据格式
McBSPRegs.SPCR1.bit.DLB = 1; // 单通道模式
McBSPRegs.SPCR1.bit.FREE = 0; // 主模式

// 设置McBSP帧格式
McBSPRegs.SPCR1.bit.PDTX = 0; // 接收模式
McBSPRegs.SPCR1.bit.PDRX = 1; // 接收模式

// 设置McBSP采样率
McBSPRegs.SPCR1.bit.CLKXM = 0; // 外部时钟模式
McBSPRegs.SPCR1.bit.CLKRM = 0; // 外部时钟模式

// 启动McBSP接收
McBSPRegs.SPCR2.bit.GRST = 1; // 复位McBSP
McBSPRegs.SPCR2.bit.GRST = 0; // 释放复位
```

4. 配置AIC23的音频接口。您需要设置AIC23的音频接口参数,例如采样率、数据格式等。以下是一个基本的AIC23配置示例:

```c
// AIC23初始化
AIC23Write(0x1E, 0x00); // 复位AIC23
Delay(100);

// 设置AIC23节电模式
AIC23Write(0x0C, 0x02); // 所有部分均处于工作状态

// 设置AIC23左通路音频调节
AIC23Write(0x02, 0x01); // 左通道使能
AIC23Write(0x03, 0x01); // 右通道使能

// 设置AIC23数据格式
AIC23Write(0x04, 0x04); // 16位数据格式
AIC23Write(0x05, 0x01); // I2S模式
```

5. 编写音频数据处理代码。在DSP上编写代码以从McBSP接口接收音频数据,并将其存储在缓冲区中。以下是一个基本的音频数据处理示例:

```c
// 音频数据处理
while(1)
{
    // 等待McBSP接收缓冲区非空
    while(McBSPRegs.SRGR2.bit.RHOLD == 0);

    // 读取左通道数据
    short left_channel = (short)(McBSPRegs.DRR1);

    // 等待McBSP接收缓冲区非空
    while(McBSPRegs.SRGR2.bit.RHOLD == 0);

    // 读取右通道数据
    short right_channel = (short)(McBSPRegs.DRR2);

    // 处理音频数据
    // ...
}
```

请根据您的具体需求和硬件设计调整上述代码。希望这些建议和示例代码能帮助您解决问题。祝您好运!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分