TI论坛
直播中

世态薄凉

8年用户 1145经验值
私信 关注
[问答]

海思3559驱动TLV320AIC3101采集音频没有数据是哪里出了问题?如何解决?



  • 电路图如上:
    配置参数如下:
    tlv320aic31_write(IIC_device_addr[chip_num], 2, 0xaa);
    tlv320aic31_write(IIC_device_addr[chip_num], 3, 0x10);
    tlv320aic31_write(IIC_device_addr[chip_num], 7, 0x0a);
    tlv320aic31_write(IIC_device_addr[chip_num], 8, 0xf0);
    tlv320aic31_write(IIC_device_addr[chip_num], 9, 0x07);
    tlv320aic31_write(IIC_device_addr[chip_num], 12, 0x50);
    tlv320aic31_write(IIC_device_addr[chip_num], 14, 0x80);
    tlv320aic31_write(IIC_device_addr[chip_num], 15, 0x00);
    tlv320aic31_write(IIC_device_addr[chip_num], 16, 0x00);
    tlv320aic31_write(IIC_device_addr[chip_num], 17, 0x0f);
    tlv320aic31_write(IIC_device_addr[chip_num], 18, 0xf0);
    tlv320aic31_write(IIC_device_addr[chip_num], 19, 0x04);
    tlv320aic31_write(IIC_device_addr[chip_num], 24, 0x04);
    //tlv320aic31_write(IIC_device_addr[chip_num], 22, 0x78);
    tlv320aic31_write(IIC_device_addr[chip_num], 25, 0x40);
    tlv320aic31_write(IIC_device_addr[chip_num], 37, 0xE0);
    tlv320aic31_write(IIC_device_addr[chip_num], 38, 0x14);
    tlv320aic31_write(IIC_device_addr[chip_num], 40, 0x80);
    tlv320aic31_write(IIC_device_addr[chip_num], 41, 0x01);
    tlv320aic31_write(IIC_device_addr[chip_num], 42, 0xA8);
    tlv320aic31_write(IIC_device_addr[chip_num], 43, 0x00);
    tlv320aic31_write(IIC_device_addr[chip_num], 44, 0x00);
    tlv320aic31_write(IIC_device_addr[chip_num], 47, 0x80);
    tlv320aic31_write(IIC_device_addr[chip_num], 51, 0x9f);
    tlv320aic31_write(IIC_device_addr[chip_num], 64, 0x80);
    tlv320aic31_write(IIC_device_addr[chip_num], 65, 0x9f);
    tlv320aic31_write(IIC_device_addr[chip_num], 102, 0x32);
    3559采集端的配置如下:
    stACapAttr.enAudioMode = HI_MPP_AUDIO_MODE_I2S_SLAVE; /* I2S 从模式 */
    stACapAttr.enBitwidth = HI_MPP_AUDIO_BITWIDTH_16; /* Bit width is 16 bits */
    stACapAttr.enSampleRate = HI_MPP_AUDIO_SAMPLE_RATE_48;  /* 48K Sample rate */
    stACapAttr.enSoundMode = HI_MPP_AUDIO_SOUND_MODE_STEREO; /* 立体声 */
    stACapAttr.u32PtNumPerFrm = 1024; /* 每帧采样点个数 */
    TLV320AIC3101一端的I2S配置成主模式,采集端3559是不是就应该配置成从模式。
    请帮忙确认下,以上电路和配置是不是匹配,我现在采集出来,没有声音。I2S的MCLK有时钟12M多。sample rate是否匹配?

回帖(2)

陈霞玻

5 天前
排除掉硬件方面的问题之后,因为mic接法不一样,配置需要改,配置如下:
/*soft reset*/
tlv320aic31_write(IIC_device_addr[chip_num],0x1,0x80);
msleep(10);
/*CLKDIV_IN uses MCLK*/
tlv320aic31_write(IIC_device_addr[chip_num], 102, 0x32);

#if 1
/*PLL disable and select Q value*/
tlv320aic31_write(IIC_device_addr[chip_num], 3, 0x10);
#else
/*PLL enable */
tlv320aic31_write(IIC_device_addr[chip_num], 3, 0x82);/* P=2 */
tlv320aic31_write(IIC_device_addr[chip_num], 4, 0x1c);/* J=28 */
tlv320aic31_write(IIC_device_addr[chip_num], 5, 0x2c);
tlv320aic31_write(IIC_device_addr[chip_num], 6, 0x8);/* reg 5 and 6 set D=2818*/
tlv320aic31_write(IIC_device_addr[chip_num], 11, 0x1);/* R=1 */
#endif

/*left and right DAC open*/
tlv320aic31_write(IIC_device_addr[chip_num], 7, 0xa);/* FSref = 48 kHz */

/*sample*/
tlv320aic31_write(IIC_device_addr[chip_num], 2, 0xaa);/* FS = FSref/6 */

/*ctrl mode*/
tlv320aic31_write(IIC_device_addr[chip_num], 8, 0x30);/* master mode */

/*Audio Serial Data Interface Control*/
//tlv320aic31_write(IIC_device_addr[chip_num], 9, 0x7);/* I2S mode,16bit */
tlv320aic31_write(IIC_device_addr[chip_num], 9, 0x0);/* I2S mode,16bit */
/*Audio Codec Digital Filter Control Register*/
tlv320aic31_write(IIC_device_addr[chip_num], 12, 0x50);

//tlv320aic31_write(IIC_device_addr[chip_num], 25, 0x0);
tlv320aic31_write(IIC_device_addr[chip_num], 25, 0xC0);
tlv320aic31_write(IIC_device_addr[chip_num], 17, 0xff);
tlv320aic31_write(IIC_device_addr[chip_num], 18, 0xff);

tlv320aic31_write(IIC_device_addr[chip_num], 15, 0x0);
tlv320aic31_write(IIC_device_addr[chip_num], 16, 0x0);
//tlv320aic31_write(IIC_device_addr[chip_num], 19, 0x7c);
//tlv320aic31_write(IIC_device_addr[chip_num], 22, 0x7c);

tlv320aic31_write(IIC_device_addr[chip_num], 19, 0x04);
tlv320aic31_write(IIC_device_addr[chip_num], 22, 0x04);
tlv320aic31_write(IIC_device_addr[chip_num], 24, 0x78);
tlv320aic31_write(IIC_device_addr[chip_num], 21, 0x78);

tlv320aic31_write(IIC_device_addr[chip_num], 28, 0x0);
tlv320aic31_write(IIC_device_addr[chip_num], 31, 0x0);

/*out ac-coupled*/
tlv320aic31_write(IIC_device_addr[chip_num], 14, 0x80);

/*left and right DAC power on*/
tlv320aic31_write(IIC_device_addr[chip_num], 37, 0xe0);

/*out common-mode voltage*/
tlv320aic31_write(IIC_device_addr[chip_num], 40, 0x80);

/*out path select*/
tlv320aic31_write(IIC_device_addr[chip_num], 41, 0x0);

/*DTS2014123002762 œ«Æô¶¯ÑÓʱÓÉ2sžÄΪ200ms*/
tlv320aic31_write(IIC_device_addr[chip_num], 42, 0x78);

/*left DAC not muted*/
tlv320aic31_write(IIC_device_addr[chip_num], 43, 0x0);

/*right DAC not muted*/
tlv320aic31_write(IIC_device_addr[chip_num], 44, 0x0);

tlv320aic31_write(IIC_device_addr[chip_num], 47, 0x80);

/*HPLOUT is not muted*/
tlv320aic31_write(IIC_device_addr[chip_num], 51, 0x9f);

tlv320aic31_write(IIC_device_addr[chip_num], 64, 0x80);
/*HPROUT is not muted*/
tlv320aic31_write(IIC_device_addr[chip_num], 65, 0x9f);

/*out short circuit protection*/
tlv320aic31_write(IIC_device_addr[chip_num], 38, 0x3e);
举报

tr4578

5 天前
根据您提供的电路图和配置参数,以下是一些建议来解决音频采集没有数据的问题:

1. 检查硬件连接:确保TLV320AIC3101与海思3559之间的硬件连接正确,包括I2C总线、电源和地线等。

2. 检查I2C地址:确保您使用的I2C设备地址与实际硬件上的地址相匹配。如果地址不匹配,可能导致配置参数无法正确写入。

3. 检查配置参数:根据TLV320AIC3101的数据手册,检查您提供的配置参数是否正确。以下是一些建议的配置参数:

   - 寄存器2:0x00(复位)
   - 寄存器3:0x10(使能数字音频接口)
   - 寄存器7:0x0A(设置采样率,例如48kHz)
   - 寄存器8:0xF0(设置I2S模式)
   - 寄存器9:0x07(设置I2S时钟极性和相位)
   - 寄存器12:0x50(设置模拟输入通道)
   - 寄存器14:0x80(使能模拟输入)
   - 寄存器15:0x00(禁用模拟输出)

4. 检查音频输入:确保音频输入信号正常,并且与TLV320AIC3101的输入阻抗相匹配。

5. 检查海思3559驱动:确保海思3559的驱动程序正确安装,并且支持TLV320AIC3101的音频采集功能。

6. 调试和测试:使用示波器或逻辑分析仪检查I2C总线上的信号,确保配置参数正确写入TLV320AIC3101。同时,检查音频信号是否在TLV320AIC3101的输出端正常。

通过以上步骤,您应该能够找到问题所在并解决音频采集没有数据的问题。如果问题仍然存在,请参考TLV320AIC3101和海思3559的数据手册,以获取更多详细信息和技术支持。
举报

更多回帖

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