rk3588 适配音频解码芯片 es8388在 RK3588 这种高性能 SoC 平台上选择ES8388作为音频解码芯片Audio Codec是一个非常经典且平衡的选择。这种组合在嵌入式开发、单板计算机如 Orange Pi, Rock 5B 等以及工业控制领域非常常见。使用 ES8388 的主要优点1. 成本效益极高 (Cost-Effectiveness)ES8388 是一款国产苏州顺芯的高性能、低功耗立体声音频 Codec。低单价相比于瑞昱Realtek或德州仪器TI的同类芯片ES8388 的采购成本极具竞争力。外围电路简单它的集成度高需要的电容、电阻等被动器件较少能有效降低整体 BOM 成本。2. 成熟的驱动支持 (Driver Maturity)由于 ES8388 在 Rockchip 平台从 RK3288, RK3399 到现在的 RK3588上已经使用了多年其驱动程序极其稳定原生支持Rockchip 的 SDKLinux 内核、Android中已经包含了完善的 ES8388 驱动。调试门槛低开发者在配置Device Tree (DTS)时可以直接参考官方示例基本能实现“开箱即用”极大缩短了研发周期。3. 接口匹配度高 (Interface Compatibility)ES8388 的硬件接口与 RK3588 的音频控制器完美对齐I2S/PCM支持标准的 I2S 接口能够轻松处理多采样率的音频数据。I2C 控制通过标准的 I2C 接口进行寄存器配置逻辑清晰。录播一体具备 2 通道 ADC录音和 2 通道 DAC播放正好满足大多数通用设备对接耳机、麦克风的需求。4. 功耗控制出色 (Low Power Consumption)RK3588 虽然性能强劲但在移动设备或嵌入式网关中功耗依然是关键指标。ES8388 设计初衷即包含便携式应用具备多种省电模式Power Management。在非活动状态下可以按模块关闭模拟/数字电路非常适合对散热和续航有要求的 RK3588 终端。5. 功能实用覆盖主流需求对于大多数 RK3588 的应用场景如 AI 盒子、边缘计算服务器、商显屏ES8388 提供的功能已经足够支持多重模拟增益调节方便适配不同灵敏度的麦克风。内置混音器支持灵活的音频路径路由。作者炭烤毛蛋 点击博主了解更多。文章目录rk3588 适配音频解码芯片 es83881. 成本效益极高 (Cost-Effectiveness)2. 成熟的驱动支持 (Driver Maturity)3. 接口匹配度高 (Interface Compatibility)4. 功耗控制出色 (Low Power Consumption)5. 功能实用覆盖主流需求1. rk3588 es8388 原理图1.1 ES8388 核心原理图1.1.1 ES8388 核心供电网络1.1.2 电源去耦与滤波电路1) 1.8V 电源VCCA1V8_CDDEC2) 3.3V 模拟电源AVDD3V3_CDDEC / VCCA3V3_CDDEC1.2 ES8388 HP1.2.1 耳机供电1.2.2 耳机关键元件1.3 ES8388 电源汇总1.4 es8388 电源流向图2. rk3588 es8388 内核配置2.1 RK3588 ↔ ES83882.1.1 RK3588 ↔ ES8388 物理连接示意图2.1.2 RK3588 ↔ ES8388 音频数据通道 (I2S 总线)2.1.3 RK3588 ↔ ES8388 控制配置通道 (I2C 总线)2.1.4 RK3588 ↔ ES8388 同步基准主时钟MCLK2.1.5 RK3588 ↔ ES8388 辅助控制信号 (GPIO to CE)2.1.6 模拟音频输入/输出2.2 rk3588 ES8388 内核设备树3. rk3588 es8388 HAL 配置结语1. rk3588 es8388 原理图1.1 ES8388 核心原理图根据 ES8388 的原理图对 ES8388 音频编解码器及其相关电路的供电方案进行分析。1.1.1 ES8388 核心供电网络从第一张原理图可以看出ES8388 使用了三组主要的电源网络网络标签典型电压作用域对应ES8388引脚推测VCCA1V8_CDDEC1.8V数字核心 / 数字IO 电源DVDD引脚 2 (DVDD) 或 3 (PVDD)VCCA3V3_CDDEC3.3V数字IO / 模拟电源AVDD引脚 17 (AVDD)AVDD3V3_CDDEC3.3V模拟电源AVDD引脚 17 (AVDD)注意AVDD3V3_CDDEC与VCCA3V3_CDDEC可能是同一网络的不同命名或者通过磁珠/电阻单点连接。原理图中两者同时出现通常表示模拟和数字 3.3V 分开走线最终在芯片附近汇合。1.1.2 电源去耦与滤波电路1) 1.8V 电源VCCA1V8_CDDEC去耦电容C1764.7µFX5R16V—— 大容量储能滤除低频纹波C156100nFX5R16V—— 滤除中高频噪声C127100nFX5R16V—— 靠近芯片引脚放置布局特点大小电容并联覆盖宽频段干扰。2) 3.3V 模拟电源AVDD3V3_CDDEC / VCCA3V3_CDDEC去耦电容C1534.7µFX5R10VC145100nFX5R10V另外在芯片Analog supply区域附近还标注了C133、C161等多个电容值未完全给出推测为 100nF 或 1µF隔离电阻R1134.7Ω5%—— 通常用作RC 低通滤波或电源隔离与电容组成 π 型滤波防止数字噪声窜入模拟电源。1.2 ES8388 HP1.2.1 耳机供电耳机部分原理图主要围绕耳机座CTIA 标准和检测电路涉及以下供电网络电压用途VCCA3V3_CODECO3.3V为耳机放大器或检测电路提供电源VCC_1V8_S01.8V为电平转换、MOSFET 栅极控制或上拉提供逻辑电压1.2.2 耳机关键元件HP_DET_L耳机插入检测信号通过电阻R134100kΩ上拉至VCC_1V8_S0默认高电平插入时被耳机插座的机械开关拉低产生中断。MIC 偏置麦克风偏置电压通常由 ES8388 内部提供MICBIAS无需外部供电。图中未直接显示但通过INPPHONEMIC网络连接至芯片。输出耦合LOUT1和ROUT1通过电容C19322µF、C20222µF耦合到耳机座这些电容的耐压6.3V或10V高于音频交流摆幅正常工作。ESD 保护Q22、Q233WNM2016-3 / WMM2016-3可能是低电容 TVS 二极管阵列或MOSFET 开关用于耳机接口的静电保护和信号切换。其供电由VCC_1V8_S0提供。1.3 ES8388 电源汇总电源轨电压主要负载去耦方式备注VCCA1V8_CDDEC1.8VES8388 数字核心4.7µF 100nF低噪声避免与模拟地耦合VCCA3V3_CDDEC3.3VES8388 数字IO未明确可能与模拟共用建议加磁珠与模拟电源隔离AVDD3V3_CDDEC3.3VES8388 模拟电路ADC/DAC/PLL4.7µF 100nF 4.7Ω RC关键需极低纹波建议 LC 或 π 型滤波VCCA3V3_CODECO3.3V耳机检测、外部开关100nFC209可与 AVDD 同源但需单独滤波VCC_1V8_S01.8V上拉电阻、MOSFET 逻辑100nFC200可由系统 1.8V LDO 提供1.4 es8388 电源流向图系统电源 ├─ 1.8V LDO ──┬─ VCCA1V8_CDDEC ──→ ES8388 DVDD/PVDD │ └─ VCC_1V8_S0 ──→ 耳机检测上拉、ESD保护逻辑 └─ 3.3V LDO ──┬─ AVDD3V3_CDDEC ──4.7Ω4.7µF100nF──→ ES8388 AVDD └─ VCCA3V3_CODECO ──100nF──→ 耳机座供电、检测电路2. rk3588 es8388 内核配置ES8388 典型工作流程系统启动RK3588 通过 I2C 总线配置 ES8388 的寄存器设置采样率、数据格式、音频通路例如将麦克风输入路由到 ADC将 DAC 输出路由到耳机。播放音乐RK3588 通过 I2S 总线持续发送 PCM 音频数据ES8388 接收后转换为模拟信号输出。调节音量用户滑动音量条 → RK3588 通过 I2C 总线写入 ES8388 的音量控制寄存器实时改变放大增益。切换场景插入耳机 → RK3588 检测到 GPIO 中断 → 通过 I2C 总线重新配置 ES8388 的输出路由关闭扬声器、开启耳机放大器。 I2S I2C 两条总线如何协同工作总线职责数据方向数据量实时性要求I2S传输音频数据双向全双工高每秒几兆位极高必须连续I2C传输控制命令主→从读写低字节级低可容忍毫秒级延迟两条总线各司其职互不干扰共同实现了完整且灵活的音频系统。2.1 RK3588 ↔ ES83882.1.1 RK3588 ↔ ES8388 物理连接示意图ES8388 音频编解码器RK3588 SoCI2S 总线含BCLK/LRCK/SDO/SDII2C 总线含SCL/SDAMCLK 主时钟GPIO → CEI2S 控制器音频数据接口I2C 控制器音频控制接口通用输入输出主时钟输出I2S 从接口音频数据收发I2C 从接口寄存器配置控制使能引脚主时钟输入模拟音频输入/输出麦克风/扬声器/耳机麦克风扬声器/耳机在这个物理连接图中我们将I2S和I2C分别视为两条独立且完整的总线不再拆分成具体的信号线如BCLK、LRCK、SDO、SDI 或 SCL、SDA。这样更便于理解两个芯片之间的“接口级”关系。2.1.2 RK3588 ↔ ES8388 音频数据通道 (I2S 总线)角色定位RK3588 作为I2S 主设备MasterES8388 作为I2S 从设备Slave。传输内容数字音频流PCM 数据。方向双向全双工。播放方向RK3588 → ES8388DAC 数据用于扬声器/耳机录音方向ES8388 → RK3588ADC 数据来自麦克风物理实现在硬件设计上I2S 总线实际由4 条独立信号线组成但在本图抽象为一条总线SCLK位时钟由 RK3588 产生同步每个数据位。LRCK左右声道时钟由 RK3588 产生指示当前数据属于左声道还是右声道。SDO数据输出RK3588 播放数据输出到 ES8388。SDI数据输入ES8388 录音数据输入到 RK3588。典型参数采样率 8kHz ~ 192kHz位深度 16bit/24bit/32bitBCLK 频率 采样率 × 位深 × 通道数。2.1.3 RK3588 ↔ ES8388 控制配置通道 (I2C 总线)角色定位RK3588 作为I2C 主设备ES8388 作为I2C 从设备。传输内容控制命令和状态信息如音量调节、音频通路切换、工作模式设置、寄存器读写。方向双向半双工RK3588 发起读写操作ES8388 响应。物理实现由2 条信号线组成本图抽象为一条总线SCL串行时钟由 RK3588 产生。SDA串行数据双向数据线。I2C 设备地址ES8388 的 I2C 从地址通常为0x10或0x11具体取决于CE引脚电平或硬件设计。典型速率100 kHz标准模式或 400 kHz快速模式足以满足音频控制命令的低频需求。2.1.4 RK3588 ↔ ES8388 同步基准主时钟MCLK连接RK3588 的MCLK_OUT→ ES8388 的MCLK_IN。作用为 ES8388 提供精准的时钟基准用于内部 PLL 生成采样时钟和 I2S 位时钟。频率通常是采样率的 256 倍或 384 倍例如 48kHz 采样率时MCLK 12.288MHz 或 24.576MHz。必要性没有稳定的 MCLKES8388 无法正确采样或转换音频数据。2.1.5 RK3588 ↔ ES8388 辅助控制信号 (GPIO to CE)连接RK3588 的一个通用 GPIO 引脚 → ES8388 的CE芯片使能/控制接口选择。功能决定控制接口模式CE 为低电平时ES8388 工作于 I2C 模式CE 为高电平时工作于 SPI 模式。在 RK3588 平台中通常将 CE 拉低以使用 I2C 控制。可能影响 I2C 地址部分设计中CE 的电平还会影响 I2C 从地址的最低有效位。实现RK3588 在系统初始化时通过 GPIO 输出固定电平将 ES8388 锁定为 I2C 模式。2.1.6 模拟音频输入/输出输入录音ES8388 的LIN1/LIN2、RIN1/RIN2引脚连接麦克风单声道或立体声。输出播放ES8388 的LOUT1/LOUT2、ROUT1/ROUT2引脚连接扬声器功放或耳机插孔。模拟部分不属于数字总线但它们是音频数据的最终目的地和来源。2.2 rk3588 ES8388 内核设备树废话不多说接下来是内核设备树配置。/{es8388_sound: es8388-sound{statusokay;compatiblerockchip,multicodecs-card;rockchip,card-namerockchip-es8388;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,codeces8388;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;es8388: es838811{statusokay;#sound-dai-cells 0;compatibleeverest,es8388,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[rockchipes8388c]: simple-card - rockchip,es8388-codec rockchip,es8388-codec3. rk3588 es8388 HAL 配置Android 系统如果尚未配置 ES8388 音频解码芯片需要在声卡列表增加 es8388 声卡选项。diff--gita/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c index 0033bf3..cc98f34100644--- a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c -291,7 291,6 struct dev_proc_info SPEAKER_OUT_NAME[]/*addcodesdai name here*/{rockchipcx2072x, NULL,},{rockchipes8316c, NULL,},{rockchipes8323c, NULL,}, {rockchipes8388c, NULL,},{rockchipes8396c, NULL,},{rockchiprk, NULL,},{rockchiprk809co, NULL,},然后设置对应的音频路由将 Android audio service 转换为 jason 配置再经 HAL 传递到内核驱动。es8388 音频路由配置文件路径如下hardware/rockchip/audio/tinyalsa_hal/codec_config/es8388_config.h结语不枉博主详细讲解欢迎订阅博主–炭烤毛蛋 。