请教下谁搞过tlv320aic3110 这个系列的芯片捣鼓了2天声音异常
本帖最后由 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-600: Codec interface = I2S
01: Codec Interface = DSP
10: Codec interface = RJF
11: Codec interface = LJF
bit5-400: 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 LeftSPL喇叭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;
} 怎么都没有人关注啊,还是问题太简单了啊 ?????????? 没搞过,纯属帮顶~~~ 看到你这么一大版寄存器写入,都被吓死了? 没见过这样初始化芯片的,看得头晕,你不能做个表格么? leiyitan 发表于 2018-8-3 06:04
看到你这么一大版寄存器写入,都被吓死了?
这个芯片有几百个寄存器啊,目前的这点寄存器 还是冰山一角啊
寄存器确实太多啊,所以搞晕了 ningming 发表于 2018-8-3 09:16
没见过这样初始化芯片的,看得头晕,你不能做个表格么?
这个目前只是测试 程序啊,做表格到时修改也麻烦,等调试好后可以做一个表格,
因为目前调试随时需要修改 有声音,破音嘶哑。可能是i2s配置错误了。 lujan1 发表于 2018-8-3 16:53
有声音,破音嘶哑。可能是i2s配置错误了。
现在貌似就是破音雅音的感觉 目前的音质比wm8978 还差,
还得继续研究硬件啊,这个芯片使用的人民貌似是比较少啊,还是说 在单片机系统上使用的比较少啊 ? hpdell 发表于 2018-8-3 16:59
现在貌似就是破音雅音的感觉 目前的音质比wm8978 还差,
还得继续研究硬件啊,这个芯片使用的人民貌似 ...
查一下i2s配置方面(采样率、模式)。这个也带miniDSP吧? 本帖最后由 hpdell 于 2018-8-3 22:48 编辑
lujan1 发表于 2018-8-3 17:16
查一下i2s配置方面(采样率、模式)。这个也带miniDSP吧?
貌似是带 dsp 的,
i2s 配置 的话,之前使用的 wm8978 ,播放、录音都是没有问题的,目前只是更换了 这个 芯片而已,i2s 设置部分都是没有变动的,只是驱动 改成了 aic3110 的
有声音出来,说明硬件应该基本是没有问题的吧 ?!
问题估计应该还是在 aic3110 这个芯片的配置上了,之前 wm8978 配置为从模式(wm8978 是不用配置采样率的),采样率等都是有 单片机主控决定的。
现在这个 aic3110 如果也设置为从模式的话,如果不配置采样率,播放时没有声音出来,如果配置加上 采样率设置,声音倒是出来,就是破音、雅音了
debug 的话,用正弦波或三角波之类的波形简单的音源,然后上逻辑分析仪和示波器
直接看 I2S 传输的数据是否有误,以及波形输出出现了什么问题
比在这看代码翻手册分析问题快
wudicgi 发表于 2018-8-4 00:27
debug 的话,用正弦波或三角波之类的波形简单的音源,然后上逻辑分析仪和示波器
直接看 I2S 传输的数据是否 ...
逻辑分析仪 测得的波形貌似没有什么问题啊,
如下:
mclk:
lrc:
bclk-1:
bclk-2:
hpdell 发表于 2018-8-4 13:44
逻辑分析仪 测得的波形貌似没有什么问题啊,
如下:
不要人工看波形,把软件的 I2S 解码设置配置好后,看软件解码出来的结果
人工看的话可能还是会有一些错误理解影响分析问题
hpdell 发表于 2018-8-4 13:44
逻辑分析仪 测得的波形貌似没有什么问题啊,
如下:
而且更关键的是用示波器看输出波形,正弦波和三角波变成了什么样子比较明显
I2S的格式有很多种,靠左靠右什么的,要仔细分析。 ningming 发表于 2018-8-16 11:09
I2S的格式有很多种,靠左靠右什么的,要仔细分析。
有空我再研究一下看看,目前先放到一边去了 hpdell 发表于 2018-8-16 11:40
有空我再研究一下看看,目前先放到一边去了
我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master模式,MCU端为slave模式,这样时钟才能同步(BCLK,WCLK和Audio Codec内部主时钟),底噪就会消失了
如果是播放出来的声音频率都不对,那就是寄存器配置错误了,我试着找一找之前写的dac3100的寄存器初始化列表,然后贴出来
本帖最后由 hpdell 于 2018-9-6 11:12 编辑
caijun2015 发表于 2018-9-6 09:17
我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master ...
先多谢多谢了啊,感谢你的无私奉献啊 !{:handshake:}
caijun2015 发表于 2018-9-6 09:17
我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master ...
你好,找到相关的资料没有啊 ? TI官方有个配置软件的,可以生成配置表,不必这么自己去折腾啊 qq854149876 发表于 2018-9-14 17:52
TI官方有个配置软件的,可以生成配置表,不必这么自己去折腾啊
ti 官方的资料里面貌似是有 播放,录音的测试历程,
貌似都是吧 aic3110 设置为主模式的,我目前捣鼓时,按照官方的历程也是播放声音是可以出来的,但是声音异常,
估计跟我目前吧单片机的 dma 也设置为 主了,导致他们的时钟发生混乱了, caijun2015 发表于 2018-9-6 09:17
我用过tlv320dac32和tlv320dac3100,估计跟aic3110内部寄存器差不多
需要把Audio Codec的I2S配置成master ...
(引用自18楼)
这些年已过,不知道找到了没有啊 ?{:lol:}
页:
[1]