回声消除芯片FM1182调试
FM1182是被大量应用的回声消除芯片,效果明显,不过内部参数众多,想调试好不容易.
内部框图:
FM1182有两个通话信道,从而实现双工通信
MIC0/MIC1->LINE_OUT
LINE_IN->SPK_OUT
推荐工作参数:
十大注意点:
1.FM1182的回声消除模块是通过AGC起作用的,回声消除和AGC一起控制软件放大
2.FM1182两个通路分别有AGC:MIC_AGC,LINE_IN_AGC
3.这两个AGC是处于音量放大之前,分别为:MIC_VOLUME,SPK_VOLUME
4.AGC模块处于DSP内核中,是软件式而不是硬件式的.所以要起作用的反应时间并不是很快.
5.调节MIC_AGC的寄存器:Micagc_ref_low(1EA3),读取MIC_AGC的增益寄存器:mic-in_AGC_gain(1BC3)
6.调节LINE_IN_AGC的寄存器:lineinagc_ref(1EA8),读取LINE_IN_AGC的增益寄存器:line-in_AGC_gain(B41)
7.MIC_AGC为默认参数的阈值为150mV,LINE_IN_AGC为默认参数的阈值为100mV
8.回声消除优先控制AGC增益,回声消除不起作用AGC才真正起作用.AGC会从MIC输入检测声音输入,如果检测到声音输入,则AGC的增益保持在当前值,直到再度检测到MIC输入声音信号.LINE_IN通路同样如此,如果检测不到MIC的声音输入,LINE_IN通路的AGC保持当前增益.
9.测量AGC阈值的时候,注意不能用函数波发生器,它输出的正弦波会被认为是回音.测试方法是PC编辑一段固定幅值的语音(比如铃声),重复播放.
10.测量MIC输入的AGC阈值,可以不用管LINE_IN输入,但测LINE_IN通路的AGC阈值时,要注意此路的AGC需要收到MIC的通路中的回声消除模块的控制,所以必须要给MIC信号.最好是给满足MIC通路AGC阈值的信号,然后再测量阈值.
两个通话信道
1.MIC0/MIC1->LINE_OUT
在此采用MIC0作为音源.
据测试,AGC是在DSP核中工作,与软件放大的顺序是SW_GAIN->AGC.
所以这个信道的各个工作模块顺序如下:
MIC0P和MIC0N分别输入->MIC_PGAGAIN(0X1E34)->MIC0P + MIC0N ->ADC->|||||AGC->MIC_VOLUME(0X1E3D)|||||->DAC->LINEOUT_PGAGAIN(0X1E35)->LINE_OUT
竖线|||||里面的部分就是DSP核,这个里面还有一个回声消除模块.
注意:
1.差分信号叠加位置如图所示在ADC前.
2.MIC0支持差分输入,实际使用中我是采用单端输入,所以进入的信号赋值给MIC_PGA放大时得除以2.
2.LINE_IN->SPK_OUT
信道各个工作模块顺序如下:
LINE_INP和LINE_INN分别输入->LINEIN_PGAGAIN(0X1E35)->LINE_INP + LINE_INN->ADC->|||||AGC->SPK_VOLUME(0X1E3E)|||||->DAC->SPKEAR_PGAGAIN(0X1E37)->SPK_OUTP和SPK_OUTN分别输出
竖线|||||里面的部分就是DSP核,这个里面还有一个回声消除模块.
注意:
1.差分信号叠加位置如图所示在ADC前,差分输出在DAC后.
2.MIC0支持差分输入,实际使用中我是采用单端输入,所以进入的信号赋值给LINE_IN_PGA放大时得除以2.
3.SPK_OUT虽是差分输出,实际上采用的是单端输出,但输出信号不必除以2输出,正常输出.
4.实际测这个通路时,发现最后输出得乘以一个系数才与预想值想符合.
总结:调试FM1182最重要的是找到AGC的阈值即最佳工作点,然后以此为基础,输入最佳工作参数,就能获得很好的回声消除效果.参数不对,则会遇到声音卡,顿,忽大忽小,听不到等诸多问题.最后祝愿看此文的工程师调试顺利.