硬件环境:C67+aic3204
验证步骤:1.C67通过IIS将音频数据输出至右声道。
2.将DAC_R输出到LOL。
3.通过调节DAC_R增益验证LOL端录音效果。
验证结果:当DAC_R增益较小时录音清晰无杂音,但是当提高DAC_R增益后录音效果变差且有杂音。
分析1:怀疑通过DAC_R调节音量不合理,修改为保持DAC_R增益为之前测试时效果好的一个较小增益,通过调节后端的HP增益来提高音量,发现还是存在该问题!
分析2:改为C67同时向左右声道输出相同数据,codec通过DAC_L进行录音,同样发现调节后端的HP增益来提高音量同样导致录音效果变差。
希望贵司能帮忙解惑,谢谢!
user6512474:
硬件环境:C67+aic3204验证步骤:1.C67通过IIS将音频数据输出至右声道。 2.将DAC_R输出到LOL。 3.通过调节DAC_R增益验证LOL端录音效果。验证结果:当DAC_R增益较小时录音清晰无杂音,但是当提高DAC_R增益后录音效果变差且有杂音。分析1:怀疑通过DAC_R调节音量不合理,修改为保持DAC_R增益为之前测试时效果好的一个较小增益,通过调节后端的HP增益来提高音量,发现还是存在该问题!分析2:改为C67同时向左右声道输出相同数据,codec通过DAC_L进行录音,同样发现调节后端的HP增益来提高音量同样导致录音效果变差。
希望贵司能帮忙解惑,谢谢!
,
user6566179:
你好,
我现在也有在调试aic3204 codec,还没能抓取到声音,请问可以提供下他的寄存器初始化配置吗? aic3204做从, 采样率配为48k,MCK为12.256Mhz, 接的是In3_L/In3_R。
,
user6512474:
技术手册有样例配置,你要先确保时钟波形无问题
,
user6566179:
是按照配置来的,slaa577.pdf 4.04/4.05章节来配的时钟波形 现在是看mclk正常,sda 数据线 没有数据
,
user6512474:
可以把你的配置发出来帮你看下
,
user6566179:
配置如下:是使用In3_L/In3_R 单端接入的,
aic3204_write(IIC_device_addr[num], 0, 0x0);// Select page 0aic3204_write(IIC_device_addr[num], 1, 0x1);// Reset Codecmdelay(10);/* PLL and clocks config and Power Up*/// mclk=12.288m, fs=48K, config: p=R=1, j=7, D=0, madc=2, nadc=7, aosr=128aic3204_write(IIC_device_addr[num], 0,0×0);// Select page 0aic3204_write(IIC_device_addr[num], 27, 0x1);// BCLK and WCLK is set as input AIC3204(slave) 00: audio InteRFace = i2saic3204_write(IIC_device_addr[num], 28, 0x0);// Data ofset = 0aic3204_write(IIC_device_addr[num], 4,0×3); // PLL setting: PLLCLK <- MCLK, CODEC_CLKIN <-PLL CLKaic3204_write(IIC_device_addr[num], 5,0×91);// PLL setting: Power up PLL, P=1 and R=1aic3204_write(IIC_device_addr[num], 6,0×7); // PLL setting: J=7aic3204_write(IIC_device_addr[num], 7,0×0);// PLL setting: HI_BYTE(D)aic3204_write(IIC_device_addr[num], 8,0×0);// PLL setting: LO_BYTE(D)aic3204_write(IIC_device_addr[num], 11, 0x82);// Power up NDAC and set NDAC value to 2 aic3204_write(IIC_device_addr[num], 12, 0x87);// Power up MDAC and set MDAC value to 7aic3204_write(IIC_device_addr[num], 13, 0x01);// Hi_Byte(DOSR) for DOSR = 256 decimal or 0x01080 DAC oversampplingaic3204_write(IIC_device_addr[num], 14, 0x00);// Lo_Byte(DOSR) for DOSR = 256 decimal or 0x0100aic3204_write(IIC_device_addr[num], 18, 0x87);// Power up NADC and set NADC value to 7aic3204_write(IIC_device_addr[num], 19, 0x82);// Power up MADC and set MADC value to 2aic3204_write(IIC_device_addr[num], 20, 0x80);// AOSR = 128 (default).///aic3204_write(IIC_device_addr[num], 30, 0x80);// For 32 bit clocks per frame in Master mode ONLY BCLK=DAC_CLK/N =(12288000/8) = 1.536MHz = 32*fs
aic3204_write(IIC_device_addr[num], 60, 0x0C);aic3204_write(IIC_device_addr[num], 61, 0x04);//ADC Singal Processing Block PRB_R4ADC Signal Processing Block Control Register
/* ADC ROUTING and Power Up */aic3204_write(IIC_device_addr[num], 0, 1 );// Select page 1aic3204_write(IIC_device_addr[num], 2,0×9);aic3204_write(IIC_device_addr[num], 1,0×8);// DisabLED weak connection of AVDD with DVDDaic3204_write(IIC_device_addr[num], 2,0×1);// Enable analog Blocks, use LDO power (is LDO power being used? If it is, then this register needs to be set correclty to use LDO).aic3204_write(IIC_device_addr[num], 10, 0x7B); // 0x3B, [6]=1aic3204_write(IIC_device_addr[num], 61, 0x0); // Select ADC PTM_R4aic3204_write(IIC_device_addr[num], 3,0×0); // Select DAC PTM_P3/4aic3204_write(IIC_device_addr[num], 4,0×0);aic3204_write(IIC_device_addr[num], 71, 0x32); // 3.1msaic3204_write(IIC_device_addr[num], 123, 0x1); // 3.1ms
aic3204_write(IIC_device_addr[num], 52, 0x04);//IN3L is routed to Left MICPGA with 10K resistanceaic3204_write(IIC_device_addr[num], 54, 0x40);// CM is routed to Left MICPGA via CM2L with 10K resistanceaic3204_write(IIC_device_addr[num], 55, 0x04);//IN3R is not routed to Right MICPGAaic3204_write(IIC_device_addr[num], 57, 0x40);// CM is routed to Left MICPGA via CM2L with 10K resistanceaic3204_write(IIC_device_addr[num], 59, 0x0C);// MIC_PGA_L unmuteaic3204_write(IIC_device_addr[num], 60, 0x0C);// MIC_PGA_R unmute
aic3204_write(IIC_device_addr[num], 51, 0x68);//Power-up MIC BIAS0x68
aic3204_write(IIC_device_addr[num], 0, 0);// Select page 0aic3204_write(IIC_device_addr[num], 81, 0xC0);// Powerup Left and Right ADCaic3204_write(IIC_device_addr[num], 82, 0x00);// Unmute Left and Right ADC
,
Amy Luo:
您好,
您将输入端经电容接地,然后将DAC_R增益或HP增益设置较大,看是否有噪音输出
音频CODEC和ADC常见噪声原因有以下原因:
1、带外噪声
2、PLL配置不正确
3、ASI(音频串行接口)配置不正确
4、地平面噪声耦合
5、电源
所以也请检查PLL和ASI是否配置正确
下面链接希望对您排查噪音有帮助:
【分享】音频CODEC和ADC:常见噪声问题:e2echina.ti.com/…/200067
,
user6566179:
你好,
请帮忙看下另外一个问题, aic3204 没有采集到声音, 已经按文档配置了寄存器, 具体配置见 上面时间点回复:“2021-3-9 7:48”, 谢谢。
,
user6512474:
你好,感谢回答。您提供的链接我之前已经看过,现在的问题主要点还不是噪声。
问题关键为:通过DAC录音,改变HP会对录音效果造成影响,还希望继续帮忙分析下。
,
user6512474:
你的BCLK配置的不对吧
,
user6566179:
执行了这个选项:aic3204_write(IIC_device_addr[num], 30, 0x80);
读取page0寄存器1到寄存器32的值分别是:(如下,冒号左边是寄存器编号,右边是值);
0x1: 0x0
0x2: 0x60
0x3: 0x0
0x4: 0x3
0x5: 0x91
0x6: 0x7
0x7: 0x0
0x8: 0x0
0x9: 0x0
0xa: 0x0
0xb: 0x82
0xc: 0x87
0xd: 0x1
0xe: 0x0
0xf: 0x2
0x10: 0x0
0x11: 0x8
0x12: 0x87
0x13: 0x82
0x14: 0x80
0x15: 0x1
0x16: 0x0
0x17: 0x4
0x18: 0x0
0x19: 0x0
0x1a: 0x1
0x1b: 0x1
0x1c: 0x0
0x1d: 0x0
0x1e: 0x80
0x1f: 0x0
0x20: 0x0pll的配置是参考:Table 2-27. PLL Example Configurations, fs=48kHz的项, 实际mclk给出的是12.288, 所以D值修改为0。 录制出来的还是没有声音, 还请帮忙再看看,谢谢。
,
user6566179:
bclk 问题,
1.aic3204芯片是做从设备, bclk配置为输入,目前主芯片mclk=8*bclk; 配置了寄存器page0_30, 值为0x88;
录制 还是没有声音。
,
Amy Luo:
我不太明白您是在录音还是通过IIS进行播放?录音的话,需要使用ADC而不是DAC
如果您是通过IIS进行播放的话,那么当DAC_R增益较小时清晰无杂音,是否可能因为噪音较小,增益小时噪音不明显,而当增益大时,噪音同时被放大,使得听出有噪音?
,
user6512474:
问题已经解决,录音端设备配置问题,异常配置,在这种特殊情况下能录到声音通道,而不是通过数据录到。