RK3568系列12——ES8316音频芯片配置
RK3568平台官方推荐搭配RK809PMIC使用,而RK809集成了一个音频芯片,但是其音质效果并没有独立的音频芯片那么好,因此项目中采用一块ES8316芯片作为系统的音频输出。
预备知识
- DAI(Digital Audio Interface):CPU端声音输出通路,有I2S、PDM、SPDIF等格式
- codec:物理音频芯片
- sound-card:软件驱动,用于连接DAI和codec
原理图分析
- 地址脚(芯片第31脚):被拉低,因此I2C地址为
0x10 - I2C4总线接入的是M1通道
CODEC配置
由于ES8316只有一对双声道的音频输出接口,因此项目中将功放和耳机输出接在一起,由一个GPIO(GPIO3_C6)控制功放的开关,插入耳机时关闭功放,实现音频通路的切换。
1 |
&pinctrl { |
DAI配置
RK3568的I2S1音频总线支持8个声道,但是项目中只用到两个声道,因此要重新定义一下I2S1使用的PIN脚,另外RK809音频相关的配置无法被彻底关闭,因此需要彻底删除。
1 |
&i2s1_8ch { |
声卡配置
声卡(Audio Card/Sound Card/MACHINE)的作用是将CODEC(物理声卡)和DAI(CPU音频输出)连接在一起,形成一个供上层(Android)使用的抽象音频设备。这里需要注意的是,声卡的工作频率必须设置在11289600hz(采样率44.1Khz * 比特率256),暂未找到如何突破这个上限。
1 |
/ { |
耳机检测配置
RK平台使用了一种新的耳机检测的方式,耳机状态由CPU来检测,然后通过extcon的方式通知CODEC来做出相关动作,这里需要通知ES8316来开关功放。其中检测方式有两种:A.耳机插入检测电路连接CODEC,CODEC检测到插入后,产生一个中断给CPU;B.耳机插入检测电路通过GPIO的方式连接CPU。当CPU检测到耳机插入后,可以通过ADC的方式检测耳机是否带麦克风。项目中使用方式B,但是ADC脚并没有接线,因此不进行相关配置。
1 |
/ { |
调试命令
1 |
# 探测I2C设备 |