rk3588 适配音频解码芯片 es8388

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 的 SDK(Linux 内核、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 适配音频解码芯片 es8388](#rk3588 适配音频解码芯片 es8388)
      • [1. 成本效益极高 (Cost-Effectiveness)](#1. 成本效益极高 (Cost-Effectiveness))
      • [2. 成熟的驱动支持 (Driver Maturity)](#2. 成熟的驱动支持 (Driver Maturity))
      • [3. 接口匹配度高 (Interface Compatibility)](#3. 接口匹配度高 (Interface Compatibility))
      • [4. 功耗控制出色 (Low Power Consumption)](#4. 功耗控制出色 (Low Power Consumption))
      • [5. 功能实用,覆盖主流需求](#5. 功能实用,覆盖主流需求)
  • [1. rk3588 es8388 原理图](#1. rk3588 es8388 原理图)
    • [1.1 ES8388 核心原理图](#1.1 ES8388 核心原理图)
    • [1.2 ES8388 HP](#1.2 ES8388 HP)
      • [1.2.1 耳机供电](#1.2.1 耳机供电)
      • [1.2.2 耳机关键元件](#1.2.2 耳机关键元件)
    • [1.3 ES8388 电源汇总](#1.3 ES8388 电源汇总)
    • [1.4 es8388 电源流向图](#1.4 es8388 电源流向图)
  • [2. rk3588 es8388 内核配置](#2. rk3588 es8388 内核配置)
    • [2.1 RK3588 ↔ ES8388](#2.1 RK3588 ↔ ES8388)
      • [2.1.1🔌 RK3588 ↔ ES8388 物理连接示意图](#2.1.1🔌 RK3588 ↔ ES8388 物理连接示意图)
      • [2.1.2 RK3588 ↔ ES8388 音频数据通道 (I2S 总线)](#2.1.2 RK3588 ↔ ES8388 音频数据通道 (I2S 总线))
      • [2.1.3 RK3588 ↔ ES8388 控制配置通道 (I2C 总线)](#2.1.3 RK3588 ↔ ES8388 控制配置通道 (I2C 总线))
      • [2.1.4 RK3588 ↔ ES8388 同步基准主时钟(MCLK)](#2.1.4 RK3588 ↔ ES8388 同步基准主时钟(MCLK))
      • [2.1.5 RK3588 ↔ ES8388 辅助控制信号 (GPIO to CE)](#2.1.5 RK3588 ↔ ES8388 辅助控制信号 (GPIO to CE))
      • [2.1.6 模拟音频输入/输出](#2.1.6 模拟音频输入/输出)
    • [2.2 rk3588 ES8388 内核设备树](#2.2 rk3588 ES8388 内核设备树)
  • [3. rk3588 es8388 HAL 配置](#3. rk3588 es8388 HAL 配置)
  • 结语

1. rk3588 es8388 原理图

1.1 ES8388 核心原理图

根据 ES8388 的原理图,对 ES8388 音频编解码器及其相关电路的供电方案进行分析。

1.1.1 ES8388 核心供电网络

从第一张原理图可以看出,ES8388 使用了三组主要的电源网络:

网络标签 典型电压 作用域 对应ES8388引脚(推测)
VCCA1V8_CDDEC 1.8V 数字核心 / 数字IO 电源(DVDD) 引脚 2 (DVDD) 或 3 (PVDD)
VCCA3V3_CDDEC 3.3V 数字IO / 模拟电源(AVDD) 引脚 17 (AVDD)
AVDD3V3_CDDEC 3.3V 模拟电源(AVDD) 引脚 17 (AVDD)

注意:AVDD3V3_CDDEC 与 VCCA3V3_CDDEC 可能是同一网络的不同命名,或者通过磁珠/电阻单点连接。原理图中两者同时出现,通常表示模拟和数字 3.3V 分开走线,最终在芯片附近汇合。

1.1.2 电源去耦与滤波电路

1) 1.8V 电源(VCCA1V8_CDDEC)
  • 去耦电容 :
    • C176(4.7µF,X5R,16V)------ 大容量储能,滤除低频纹波
    • C156(100nF,X5R,16V)------ 滤除中高频噪声
    • C127(100nF,X5R,16V)------ 靠近芯片引脚放置
  • 布局特点:大小电容并联,覆盖宽频段干扰。
2) 3.3V 模拟电源(AVDD3V3_CDDEC / VCCA3V3_CDDEC)
  • 去耦电容 :
    • C153(4.7µF,X5R,10V)
    • C145(100nF,X5R,10V)
    • 另外在芯片 Analog supply 区域附近还标注了 C133、C161 等多个电容(值未完全给出,推测为 100nF 或 1µF)
  • 隔离电阻 :R113(4.7Ω,5%)------ 通常用作 RC 低通滤波 或 电源隔离,与电容组成 π 型滤波,防止数字噪声窜入模拟电源。

1.2 ES8388 HP

1.2.1 耳机供电

耳机部分原理图主要围绕耳机座(CTIA 标准)和检测电路,涉及以下供电:

网络 电压 用途
VCCA3V3_CODECO 3.3V 为耳机放大器或检测电路提供电源
VCC_1V8_S0 1.8V 为电平转换、MOSFET 栅极控制或上拉提供逻辑电压

1.2.2 耳机关键元件

  • HP_DET_L :耳机插入检测信号,通过电阻 R134(100kΩ)上拉至 VCC_1V8_S0,默认高电平;插入时被耳机插座的机械开关拉低,产生中断。
  • MIC 偏置 :麦克风偏置电压通常由 ES8388 内部提供(MICBIAS),无需外部供电。图中未直接显示,但通过 INPPHONEMIC 网络连接至芯片。
  • 输出耦合 :LOUT1 和 ROUT1 通过电容 C193(22µF)、C202(22µF)耦合到耳机座,这些电容的耐压(6.3V或10V)高于音频交流摆幅,正常工作。
  • ESD 保护 :Q22、Q233(WNM2016-3 / WMM2016-3)可能是 低电容 TVS 二极管阵列 或 MOSFET 开关 ,用于耳机接口的静电保护和信号切换。其供电由 VCC_1V8_S0 提供。

1.3 ES8388 电源汇总

电源轨 电压 主要负载 去耦方式 备注
VCCA1V8_CDDEC 1.8V ES8388 数字核心 4.7µF + 100nF 低噪声,避免与模拟地耦合
VCCA3V3_CDDEC 3.3V ES8388 数字IO 未明确(可能与模拟共用) 建议加磁珠与模拟电源隔离
AVDD3V3_CDDEC 3.3V ES8388 模拟电路(ADC/DAC/PLL) 4.7µF + 100nF + 4.7Ω RC 关键:需极低纹波,建议 LC 或 π 型滤波
VCCA3V3_CODECO 3.3V 耳机检测、外部开关 100nF(C209) 可与 AVDD 同源,但需单独滤波
VCC_1V8_S0 1.8V 上拉电阻、MOSFET 逻辑 100nF(C200) 可由系统 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µF+100nF)──→ ES8388 AVDD
                 └─ VCCA3V3_CODECO ──(100nF)──→ 耳机座供电、检测电路

2. rk3588 es8388 内核配置

ES8388 典型工作流程:

  1. 系统启动:RK3588 通过 I2C 总线配置 ES8388 的寄存器,设置采样率、数据格式、音频通路(例如将麦克风输入路由到 ADC,将 DAC 输出路由到耳机)。
  2. 播放音乐:RK3588 通过 I2S 总线持续发送 PCM 音频数据;ES8388 接收后转换为模拟信号输出。
  3. 调节音量:用户滑动音量条 → RK3588 通过 I2C 总线写入 ES8388 的音量控制寄存器,实时改变放大增益。
  4. 切换场景:插入耳机 → RK3588 检测到 GPIO 中断 → 通过 I2C 总线重新配置 ES8388 的输出路由(关闭扬声器、开启耳机放大器)。

🧠 I2S I2C 两条总线如何协同工作?

总线 职责 数据方向 数据量 实时性要求
I2S 传输音频数据 双向全双工 高(每秒几兆位) 极高(必须连续)
I2C 传输控制命令 主→从(读写) 低(字节级) 低(可容忍毫秒级延迟)
两条总线各司其职,互不干扰,共同实现了完整且灵活的音频系统。

2.1 RK3588 ↔ ES8388

2.1.1🔌 RK3588 ↔ ES8388 物理连接示意图

ES8388 音频编解码器
RK3588 SoC
I2S 总线

(含BCLK/LRCK/SDO/SDI)
I2C 总线

(含SCL/SDA)
MCLK 主时钟
GPIO → CE
I2S 控制器

(音频数据接口)
I2C 控制器

(音频控制接口)
通用输入输出
主时钟输出
I2S 从接口

(音频数据收发)
I2C 从接口

(寄存器配置)
控制使能引脚
主时钟输入
模拟音频输入/输出

麦克风/扬声器/耳机
麦克风
扬声器/耳机

在这个物理连接图中,我们将 I2S 和 I2C 分别视为两条独立且完整的总线,不再拆分成具体的信号线(如BCLK、LRCK、SDO、SDI 或 SCL、SDA)。这样更便于理解两个芯片之间的"接口级"关系。

2.1.2 RK3588 ↔ ES8388 音频数据通道 (I2S 总线)

  • 角色定位 :RK3588 作为 I2S 主设备(Master) ,ES8388 作为 I2S 从设备(Slave)。
  • 传输内容:数字音频流(PCM 数据)。
  • 方向 :双向全双工 。
    • 播放方向:RK3588 → ES8388(DAC 数据,用于扬声器/耳机)
    • 录音方向:ES8388 → RK3588(ADC 数据,来自麦克风)
  • 物理实现 :在硬件设计上,I2S 总线实际由 4 条独立信号线 组成,但在本图抽象为一条总线:
    • SCLK(位时钟):由 RK3588 产生,同步每个数据位。
    • LRCK(左右声道时钟):由 RK3588 产生,指示当前数据属于左声道还是右声道。
    • SDO(数据输出):RK3588 播放数据输出到 ES8388。
    • SDI(数据输入):ES8388 录音数据输入到 RK3588。
  • 典型参数:采样率 8kHz ~ 192kHz,位深度 16bit/24bit/32bit,BCLK 频率 = 采样率 × 位深 × 通道数。

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)。
  • 必要性:没有稳定的 MCLK,ES8388 无法正确采样或转换音频数据。

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 内核设备树

废话不多说,接下来是内核设备树配置。

bash 复制代码
/ {
	es8388_sound: es8388-sound {
		status = "okay";
		compatible = "rockchip,multicodecs-card";
		rockchip,card-name = "rockchip-es8388";
		hp-det-gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;
		io-channels = <&saradc 3>;
		io-channel-names = "adc-detect";
		keyup-threshold-microvolt = <1800000>;
		poll-interval = <100>;
		spk-con-gpio = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>;
		hp-con-gpio = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
		rockchip,pre-power-on-delay-ms = <30>;
		rockchip,post-power-down-delay-ms = <40>;
		rockchip,format = "i2s";
		rockchip,mclk-fs = <256>;
		rockchip,cpu = <&i2s0_8ch>;
		rockchip,codec = <&es8388>;
		rockchip,audio-routing =
			"Headphone", "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-names = "default";
		pinctrl-0 = <&hp_det>;
		play-pause-key {
			label = "playpause";
			linux,code = <KEY_PLAYPAUSE>;
			press-threshold-microvolt = <2000>;
		};
	};
};

&i2c7 {
	status = "okay";
	es8388: es8388@11 {
		status = "okay";
		#sound-dai-cells = <0>;
		compatible = "everest,es8388", "everest,es8323";
		reg = <0x11>;
		clocks = <&mclkout_i2s0>;
		clock-names = "mclk";
		assigned-clocks = <&mclkout_i2s0>;
		assigned-clock-rates = <12288000>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2s0_mclk>;
	};
};

&i2s0_8ch {
	status = "okay";
	pinctrl-0 = <&i2s0_lrck
		     &i2s0_sclk
		     &i2s0_sdi0
		     &i2s0_sdo0>;
};

&pinctrl {
	headphone {
		hp_det: hp-det {
			rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

编译后重新刷入固件,可以看到已经注册的声卡。

bash 复制代码
cat /proc/asound/cards
 0 [rockchipes8388c]: simple-card - rockchip,es8388-codec
                      rockchip,es8388-codec

3. rk3588 es8388 HAL 配置

Android 系统如果尚未配置 ES8388 音频解码芯片,需要在声卡列表增加 es8388 声卡选项。

bash 复制代码
diff --git a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c
index 0033bf3..cc98f34 100644
--- a/tinyalsa_hal/audio_hw.c
+++ b/tinyalsa_hal/audio_hw.c
@@ -291,7 +291,6 @@ struct dev_proc_info SPEAKER_OUT_NAME[] = /* add codes& dai 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

结语

不枉博主详细讲解,欢迎订阅博主--炭烤毛蛋 。

相关推荐
微帧Visionular7 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
辰辰观影9 小时前
Windows网盘视频播放器推荐:无广告4K HDR怎么选
音视频
2601_9668274510 小时前
电视端云盘在线播放怎么选?支持4K HDR的应用推荐
音视频
开开心心就好11 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
Zevalin爱灰灰15 小时前
Linux入门第二部分(ARM裸机篇) 第一章 开发环境搭建与了解
linux·arm开发·嵌入式
AI视频工具指南15 小时前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
辰辰观影17 小时前
无广告播放器推荐来啦
音视频
TrueDei17 小时前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
一条破秋裤18 小时前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
2601_9668274519 小时前
视频里的特效字幕怎么翻译?外挂字幕与AI字幕一键处理教程
音视频