rk3588 适配音频解码芯片 ALC5616
rk3588 适配音频芯片 alc5616
在 RK3588 的高性能方案中,选择ALC5616(来自 Realtek 瑞昱)通常意味着项目更侧重于音频性能的稳定性以及全球供应链的通用性。相比顺芯的 ES 系列,ALC5616 在中高端嵌入式产品中更为常见。以下是 使用 ALC5616 的主要优点:
1. 卓越的信噪比与音质 (Superior Audio Performance)
ALC5616 定位略高于基础款 Codec,其电气指标通常优于入门级芯片:
- 高信噪比 (SNR):其 DAC 的信噪比通常可达100dB左右,ADC 可达94dB左右。这意味着在 RK3588 运行高速运算(如 NPU 推理)产生电磁干扰时,音频输出的底噪更小,声音更纯净。
- 低失真:能够提供更细腻的音频还原,适合对音质有一定要求的商用平板或多媒体终端。
2. 强大的驱动力与硬件集成 (Integrated Headphone Amp)
- 内置 Class-G 耳机放大器:ALC5616 集成了高效的耳机驱动电路,不仅能够提供足够的输出功率,还能通过 Class-G 技术根据信号强度动态调整电源,从而在保证大推力的同时降低功耗。
- 无需隔直电容 (Cap-free):与 ES8316 类似,它支持无电容输出设计,节省 PCB 空间并改善低频响应。
3. 极佳的软件兼容性与全球支持 (Realtek Ecosystem)
- 行业标准:Realtek 的驱动在 Linux 内核(ALSA/ASOC 架构)和 Android 系统中属于“一等公民”。由于该系列芯片在全球笔记本和 PC 领域占有率极高,其驱动代码的健壮性(Robustness)非常强。
- 配置灵活:它的寄存器逻辑非常成熟,支持复杂的音频路径路由(Routing),可以轻松实现混音、回音消除(AEC)的前端处理配合。
4. 完善的硬件接口与功能
- 宽电压支持:ALC5616 通常支持 1.8V 到 3.3V 的数字接口电压,能完美适配 RK3588 的 IO 电平,无需额外的电平转换芯片。
- 多段 EQ 调节:芯片内置了可编程的数字均衡器(Digital EQ),开发者可以直接在 Codec 层面针对外接的喇叭特性进行调音,而不需要消耗 RK3588 的 CPU 算力。
5. 供应链稳定性与品质可靠性
- 工业级品质:Realtek 的芯片在抗静电(ESD)和抗干扰(EMI)设计上通常有更严格的标准,这对于需要过各种认证(如 CE/FCC)的 RK3588 工业级产品非常有利。
ES8316 vs. ES8388 vs. ALC5616 横向对比 (基于 RK3588 平台)
| 特性 | ES8388 | ES8316 | ALC5616 |
|---|---|---|---|
| 品牌 | 顺芯 (Everest) | 顺芯 (Everest) | 瑞昱 (Realtek) |
| 主要优势 | 成本极低,电路最传统 | 极致空间利用 (无电容) | 音质好,稳定性极强 |
| 电路复杂度 | 较高 (需大电容) | 低 (无电容) | 低 (无电容,高集成) |
| 底噪控制 | 一般 | 良好 | 优秀 |
| 典型应用 | 成本敏感型工控板 | 便携式手持终端 | 高端平板、商用会议系统 |
作者:炭烤毛蛋 ,点击博主了解更多。
文章目录
- rk3588 适配音频芯片 alc5616
- 1. 卓越的信噪比与音质 (Superior Audio Performance)
- 2. 强大的驱动力与硬件集成 (Integrated Headphone Amp)
- 3. 极佳的软件兼容性与全球支持 (Realtek Ecosystem)
- 4. 完善的硬件接口与功能
- 5. 供应链稳定性与品质可靠性
- ES8316 vs. ES8388 vs. ALC5616 横向对比 (基于 RK3588 平台)
- 1. rk3588 ALC5616 原理图
- 1.1 ALC5616 核心原理图
- 1.1.1 ALC5616 核心电源引脚
- 1.1.2 ALC5616 的电源网络分析
- 1.1.3 ALC5616 电源去耦电容配置
- 1.1.4 ALC5616 电源管理寄存器控制
- 1.1.5 ALC5616 芯片供电汇总
- 1.2 ALC5616 耳机
- 1.2.1 ALC5616 耳机输出电路
- 1.2.2 ALC5616 麦克风偏置(MICBIAS)
- 1.2.3 ALC5616 耳机插入检测
- 1.2.4 ALC5616 耳机电路供电总结
- 1.3 ALC5616 整体供电方案
- 2. rk3588 ALC5616 内核配置
- 2.1 RK3588 ↔ ES8316
- 2.1.1 RK3588 ↔ ALC5616 I2S/PCM 总线 —— 音频数据通道
- 2.1.2 RK3588 ↔ ALC5616 I2C 总线 —— 控制配置通道
- 2.1.3 RK3588 ↔ ALC5616 主时钟(MCLK)与PLL —— 灵活的同步基准
- 2.1.4 RK3588 ↔ ALC5616 辅助信号 —— 中断与检测
- 2.1.5 RK3588 ↔ ALC5616 模拟音频输入/输出
- 2.2 rk3588 ALC5616 内核设备树
- 3. rk3588 ALC5616 HAL 配置
- 结语
1. rk3588 ALC5616 原理图
1.1 ALC5616 核心原理图
ALC5616 是一款高性能、超低功耗音频编解码器,内部集成了立体声 DAC(信噪比 98dBA)和立体声 ADC(信噪比 94dBA),播放功耗低至 6.5mW[reference:0][reference:1]。其电源系统由多组独立的电压轨构成,以分别满足模拟、数字及耳机放大器等不同模块的需求。
1.1.1 ALC5616 核心电源引脚
| 电源引脚 | 电压 | 作用 | 原理图中对应网络 |
|---|---|---|---|
| AVDD | 1.8V / 3.3V | 模拟电路供电(ADC/DAC/PLL),对噪声极其敏感 | AVCC_1V8_CODE_C_S0或VCC4V0_SYS(需 LDO 降压) |
| DVDD | 1.8V / 3.3V | 数字核心供电 | VCC4V0_SYS(需 LDO 降压) |
| CPVDD | 1.8V / 3.3V | 电荷泵电源,用于耳机放大器产生负压 | 通常与 AVDD 共用 |
| MICVDD | 1.8V / 3.3V | 麦克风偏置电路的电源基准 | 通常与 AVDD 共用 |
电压选择说明:ALC5616 允许上述电源使用 1.8V 或 3.3V。典型低功耗应用中统一使用1.8V(播放功耗 ≤6.5mW);若需与主控(如 RK3588)的 3.3V IO 电平匹配,则可将 DVDD 设为 3.3V,而 AVDD 保持 1.8V 以获得最佳 SNR。
1.1.2 ALC5616 的电源网络分析
根据原理图文本中出现的电源相关标注:
| 元件/网络 | 可能用途 | 说明 |
|---|---|---|
| VCC4V0_SYS | 系统主电源(4.0V) | 输入电源,需要 LDO 降压至 1.8V 或 3.3V 后供给 ALC5616 |
| BLM15PD121SN1 | 电源滤波磁珠 | 用于 AVDD/DVDD 的电源噪声隔离 |
| GND_AUDIO | 音频模拟地 | 应与其他地(数字地)单点连接 |
| MICBIAS | 麦克风偏置输出 | 由 ALC5616 内部产生,典型值为 0.9×MICVDD 或 0.75×MICVDD[reference:2] |
| C1043 | 去耦电容 | 可能用于 AVDD 或 MICVDD 的去耦 |
| R1011 / R1012 | 可能是 0Ω 电阻或磁珠 | 用于电源轨隔离或跳线选择 |
1.1.3 ALC5616 电源去耦电容配置
根据 ALC5616 数据手册的推荐,各电源引脚需要适当的去耦电容以确保稳定工作[reference:5]:
| 电源域 | 推荐电容组合 | 原理图中对应元件(推测) |
|---|---|---|
| AVDD | 4.7µF + 100nF 并联 | C1043、C1075、C1057 可能为 AVDD 去耦电容 |
| DVDD | 4.7µF + 100nF 并联 | C10063、C10064 可能为 DVDD 去耦电容 |
| CPVDD | 可与 AVDD 共用 | 未单独标注,通常与 AVDD 共用电容 |
| MICVDD | 1µF | C1043 可能同时用于 MICVDD 去耦 |
1.1.4 ALC5616 电源管理寄存器控制
ALC5616 内置高级电源管理功能,可通过 I2C 寄存器独立控制各个功能模块的开关,以优化功耗[reference:6]:
| 控制对象 | 说明 |
|---|---|
| 耳机放大器(左右声道) | 独立控制左右声道耳机放大器的电源开关 |
| 耳机音量控制 | 控制耳机音量控制模块的电源 |
| 耳机电荷泵 | 控制耳机放大器负压电荷泵的电源开关 |
1.1.5 ALC5616 芯片供电汇总
| 电源轨 | 电压 | 去耦电容 | 隔离元件 | 原理图状态 |
|---|---|---|---|---|
| AVDD | 1.8V / 3.3V | 4.7µF + 100nF | BLM15PD121SN1(磁珠) | 需要确认连接 |
| DVDD | 1.8V / 3.3V | 4.7µF + 100nF | 可能通过磁珠或 0Ω 电阻隔离 | 需要确认连接 |
| CPVDD | 与 AVDD 相同 | 可与 AVDD 共用 | — | 通常与 AVDD 短接 |
| MICVDD | 与 AVDD 相同 | 1µF | — | 通常与 AVDD 短接 |
1.2 ALC5616 耳机
ALC5616 集成了超低功耗 Cap-Free 耳机放大器(无需外部输出耦合电容),可直接驱动耳机[reference:6]。耳机相关电路包括耳机输出、麦克风偏置和耳机插入检测三部分。
1.2.1 ALC5616 耳机输出电路
| 信号 | ALC5616 引脚 | 去向 | 说明 |
|---|---|---|---|
| HPO_L | HPO_L | 耳机座左声道 | 内部电荷泵产生负压,无需外部电源 |
| HPO_R | HPO_R | 耳机座右声道 | 同上 |
| HP_COM | HP_COM | 耳机公共端 | 虚拟地参考,需单独走线 |
供电来源:耳机放大器的供电完全来自 ALC5616 内部:
- 正压部分:由 CPVDD 提供(通常接 1.8V 或 3.3V)
- 负压部分:由内部电荷泵从 CPVDD 产生负电压,使输出能够以 0V 为中心摆幅,无需输出耦合电容
性能参数:
- 输出功率:20mW/通道(AVDD=CPVDD=1.8V,16Ω 负载,THD+N ≤ -80dB)[reference:7]
- 播放功耗:≤6.5mW(AVDD=VBVDD=CPVDD=1.8V,16Ω 负载,带 I2S 时钟,播放静音时)[reference:8]
1.2.2 ALC5616 麦克风偏置(MICBIAS)
原理图文本中明确标注了MICBIAS网络。
| 参数 | 值 |
|---|---|
| 输出引脚 | MICBIAS |
| 输出电压 | 可配置为 0.9×MICVDD 或 0.75×MICVDD[reference:9] |
| 去耦电容 | 推荐 1µF 电容到地 |
| 原理图中对应电容 | C1043 可能是 MICBIAS 的去耦电容 |
供电来源:MICBIAS 由 ALC5616 内部从 MICVDD 电源产生,无需外部供电。MICVDD 通常与 AVDD 共用同一电源。
应用说明:MICBIAS 用于为驻极体麦克风提供偏置电压。原理图中如果麦克风输入引脚(MIC_IN2P)直接连接到 MICBIAS,则说明使用的是内部偏置。此外,ALC5616 支持差分模拟麦克风输入,并内置升压前置放大器和低噪声麦克风偏置[reference:10],麦克风升压增益可选 +20/+24/+30/+35/+40/+44/+50/+52 dB[reference:11]。
1.2.3 ALC5616 耳机插入检测
原理图文本中未明确标注HP_DETECT或HP_INT相关信号,但根据 ALC5616 的数据手册,其支持音频插孔检测(Audio Jack Detection)功能。典型实现方式有两种:
| 方式 | 连接 | 供电需求 |
|---|---|---|
| 方式一 | 耳机座机械开关 → ALC5616 GPIO | 需要外部上拉电阻至 VCC_1V8_S0 或 DVDD |
| 方式二 | 耳机座机械开关 → 主控 GPIO | 上拉电源由主控侧提供 |
检测原理:耳机座内部的机械开关在未插入时处于断开状态,检测引脚被上拉至高电平;插入时开关闭合,检测引脚被拉低,产生中断信号。
补充说明:ALC5616 还具备内部 PLL,可接收宽范围时钟输入,并支持 24bit/8kHz ~ 192kHz 的 I2S/PCM 接口[reference:12],这在设计系统音频时钟方案时需要注意。
1.2.4 ALC5616 耳机电路供电总结
| 电路 | 供电来源 | 电压 | 说明 |
|---|---|---|---|
| 耳机输出(正压) | CPVDD | 1.8V / 3.3V | 由 ALC5616 内部电荷泵产生负压 |
| 耳机输出(负压) | 内部电荷泵 | 负电压 | 无需外部电源 |
| 麦克风偏置 | MICVDD(内部) | 0.9×MICVDD 或 0.75×MICVDD | 去耦电容 1µF 接地 |
| 插入检测 | 外部上拉电源 | 1.8V / 3.3V | 需上拉电阻(典型值 10kΩ~100kΩ) |
1.3 ALC5616 整体供电方案
ALC5616 供电架构流程图。
VCC4V0_SYS (4.0V) │ ├─ LDO 1.8V ──┬─ AVDD ──┬─ 去耦电容 (4.7µF + 100nF) │ │ └─ BLM15PD121SN1(磁珠隔离) │ ├─ DVDD ──┬─ 去耦电容 (4.7µF + 100nF) │ │ └─ 可能通过磁珠或 0Ω 隔离 │ ├─ CPVDD ──┴─ 可与 AVDD 共用 │ └─ MICVDD ─── 与 AVDD 短接,1µF 去耦 │ └─ LDO 3.3V(可选)── OVCC ──→ 供 I2S/I2C 接口电平匹配2. rk3588 ALC5616 内核配置
2.1 RK3588 ↔ ES8316
与 ES8316 类似,ALC5616 同样通过标准的 I2S 和 I2C 总线与 RK3588 连接。此架构符合行业规范,但在内部性能与功能上有所不同。
2.1.1 RK3588 ↔ ALC5616 I2S/PCM 总线 —— 音频数据通道
- 角色定位:RK3588作为I2S主设备(Master),ALC5616作为I2S从设备(Slave)。
- 传输内容:数字音频流(PCM数据)。
- 方向:双向全双工。
- 播放方向:RK3588 → ALC5616(DAC数据,用于扬声器/耳机)。
- 录音方向:ALC5616 → RK3588(ADC数据,来自麦克风)。
- 物理实现:由4条或5条信号线组成[reference:0]。
SCLK(BCLK):位时钟,由RK3588产生。LRCK(WS):左右声道时钟,由RK3588产生。SDO:数据输出,RK3588播放数据输出到ALC5616。SDI:数据输入,ALC5616录音数据输入到RK3588。MCLK(可选):主时钟。部分设计中,ALC5616可从I2S接口直接获取时钟(4线模式),但更常见的是通过独立的MCLK引脚提供高精度时钟(5线模式)[reference:1]。
- 典型参数:支持8kHz至192kHz采样率,位深度最高24位[reference:2]。
ALC5616支持I2S、左对齐、右对齐和PCM等多种数字音频接口格式[reference:3]。
2.1.2 RK3588 ↔ ALC5616 I2C 总线 —— 控制配置通道
- 角色定位:RK3588作为I2C主设备,ALC5616作为I2C从设备。
- 传输内容:控制命令和状态信息(如音量调节、音频通路切换、工作模式设置、寄存器读写)。
- 方向:双向半双工。
- 物理实现:由2条信号线组成:
SCL:串行时钟,由RK3588产生。SDA:串行数据,双向数据线。
- I2C设备地址:需查阅具体数据手册,通常可通过引脚配置。
ALC5616 提供强大的音频处理功能,其内置的7 段灵活均衡器(EQ)可应用于 DAC 或 ADC 路径,以及动态范围压缩/自动电平控制(DRC/ALC)功能,这些均可通过 I2C 接口配置[reference:4][reference:5]。
2.1.3 RK3588 ↔ ALC5616 主时钟(MCLK)与PLL —— 灵活的同步基准
- 连接:RK3588 的
MCLK_OUT→ ALC5616 的MCLK_IN。 - 作用:为 ALC5616 提供精准的时钟基准。
- 灵活度:ALC5616 内部集成了锁相环(PLL),可以从更广泛的 MCLK 频率生成所需的音频时钟,降低了对外部时钟源的依赖[reference:6][reference:7]。
- 频率:支持标准音频时钟(256fs、384fs、512fs等)。
2.1.4 RK3588 ↔ ALC5616 辅助信号 —— 中断与检测
- 连接:ALC5616 的检测引脚 → RK3588 的 GPIO。
- 功能:ALC5616 支持耳机和外部麦克风检测。当有外设插入或拔出时,ALC5616 可通过此引脚向 RK3588 发送中断信号,通知系统进行音频通路切换。
- 实现:在 RK3588 的设备树中,可以配置相应的 GPIO 属性来指定用于检测的引脚。
2.1.5 RK3588 ↔ ALC5616 模拟音频输入/输出
- 输入(录音):ALC5616 提供差分模拟麦克风输入,并内置了升压前置放大器和低噪声麦克风偏置,可连接模拟麦克风,也支持数字麦克风输入[reference:8]。
- 输出(播放):ALC5616 内置超低功耗无盖耳机放大器(Cap-free Headphone Amplifier),可直接驱动耳机,无需输出耦合电容[reference:9]。
2.2 rk3588 ALC5616 内核设备树
废话不多说,接下来是内核设备树配置。
/{rt5616_sound: rt5616-sound{status="okay";compatible="simple-audio-card";pinctrl-names="default";pinctrl-0=<&hp_det>;simple-audio-card,name="realtek,rt5616-codec";simple-audio-card,format="i2s";simple-audio-card,mclk-fs=<256>;simple-audio-card,hp-det-gpio=<&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;simple-audio-card,hp-pin-name="Headphone Jack";simple-audio-card,widgets="Headphone","Headphone Jack","Microphone","Microphone Jack";simple-audio-card,routing="Headphone Jack","HPOL","Headphone Jack","HPOR","MIC1","Microphone Jack","Microphone Jack","micbias1";simple-audio-card,cpu{sound-dai=<&i2s0_8ch>;};simple-audio-card,codec{sound-dai=<&rt5616>;};};};&i2c7{status="okay";rt5616: rt5616@1b{status="okay";#sound-dai-cells = <0>;compatible="rt5616";reg=<0x1b>;clocks=<&mclkout_i2s0>;clock-names="mclk";assigned-clocks=<&mclkout_i2s0>;assigned-clock-rates=<12288000>;pinctrl-names="default";pinctrl-0=<&i2s0_mclk>;};/* connected with MIPI-CSI1 */};&i2s0_8ch{status="okay";pinctrl-0=<&i2s0_lrck&i2s0_sclk&i2s0_sdi0&i2s0_sdo0>;rockchip,trcm-sync-tx-only;};&pinctrl{headphone{hp_det: hp-det{rockchip,pins=<1RK_PD5 RK_FUNC_GPIO&pcfg_pull_none>;};};};编译后重新刷入固件,可以看到已经注册的声卡。
cat/proc/asound/cards0[realtekrt5616co]: simple-card - realtek,rt5616-codec Rockchip-simplecard-03. rk3588 ALC5616 HAL 配置
Android 系统如果尚未配置 ALC5616 音频解码芯片,需要在声卡列表增加 ALC5616 声卡选项。
diff--gita/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c index 15cb477..051fb7c100644--- a/tinyalsa_hal/audio_hw.c +++ b/tinyalsa_hal/audio_hw.c @@ -509,7 +509,6 @@ static void adev_add_stream_to_list(struct dev_proc_info SPEAKER_OUT_NAME[]=/*addcodes&dai name here*/{{"rockchipcarrk33", NULL}, +{"realtekrt5616c", NULL,},{"realtekrt5651co","rt5651-aif1",},{"realtekrt5670c", NULL,},{"realtekrt5672c", NULL,},然后设置对应的音频路由,将 Android audio service 转换为 jason 配置,再经 HAL 传递到内核驱动。alc5616 使用 rt5616 音频路由配置文件路径如下:
hardware/rockchip/audio/tinyalsa_hal/codec_config/rt5616_config.h
结语
不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋 。
