开发环境:
- Windows 开发环境:Windows 11 64bit、Windows 10 64bit
- 开发软件:vivado 2018.03
- 开发板:AC820-ZYNQ
问题现象
在做音频回环实验时,ES8388芯片在音频播放时存在一个特殊现象:
-
有声音输出时:
- 伴随着正常的音频输出,会出现一定程度的底噪。
- 这种底噪只在有声音播放时才能听到。
-
无声音输出时:
- 当没有音频信号输出时,不会听到任何底噪。
- 静音状态下,声音输出是完全干净的。
(比如,我正在讲话:在发声前后,都无底噪,但是一但发声,就伴随底噪)
分析流程
1、用ILA分析,I2S协议,查看MCLK、LRCLK、SCLK、sdata_in、sdata_out是否有问题(一般音频有底噪跟 I2S 相关)
注意:此实验为音频回环实验,因此可以共用播放时 I2S_transmitter_0 产生的LRCLK和SCLK。然而,我们需要分析在录入和播放时 I2S 是否存在错误,因此仍需捕获I2S_receiver_0核的sdata_0_in和lrclk_out、sclk_out信号。
2、如下图所示,这是我们捕获的信号波形。经分析,该波形符合标准I2S协议的特征。因此,我们可以初步排除由I2S协议错误导致的问题。
3、初步排除了I2S协议的问题,那么原因很可能就是es8388配置错误
但是在分析过程中遇到很大问题,很难判断出是具体哪个寄存器操作不对;
故询问厂家技术人员后,获得提示:如果不是接MIC(麦克风)的应用都是需要关闭 ALC(自动电平控制)
经查阅,ALC(自动电平控制)的作用:
- ALC 主要用于自动调整音频信号的增益,以防止过载和失真。
- 它在处理动态范围大的音频输入时特别有用,如人声或现场录音。
-
4、向寄存器 18,写入0x11;尝试关闭 ALC,果然没有了底噪,完美解决
5、总结
ALC(自动电平控制)主要用于录制外界声音,特别是在声音强度变化较大的环境中。然而,在音频回环测试中,我们通常希望输出信号与输入信号尽可能相同。
ALC 的自动增益调整功能可能会干扰这一目标,因为它会根据输入信号强度自主调整增益。这种调整不仅可能改变原始信号特性,还可能在信号较弱时提高系统增益,从而放大本底噪声,导致测试结果中出现不必要的底噪问题。因此,在进行音频回环测试时,还是关闭 ALC,以确保声音不受自动增益调整的影响。 |