rk3588 适配音频解码芯片 ES8316

张开发
2026/5/4 18:28:39 15 分钟阅读
rk3588 适配音频解码芯片 ES8316
rk3588 适配音频芯片 ES8316在 RK3588 的硬件设计中ES8316是另一种非常流行的音频 Codec 选择。虽然它与 ES8388 同属顺芯Everest系列但在电路设计、功耗以及某些特定功能上ES8316 针对现代移动设备做了进一步优化。以下是使用 ES8316 的主要优点1. 真正的“单电源”设计 (Simplified Power Supply)这是 ES8316 相比 ES8388 最显著的硬件优势内置电荷泵 (Capless HP)ES8316 内置了负压电荷泵可以直接产生以地Ground为参考的音频输出。省去输出隔直电容传统的 Codec如 ES8388通常需要在耳机输出端串联两个巨大的电解电容100uF-220uF来滤除直流分量。而 ES8316 不需要这些电容这极大地节省了 PCB 空间并降低了 BOM 成本。2. 更好的低频响应 (Better Bass Response)由于省去了输出端的隔直电容无频率衰减电容的存在通常会形成一个高通滤波器导致低音损耗。ES8316 的直连输出方式能够保留更完整的原始低音频率音质听感上更加饱满。减少相位失真物理电容引入的相位偏差被消除声音更真实。3. 更低的待机功耗 (Ultra-low Power)ES8316 针对可穿戴和移动设备进行了深度优化更细致的电源管理在待机和休眠模式下它的静态电流Static Current比 ES8388 更小。对于需要通过电池供电的 RK3588 平板或手持设备这有助于提升续航。4. 优秀的驱动与 SDK 兼容性作为 Rockchip 的官方推荐参考设计之一内核深度支持在 RK3588 的官方 Linux 和 Android SDK 中ES8316 的驱动es8316.c和 DTS 配置非常成熟。硬件接口匹配同样通过 I2S 数据接口和 I2C 控制接口与 RK3588 连接硬件布线逻辑与 ES8388 基本一致开发者可以无缝切换。5. 录音功能增强 (MIC Input Performance)ES8316 在麦克风输入端ADC的表现也较为出色更强的抗噪能力它在模拟输入端的噪声抑制处理上比老一代芯片略有提升。支持差分输入有利于在复杂的电路环境下减少外部电磁干扰EMI对录音质量的影响。ES8316 vs. ES8388 对比汇总特性ES8316ES8388耳机驱动直驱 (Capless)无需大电容电容耦合需要两个大电容PCB 占用极小较大 (受限于电容体积)低音表现优秀(无截断)一般电源要求1.8V - 3.3V (单电源表现更佳)3.3V 典型值应用倾向追求轻薄、低功耗的便携设备追求极致成本的商显、工控板作者炭烤毛蛋 点击博主了解更多。文章目录rk3588 适配音频芯片 ES83161. 真正的“单电源”设计 (Simplified Power Supply)2. 更好的低频响应 (Better Bass Response)3. 更低的待机功耗 (Ultra-low Power)4. 优秀的驱动与 SDK 兼容性5. 录音功能增强 (MIC Input Performance)ES8316 vs. ES8388 对比汇总1. rk3588 ES8316 原理图1.1 ES8316 核心原理图1.1.1 模拟电源AVDDAVCC_1V8_CODE_C_S0 → ES8316 引脚 221.1.2 数字核心电源DVDDVCC_1V8_S0 → ES8316 引脚 241.1.3. IO 电源PVDDVCC_3V3_S0 → ES8316 引脚 41.2 ES8316 耳机1.2.1 耳机输出HPOL / HPOR1.2.2 麦克风输入及偏置MIC_IN2P / MICBIAS11.2.3 耳机插入检测HP_DETECT1.2.4 按键检测SARADC_VIN3_HP_HOOK2. rk3588 ES8316 内核配置2.1 RK3588 ↔ ES83162.1.1 RK3588 ↔ ES8316 音频数据通道 (I2S 总线)2.1.2 RK3588 ↔ ES8316 控制配置通道 (I2C 总线)2.1.3 RK3588 ↔ ES8316 同步基准主时钟 (MCLK)2.1.4 RK3588 ↔ ES8316 辅助信号 (中断与检测)2.1.5 RK3588 ↔ ES8316 模拟音频输入/输出2.2 rk3588 ES8316 内核设备树3. rk3588 ES8316 HAL 配置结语1. rk3588 ES8316 原理图1.1 ES8316 核心原理图ES8316 需要三组独立的电源轨模拟电源AVDD、数字核心电源DVDD和IO 电源PVCC。原理图中对应的网络及去耦配置如下1.1.1 模拟电源AVDDAVCC_1V8_CODE_C_S0→ ES8316 引脚 22项目内容电压1.8V供电对象ES8316 内部 ADC、DAC、PLL 等模拟电路去耦电容C560100nF、C56110µF、C5624.7µF、C56310µF、C56410µF串联元件R39610kΩ去耦电容组合多个电容并联覆盖从低频到高频的噪声布局时应紧贴 AVDD 引脚。1.1.2 数字核心电源DVDDVCC_1V8_S0→ ES8316 引脚 24项目内容电压1.8V供电对象数字核心逻辑去耦电容C571100nF、C5724.7µF、C56810µF串联元件无直接连接该电源轨还与耳机检测上拉电阻共用见第二部分。1.1.3. IO 电源PVDDVCC_3V3_S0→ ES8316 引脚 4项目内容电压3.3V供电对象I2S、I2C 等数字 IO 接口需匹配主控RK3588的 3.3V 电平去耦电容无串联元件0Ω原理图中未直接画出 VCC 与芯片引脚的连接但根据 ES8316 标准封装引脚 4 为 PVDDVCC_3V3_S0即为其供电网络。1.2 ES8316 耳机耳机座电路主要包括耳机左右声道输出、麦克风输入及偏置、插入检测和按键检测。这些电路的供电来源于 ES8316 提供的信号或系统电源轨。1.2.1 耳机输出HPOL / HPOR来源ES8316 的HPOL引脚 19和HPOR引脚 20直接连接到耳机座。供电无需外部电源由 ES8316 内部电荷泵产生负压驱动通常能直接驱动 16Ω/32Ω 耳机。串联元件可能串联有磁珠或 0Ω 电阻图中未显示但通常直连。1.2.2 麦克风输入及偏置MIC_IN2P / MICBIAS1信号网络说明麦克风正极MIC_IN2P连接到 ES8316 的 MIC 输入引脚原理图中为MIC_IN2P网络麦克风偏置MICBIAS1由 ES8316 内部产生典型 2.2V 或 2.5V用于给驻极体麦克风供电供电MICBIAS1是输出不需要外部电源MIC_IN2P为输入无需供电。外部元件可能有上拉电阻或滤波电容但原理图中仅见MICBIAS1网络直接连到耳机座的MIC引脚。1.2.3 耳机插入检测HP_DETECT网络上拉电阻上拉电源去向HP_DETECT330kΩVCC_1V8_S0连接到 ES8316 的 GPIO用于检测另一路上拉10kΩVCC_1V8_S0连接到HP_INT然后直接到主控原理耳机座内部机械开关未插入时HP_DETECT被上拉至高电平1.8V插入时开关接地拉低产生中断。1.2.4 按键检测SARADC_VIN3_HP_HOOK网络上拉电阻上拉电源去向SARADC_VIN3_HP_HOOKR731410kΩVCC_1V8_S0推测连接到 RK3588 的 SARADC 输入原理带线控的耳机如音量 /- 键按下时会在麦克风偏置与地之间接入不同电阻产生分压ADC 检测电压值识别按键。外部元件10kΩ 和 10nF 组成 RC 滤波稳定 ADC 采样值。10nF 为旁路电容。2. rk3588 ES8316 内核配置2.1 RK3588 ↔ ES8316ES8316 音频编解码器RK3588 SoCI2S 总线含BCLK/LRCK/SDO/SDII2C 总线含SCL/SDAMCLK 主时钟中断信号耳机插入/拔出I2S 控制器音频数据接口I2C 控制器音频控制接口主时钟输出GPIO 通用输入输出中断/检测I2S 从接口音频数据收发I2C 从接口寄存器配置主时钟输入耳机/麦克风检测引脚中断输出模拟音频输入/输出麦克风/扬声器/耳机麦克风扬声器/耳机在这个物理连接图中我们将I2S和I2C分别视为两条独立且完整的总线。此架构与上一篇《rk3588 适配音频解码芯片 es8388》 中 es8388 高度一致因为它们的连接方式相同都符合标准音频编解码器的连接规范。2.1.1 RK3588 ↔ ES8316 音频数据通道 (I2S 总线)角色定位RK3588作为I2S主设备MasterES8316作为I2S从设备Slave。传输内容数字音频流PCM数据。方向双向全双工。播放方向RK3588 → ES8316DAC数据用于扬声器/耳机。录音方向ES8316 → RK3588ADC数据来自麦克风。物理实现I2S总线由4条独立信号线组成SCLK(BCLK)位时钟由RK3588产生。LRCK(WS)左右声道时钟由RK3588产生。SDO数据输出RK3588播放数据输出到ES8316。SDI数据输入ES8316录音数据输入到RK3588。典型参数支持8kHz至96kHz采样率位深度最高24位[reference:0]。ES8316支持I2S、左对齐、DSP/PCM和TDM等多种数字音频接口格式[reference:1]。在RK3588平台驱动中通常配置为标准的I2S格式[reference:2]。2.1.2 RK3588 ↔ ES8316 控制配置通道 (I2C 总线)角色定位RK3588作为I2C主设备ES8316作为I2C从设备。传输内容控制命令和状态信息如音量调节、音频通路切换、工作模式设置、寄存器读写。方向双向半双工。物理实现由2条信号线组成SCL串行时钟由RK3588产生。SDA串行数据双向数据线。I2C设备地址ES8316的I2C从地址通常为0x10或0x11。在Rock 5B等开发板上挂载于I2C7总线地址为0x10[reference:3][reference:4]。I2C总线用于实现复杂的音频功能如自动电平控制ALC、噪声门、3频段参数均衡器PEQ和立体声增强等这些都可以通过I2C接口写入寄存器来配置[reference:5]。2.1.3 RK3588 ↔ ES8316 同步基准主时钟 (MCLK)连接RK3588的MCLK_OUT→ ES8316的MCLK_IN。作用为ES8316提供精准的时钟基准用于内部PLL生成采样时钟和I2S位时钟。频率支持标准音频时钟256fs、384fs、512fs等以及USB时钟12MHz、24MHz[reference:6]。在RK3588的设备树配置中通常设置mclk-fs 256[reference:7]。2.1.4 RK3588 ↔ ES8316 辅助信号 (中断与检测)连接ES8316的检测引脚 → RK3588的GPIO。功能ES8316支持耳机和外部麦克风检测[reference:8]。当有外设插入或拔出时ES8316可通过此引脚向RK3588发送中断信号通知系统进行音频通路切换。实现在RK3588的设备树中可以配置hp-det-gpio属性来指定用于检测的GPIO引脚[reference:9]。2.1.5 RK3588 ↔ ES8316 模拟音频输入/输出输入录音ES8316提供两对带差分输入选项的模拟输入引脚可连接麦克风[reference:10]。输出播放ES8316内置以地为中心的耳机驱动器可直接驱动耳机LOUT/ROUT引脚连接扬声器功放或耳机接口[reference:11]。2.2 rk3588 ES8316 内核设备树废话不多说接下来是内核设备树配置。/{es8316_sound: es8316-sound{statusokay;compatiblerockchip,multicodecs-card;rockchip,card-namerockchip-es8316;hp-det-gpiogpio1 RK_PD5 GPIO_ACTIVE_LOW;io-channelssaradc3;io-channel-namesadc-detect;keyup-threshold-microvolt1800000;poll-interval100;spk-con-gpiogpio1 RK_PD3 GPIO_ACTIVE_HIGH;hp-con-gpiogpio1 RK_PD2 GPIO_ACTIVE_HIGH;rockchip,pre-power-on-delay-ms30;rockchip,post-power-down-delay-ms40;rockchip,formati2s;rockchip,mclk-fs256;rockchip,cpui2s0_8ch;rockchip,codeces8316;rockchip,audio-routingHeadphone,LOUT1,Headphone,ROUT1,Speaker,LOUT2,Speaker,ROUT2,Headphone,Headphone Power,Headphone,Headphone Power,Speaker,Speaker Power,Speaker,Speaker Power,LINPUT1,Main Mic,LINPUT2,Main Mic,RINPUT1,Headset Mic,RINPUT2,Headset Mic;pinctrl-namesdefault;pinctrl-0hp_det;play-pause-key{labelplaypause;linux,codeKEY_PLAYPAUSE;press-threshold-microvolt2000;};};};i2c7{statusokay;es8316: es831611{statusokay;#sound-dai-cells 0;compatibleeverest,es8316,everest,es8323;reg0x11;clocksmclkout_i2s0;clock-namesmclk;assigned-clocksmclkout_i2s0;assigned-clock-rates12288000;pinctrl-namesdefault;pinctrl-0i2s0_mclk;};};i2s0_8ch{statusokay;pinctrl-0i2s0_lrcki2s0_sclki2s0_sdi0i2s0_sdo0;};pinctrl{headphone{hp_det: hp-det{rockchip,pins1RK_PD5 RK_FUNC_GPIOpcfg_pull_none;};};};编译后重新刷入固件可以看到已经注册的声卡。cat/proc/asound/cards0[rockchipes8316c]: simple-card - rockchip,es8316-codec rockchip,es8316-codec3. rk3588 ES8316 HAL 配置Android 系统如果尚未配置 ES8316 音频解码芯片需要在声卡列表增加 ES8316 声卡选项。diff--gita/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c index 15cb477..99b0905100644--- a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c -516,7 516,6 struct dev_proc_info SPEAKER_OUT_NAME[]/*addcodesdai name here*/{realtekrt5678co, NULL,},{rkhdmianalogsnd, NULL,},{rockchipcx2072x, NULL,}, {rockchipes8316c, NULL,},{rockchipes8323c, NULL,},{rockchipes8388c, NULL,},{rockchipes8388, NULL,},然后设置对应的音频路由将 Android audio service 转换为 jason 配置再经 HAL 传递到内核驱动。ES8316 音频路由配置文件路径如下hardware/rockchip/audio/tinyalsa_hal/codec_config/es8316_config.h结语不枉博主详细讲解欢迎订阅博主–炭烤毛蛋 。

更多文章