搜索
bottom↓
回复: 22

请教下谁搞过tlv320aic3110 这个系列的芯片捣鼓了2天声音异常

[复制链接]

出0入0汤圆

发表于 2018-7-31 15:17:05 | 显示全部楼层 |阅读模式
本帖最后由 hpdell 于 2018-7-31 21:25 编辑

请教下谁搞过tlv320aic3110 这个系列的芯片捣鼓了2天 声音异常 ???

使用 stm32 作为主控,i2c 接口

现在 按照 ti 官方的 资料的 播放测试历程,目前声音是出来了,但是声音不正常,有嘶哑或者是破音的感觉,

所以想请教下,是哪里没有设置对啊 ???

望大佬们赐教啊 !!!

/*
******************************************************************************************
* 函数名称:AIC31XX_SetExample_44K
* 函数功能:设置44.1K, MCLK=11.2896MHz,16bit 示例,这个是官方的测试播放测试历程
* 参数    无
* 返回值:无
******************************************************************************************
*/
void AIC31XX_SetExample_44K(void)
{
        volatile uint8_t err;
       
        LM4871_SWITCH_OFF;
       
        err = AIC31XX_Write(0, 0);                  //Select Page 0
        err = AIC31XX_Write(1, 1 );                  //Software reset
        err = AIC31XX_Write(4, 3 );                  //PLL_clkin = MCLK, codec_clkin = PLL_CLK
        err = AIC31XX_Write(5, 0x91);   //PLL Power up, P = 1, R = 1
        err = AIC31XX_Write(6, 0x08);          //J = 8

        err = AIC31XX_Write(7, 0x00);          //D = 0000, D(13:8) = 0
        err = AIC31XX_Write(8, 0x00);          //D = 0000, D(7:0) = 0
       
        err = AIC31XX_Write(0x1B, 0x00);  /* Mode is I2S, Wordlength is 16
                                    bit7-6  00: Codec interface = I2S
                                            01: Codec Interface = DSP
                                            10: Codec interface = RJF
                                            11: Codec interface = LJF
                                    bit5-4  00: Codec interface word length = 16 bits
                                                                                                                                                        01: Codec interface word length = 20 bits
                                                                                                                                                        10: Codec interface word length = 24 bits
                                                                                                                                                        11: Codec interface word length = 32 bits       
                                    bit3    0: BCLK is input
                                            1: BCLK is output
                                                                                                                                                       
                                                                                                                        bit2          0: WCLK is input
                                      1: WCLK is output                       
                                    bit1    Reserved
                                                                                                                        bit0    Driving DOUT to High-Impedance for the Extra BCLK Cycle When Data Is Not Being Transferred
                                                                                                                                                        0: Disabled
                                                                                                                                                        1: Enabled
                                                                                                                        */
                                                                                                                       
        err = AIC31XX_Write(0x0B, 0x84);        //NDAC is powered up and set to 4
        err = AIC31XX_Write(0x0C, 0x84);        //MDAC is powered up and set to 4                                                                                                               
                                                                                                                       
        err = AIC31XX_Write(0x0D, 0x00);        //DOSR = 128, DOSR(9:8) = 0, DOSR(7:0) = 128                                                                                                               
        err = AIC31XX_Write(0x0E, 0x80);        //DOSR = 128, DOSR(9:8) = 0, DOSR(7:0) = 128                                                                                                               
                                                                                                                       
        err = AIC31XX_Write(0x74, 0x00);        //DAC => volume control thru pin disable                                                                                                               
        err = AIC31XX_Write(0x44, 0x00);        //DAC => DRC disable
       
        err = AIC31XX_Write(0x41, 0xD4);        //DAC => -22 db gain left
        err = AIC31XX_Write(0x42, 0xD4);        //DAC => -22 db gain right
       
// ============================================================================       
        err = AIC31XX_Write(0, 1);  //Select Page 1
       
        err = AIC31XX_Write(0x21, 0x4E);  //De-pop, Power on = 800 ms, Step time = 4 ms
        err = AIC31XX_Write(0x1F, 0xC2);  //HPL and HPR powered up
        err = AIC31XX_Write(0x23, 0x44);  //LDAC routed to HPL, RDAC routed to HPR
        err = AIC31XX_Write(0x28, 0x06);  //HPL unmute and gain = 0db  耳机
        err = AIC31XX_Write(0x29, 0x06);  //HPR unmute and gain = 0db  耳机
       
        err = AIC31XX_Write(0x2A, 0x1C);  //Unmute Class-D Left  SPL  喇叭  24 dB
        err = AIC31XX_Write(0x2B, 0x1C);  //Unmute Class-D Right SPR  喇叭  24 dB
       
        err = AIC31XX_Write(0x20, 0xC6);  //Power-up Class-D drivers
       
        err = AIC31XX_Write(0x24, 0x92);  //Enable HPL output analog volume, set = -9 dB
        err = AIC31XX_Write(0x25, 0x92);  //Enable HPR output analog volume, set = -9 dB
        err = AIC31XX_Write(0x26, 0x92);  //Enable HPL output analog volume, set = -9 dB
        err = AIC31XX_Write(0x27, 0x92);  //Enable HPR output analog volume, set = -9 dB
       
// ============================================================================       
        err = AIC31XX_Write(0, 0);  //Select Page 0
       
        err = AIC31XX_Write(0x3C, 0x0B);  //Select DAC DSP Processing Block PRB_P11
        err = AIC31XX_Write(0x00, 0x08);
        err = AIC31XX_Write(0x01, 0x04);
        err = AIC31XX_Write(0x00, 0x00);
       
        err = AIC31XX_Write(0x3F, 0xD6);  //SPowerup DAC left and right channels (soft step disable)
       
        err = AIC31XX_Write(0x40, 0x00);  //Unmute DAC left and right channels
       
       
        LM4871_SWITCH_ON;
       
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

 楼主| 发表于 2018-8-2 15:44:11 | 显示全部楼层
怎么都没有人关注啊,还是问题太简单了啊 ??????????

出0入4汤圆

发表于 2018-8-2 19:55:25 | 显示全部楼层
没搞过,纯属帮顶~~~

出140入8汤圆

发表于 2018-8-3 06:04:02 | 显示全部楼层
看到你这么一大版寄存器写入,都被吓死了?

出0入0汤圆

发表于 2018-8-3 09:16:49 | 显示全部楼层
没见过这样初始化芯片的,看得头晕,你不能做个表格么?

出0入0汤圆

 楼主| 发表于 2018-8-3 16:49:44 | 显示全部楼层
leiyitan 发表于 2018-8-3 06:04
看到你这么一大版寄存器写入,都被吓死了?

这个芯片有几百个寄存器啊,目前的这点寄存器 还是冰山一角啊

寄存器确实太多啊,所以搞晕了

出0入0汤圆

 楼主| 发表于 2018-8-3 16:52:40 | 显示全部楼层
ningming 发表于 2018-8-3 09:16
没见过这样初始化芯片的,看得头晕,你不能做个表格么?

这个目前只是测试 程序啊,做表格到时修改也麻烦,等调试好后可以做一个表格,

因为目前调试随时需要修改

出0入0汤圆

发表于 2018-8-3 16:53:51 | 显示全部楼层
有声音,破音嘶哑。可能是i2s配置错误了。

出0入0汤圆

 楼主| 发表于 2018-8-3 16:59:34 | 显示全部楼层
lujan1 发表于 2018-8-3 16:53
有声音,破音嘶哑。可能是i2s配置错误了。

现在貌似就是破音雅音的感觉 目前的音质比  wm8978 还差,

还得继续研究硬件啊,这个芯片使用的人民貌似是比较少啊,还是说 在单片机系统上使用的比较少啊 ?

出0入0汤圆

发表于 2018-8-3 17:16:04 | 显示全部楼层
hpdell 发表于 2018-8-3 16:59
现在貌似就是破音雅音的感觉 目前的音质比  wm8978 还差,

还得继续研究硬件啊,这个芯片使用的人民貌似 ...

查一下i2s配置方面(采样率、模式)。这个也带miniDSP吧?

出0入0汤圆

 楼主| 发表于 2018-8-3 22:44:59 | 显示全部楼层
本帖最后由 hpdell 于 2018-8-3 22:48 编辑
lujan1 发表于 2018-8-3 17:16
查一下i2s配置方面(采样率、模式)。这个也带miniDSP吧?


貌似是带 dsp 的,

i2s 配置 的话,之前使用的 wm8978 ,播放、录音都是没有问题的,目前只是更换了 这个 芯片而已,i2s 设置部分都是没有变动的,只是驱动 改成了 aic3110 的

有声音出来,说明硬件应该基本是没有问题的吧 ?!

问题估计应该还是在 aic3110 这个芯片的配置上了,之前 wm8978 配置为从模式(wm8978 是不用配置采样率的),采样率等都是有 单片机主控决定的。

现在这个 aic3110 如果也设置为从模式的话,如果不配置采样率,播放时没有声音出来,如果配置加上 采样率设置,声音倒是出来,就是破音、雅音了

出0入0汤圆

发表于 2018-8-4 00:27:36 | 显示全部楼层
debug 的话,用正弦波或三角波之类的波形简单的音源,然后上逻辑分析仪和示波器
直接看 I2S 传输的数据是否有误,以及波形输出出现了什么问题

比在这看代码翻手册分析问题快

出0入0汤圆

 楼主| 发表于 2018-8-4 13:44:35 | 显示全部楼层
wudicgi 发表于 2018-8-4 00:27
debug 的话,用正弦波或三角波之类的波形简单的音源,然后上逻辑分析仪和示波器
直接看 I2S 传输的数据是否 ...

逻辑分析仪 测得的波形貌似没有什么问题啊,

如下:

mclk:


lrc:


bclk-1:


bclk-2:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-8-4 14:16:33 | 显示全部楼层
hpdell 发表于 2018-8-4 13:44
逻辑分析仪 测得的波形貌似没有什么问题啊,

如下:

不要人工看波形,把软件的 I2S 解码设置配置好后,看软件解码出来的结果
人工看的话可能还是会有一些错误理解影响分析问题

出0入0汤圆

发表于 2018-8-4 14:17:41 | 显示全部楼层
hpdell 发表于 2018-8-4 13:44
逻辑分析仪 测得的波形貌似没有什么问题啊,

如下:

而且更关键的是用示波器看输出波形,正弦波和三角波变成了什么样子比较明显

出0入0汤圆

发表于 2018-8-16 11:09:50 | 显示全部楼层
I2S的格式有很多种,靠左靠右什么的,要仔细分析。

出0入0汤圆

 楼主| 发表于 2018-8-16 11:40:50 | 显示全部楼层
ningming 发表于 2018-8-16 11:09
I2S的格式有很多种,靠左靠右什么的,要仔细分析。

有空我再研究一下看看,目前先放到一边去了

出0入0汤圆

发表于 2018-9-6 09:17:32 | 显示全部楼层
hpdell 发表于 2018-8-16 11:40
有空我再研究一下看看,目前先放到一边去了

我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master模式,MCU端为slave模式,这样时钟才能同步(BCLK,WCLK和Audio Codec内部主时钟),底噪就会消失了
如果是播放出来的声音频率都不对,那就是寄存器配置错误了,我试着找一找之前写的dac3100的寄存器初始化列表,然后贴出来

出0入0汤圆

 楼主| 发表于 2018-9-6 10:39:52 | 显示全部楼层
本帖最后由 hpdell 于 2018-9-6 11:12 编辑
caijun2015 发表于 2018-9-6 09:17
我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master ...


先多谢多谢了啊,感谢你的无私奉献啊 !

出0入0汤圆

 楼主| 发表于 2018-9-10 09:29:37 | 显示全部楼层
caijun2015 发表于 2018-9-6 09:17
我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master ...

你好,找到相关的资料没有啊 ?

出0入0汤圆

发表于 2018-9-14 17:52:30 | 显示全部楼层
TI官方有个配置软件的,可以生成配置表,不必这么自己去折腾啊

出0入0汤圆

 楼主| 发表于 2018-9-17 10:08:04 | 显示全部楼层
qq854149876 发表于 2018-9-14 17:52
TI官方有个配置软件的,可以生成配置表,不必这么自己去折腾啊

ti 官方的资料里面貌似是有 播放,录音的测试历程,

貌似都是吧 aic3110 设置为主模式的,我目前捣鼓时,按照官方的历程也是播放声音是可以出来的,但是声音异常,

估计跟我目前吧单片机的 dma 也设置为 主了,导致他们的时钟发生混乱了,

出0入0汤圆

 楼主| 发表于 2023-6-12 10:09:12 | 显示全部楼层
caijun2015 发表于 2018-9-6 09:17
我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master ...
(引用自18楼)

这些年已过,不知道找到了没有啊 ?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 19:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表