CPU:RK3399
系统:Android
音频IC:ES8316
功放IC:NS4150
以前也在 RK3399 上调试过 ES8316,功能都正常,新主板只是更换了功放IC,就出现无声音的问题(仔细听是喇叭声音很小很小)。
音乐播放器中,有的歌曲有声音,有个无声音
视频播放器中,只能听到背景音,人物说话声听不见
系统声音设置中,闹钟音量正常,媒体音量和通知音量无声音
下面是音频相关的原理图:
既然闹钟声音正常,就不用考虑底层音频模块加载的问题
1、调整设置中的媒体音量和闹钟音量,用示波器测试 SPK_EN 引脚,引脚在播放时都被拉高,而且电压也相同。
2、使用指令播放 1KHz 正弦波,用示波器测量 ES8316 的输出是很完美的正弦波,频率差不多就是1KHz,但就是没声音。
rk3399_all:/ # tinyplay /sdcard/1k.wav -D 0 -d 0 -p 1024 -n 3 tinyplay /sdcard/1k.wav -D 0 -d 0 -p 1024 -n 3 Playing sample: 2 ch, 44100 hz, 16 bit
3、使用 i2c-tools 工具读取有声音和没声音时 ES8316 的寄存器值,完全一致,也没有哪个寄存器有问题。
4、此时只能从硬件差异化找问题
ES8316 文档中明确标明,19脚(ROUT)和 20脚(ROUT)输出的是左右声道模拟信号。
查看功放 NS4150 的文档,其不仅支持单端输入,还支持差分输入,但是两种电路有点差异,如下:
再查看原理图中功放的电路,明显支持的是差分输入,与 ES8316 输出的模拟信号不符合,只需将功放输入端差分输入改为单端输入即可。