本帖最后由 zoro 于 2018-8-27 15:23 编辑
使用了firefly的核心板和底板的情况下,有声音。
项目中使用了firefly的核心板及我们自己的底板,硬件同事反馈没有声音,开始排除问题
对于音频问题,处理的并不是很多,尝试去看了alsa的源代码还有跟着韦东山的视频去写一个声卡驱动,还是没有一个好的理解。
但是知道,对于linux系统的amixer及android上的tinymix很好用。
这里主要处理了3个问题:
1,无声
2,声音太小
3,声音不正常
又是不显示图片,烦死了,一点发帖的兴趣都没了
1,解决无声问题
既然是android项目,就使用tinymix。
adb或者串口连接后输入
tinymix
当时有问题的值是这样的
27 BOOL 1 Right Mixer Right Playback Switch Off
28 BOOL 1 Right Mixer Right Bypass Switch On
29 BOOL 1 Left Mixer Left Playback Switch Off
30 BOOL 1 Left Mixer Left Bypass Switch On
看起来是进入了bypass模式。
搜索代码
61 #define ES8323_DACCONTROL17 0x27 --> 39
62 #define ES8323_DACCONTROL20 0x28 --> 40
查看手册 寄存器39
说明bit6被置1
即音频信号走的是红线,对于我们 播放声音来说应该是i2s数据即图中的Serial Audio Data(SE),走蓝线才对。 所以这里就要去查看为什么走的是红色的线路, 对于LIN来说,个人认为就行插入了一个话筒,话筒的数据走红线通过spk输出。 因为我们项目中没有留LIN的接口,所以这里原因是检测到来了话筒的插入,只需要修改dts,屏蔽代码检测就可以
2,解决声音太小问题
项目只使用了一路输出,所以配置control 23就可以
tinymix 23
可以获取可以设置的范围
Output 2 Playback Volume: 33 33 (range 0->33)
这里最大是33,这是我修改过的,源码中的值是64,
因为在测试的过程中
音量设置成34反而比33小很多,所以去看了看手册
可以看到范围是00000 ~ 100001(33)
修改代码
3,声音不正常
声音不正常,就是在播放音乐的时候,背景音乐正常,但是人声感觉很遥远,声音很小
由于没有什么 思路,所以去翻手册,然后发现了一个这样的寄存器
意思就是可以将左右声道的信号模拟输出180相位反转,具体怎么反转不了解,修改代码试试
2个bit这样验证的话,最少也改代码3次,这样不灵活,所以还是使用control控件的方法
最新发现将左声道的模拟输出进行180度相位反转后,声音正常。
|