0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK平台声卡基础知识总结(基于ALSA框架)

jf_44130326 来源:Linux1024 2026-02-06 16:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、核心概述

RK平台声卡基于ALSAAdvanced Linux Sound Architecture)框架构建,核心目标是实现音频数据的采集-传输-处理-输出全链路管理。其本质是通过多个功能模块的协作,将SoC内部的数字音频信号与外部音频设备(麦克风、耳机、HDMI等)连接,同时解决数据同步、格式兼容、硬件适配等问题。

根据《Rockchip Audio开发指南》,RK平台声卡的核心特点是模块化设计高灵活性,支持I2S/SAI/PDM等多种数字音频接口、内部/外部CODEC组合,以及多声道、异步采样率转换(ASRC)、数字回采(DLP)等高级功能,可适配智能家居SoundBarOTT盒子等多种场景。

二、声卡核心构成组件

RK平台声卡由5大核心组件构成,各组件职责明确且协同工作,具体定义与功能如下:

组件

英文全称

核心作用

RK平台特有细节

DAI

Digital Audio Interface

数字音频接口,连接SoCCODEC,负责传输数字音频信号(时序控制、格式解析)

支持SAI(灵活协议)、I2S/I2S-TDM(多声道)、PDM(数字麦)、SPDIF(数字输出)等类型

MACHINE

声卡整合层

关联DAICODEC,配置音频拓扑(如协议格式、时钟主从),生成最终声卡设备

支持Simple Card(通用场景)、Multi Codecs Machine Driver(多CODEC场景)

DMAENGINE

DMA控制器

实现内存(DDR/SRAM)与DAI FIFO之间的高速数据传输,避免CPU占用

支持PL3308通道限制)、RKDMA(无通道限制),可动态申请释放通道(CONFIG_SND_SOC_DYNAMIC_DMA_CHAN

CODEC

Coder-Decoder

实现数字信号模拟信号转换,含增益控制、滤波、静音等功能

分内部CODEC(如RK812/RK817,集成于PMIC)、外部CODEC(如ES8388TAS5731)、Combo CODEC(如HDMI +模拟输出)

PCM

Pulse Code Modulation

ALSA框架的核心接口,向上提供应用层访问接口(如aplay/arecord),向下适配硬件

支持多种采样率(8k~384k)、位宽(16bit~32bit)、声道数(2CH~256CH

三、声卡数据传输流程(附流程图)

RK平台声卡的数据流分为播放(输出)录音(输入)两大方向,所有数据均通过DMAENGINE实现无CPU干预的传输,确保低延迟和高稳定性。

1.播放流程(数字模拟/数字输出)

wKgZPGkaixSABarZAAA2MYjCJjs194.png

2.录音流程(模拟/数字输入数字)

wKgZPGkaixSAd5rwAAA3C3mvbnQ226.png

关键说明

时序同步DAI负责与CODEC协商时钟(MCLK/BCLK/LRCK)和协议格式(如I2STDM),确保数据传输无错位;

CPU干预DMAENGINE直接管理内存与DAI FIFO的数据搬运,仅在缓冲区满/空时触发中断通知CPU

格式适配:若输入输出采样率不一致(如UAC场景),可通过ASRC(异步采样率转换器)进行实时转换,避免失真。

四、RK平台声卡核心子模块详解

1. DAI(数字音频接口):声卡的传输中枢

DAISoCCODEC桥梁RK平台支持多种DAI类型,适配不同场景需求:

DAI类型

核心特点

支持声道数

典型应用场景

SAI

协议灵活(可构造I2S/DSP/TDM时序)、支持多Lane合并、FIFO交织配置

8CH IN/OUT

SoundBar(多声道输出)、Mic Array

I2S

支持标准I2S/PCM协议,时钟补偿(ACC

8CH IN/OUT

普通音频设备(耳机、单麦克风)

I2S-TDM

基于I2S扩展,支持TDM协议,可异步/同步模式

16CH IN/OUT

多麦克风阵列、多声道录音

PDM

Master模式,支持数字麦克风阵列,含高通滤波(HPF

8CH IN / 2CH OUT

智能家居(远场语音唤醒)

SPDIF

支持LPCM(无损)、DD/DTS(压缩)格式,数字透传

2CHLPCM/7.1CH(压缩)

家庭影院(HDMI /光纤输出)

2. CODEC(编解码器):数模转换核心

CODEC是实现数字信号模拟信号转换的关键,RK平台分为两类:

内部CODEC:集成于SoCPMIC,成本低、适配简单,如:

RK812/RK817PMIC集成CODEC,支持立体声DAC/ADC,可直驱外部PA

DCODECSoC内置数字CODEC,支持DSMDelta Sigma Modulation)模式,节省外部PA成本。

外部CODEC:独立芯片,音质优、功能丰富,需通过I2C/SPI控制,如:

ES8388:立体声CODEC,支持高信噪比(SNR≥95dB);

TAS5731D类功放CODEC,适合大音量场景(如SoundBar)。

3. MACHINE(声卡整合层):配置管家

MACHINE的核心是解析DTS配置绑定” DAICODEC,避免开发人员重复编写驱动。RK平台支持两种主流MACHINE驱动:

Simple Card:适用于“1DAI+1CODEC”的通用场景,通过DTS配置协议格式(如simple-audio-card,format = "i2s")、时钟主从(simple-audio-card,bitclock-master)等参数,无需编写额外代码;

Multi Codecs Machine Driver:适用于“1DAI/Combo DAI +多个CODEC”的复杂场景(如HDMI +模拟输出、DAI+VAD),需通过DTS配置rockchip,codec列表和音频路由(rockchip,audio-routing)。

五、RK平台声卡开发关键点

1.驱动开发重点

多数场景下,基于RK SDK开发只需移植/编写CODEC驱动(如I2C接口的ES8388驱动);

仅在多CODEC、特殊时序(如自定义TDM)场景下,需编写MACHINE驱动

DAI驱动已由RK提供(如rockchip_i2s.crockchip_sai.c),无需修改,仅需通过DTS配置属性(如时钟、协议)。

1.核心代码路径(内核源码):

kernel/sound/soc/rockchip/ # RK平台核心音频驱动├─ rockchip_asrc.c     # ASRC驱动├─ rockchip_i2s.c     # I2S驱动├─ rockchip_i2s_tdm.c   # I2S-TDM驱动├─ rockchip_pdm.c     # PDM驱动├─ rockchip_sai.c     # SAI驱动└─ rockchip_multicodecs.c # Multi Codecs Machine驱动kernel/sound/soc/codecs/  # CODEC驱动├─ rk817_codec.c      # 内部CODEC(RK817)├─ es8388.c        # 外部CODEC(ES8388)└─ hdmi-codec.c      # HDMI CODEC

1.声卡添加步骤

a.使能内核配置(如CONFIG_SND_SIMPLE_CARDCONFIG_SND_SOC_ROCKCHIP_I2S);

b.DTS中使能DAI节点(如I2S/SAI),配置引脚、时钟;

c.DTS中添加CODEC节点(如I2C总线下的ES8388);

d.添加MACHINE节点(如Simple Card),关联DAICODEC

e.编译内核,通过cat /proc/asound/cards验证声卡注册成功。

六、声卡构成脑图

wKgZPGkaixSAKkj_AAGzrglaHZI956.png

七、关键总结

1.模块化设计RK声卡的DAIMACHINECODEC等组件解耦,开发时可聚焦“CODEC移植“MACHINE配置,降低复杂度;

2.灵活性适配:通过SAI的灵活协议、Combo DAI的多接口组合、ASRC的异步同步,可覆盖从简单耳机到复杂多声道系统的场景;

3.开发简化RK SDK已提供完善的DAI驱动和MACHINE模板,多数场景下仅需修改DTSCODEC驱动,无需从零开发。

如需进一步调试(如播放无声、录音失真),可使用示波器(测时钟/数据)、aplay/arecord(定位用户态/内核态问题)、amixer(控制CODEC通路)等工具。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 音频
    +关注

    关注

    31

    文章

    3247

    浏览量

    86527
  • 声卡
    +关注

    关注

    4

    文章

    132

    浏览量

    31786
  • Rockchip
    +关注

    关注

    0

    文章

    93

    浏览量

    19694
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    路由器常用基础知识总结

    路由器常用基础知识总结路由器常用基础知识总结路由器常用基础知识总结
    发表于 10-30 18:08 0次下载

    linux+Android基础知识总结

    linux+Android基础知识总结
    发表于 03-19 11:23 0次下载

    linux /Android 基础知识总结大全

    本文档介绍了linux /Android 基础知识总结大全,包含了源代码以及详解,供网友参考。
    发表于 09-11 17:46 7次下载

    linux Android基础知识总结

    linux Android基础知识总结
    发表于 10-24 09:00 6次下载
    linux Android<b class='flag-5'>基础知识</b><b class='flag-5'>总结</b>

    Linux下声卡的安装(ALSA

    Advanced Linux Sound Architecture (ALSA) 的网站: http://www.alsa-project.org/ 1、现在最新版的的驱动
    发表于 11-07 10:28 0次下载

    Linux ALSA声卡驱动之ALSA架构简介

    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识
    发表于 04-26 15:55 2092次阅读
    Linux <b class='flag-5'>ALSA</b><b class='flag-5'>声卡</b>驱动之<b class='flag-5'>ALSA</b>架构简介

    Linux ALSA声卡驱动之一:声卡的创建

    snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体。
    发表于 05-10 11:50 2124次阅读
    Linux <b class='flag-5'>ALSA</b><b class='flag-5'>声卡</b>驱动之一:<b class='flag-5'>声卡</b>的创建

    Linux ALSA声卡驱动之一:ALSA架构简介

    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识
    发表于 05-10 13:44 1995次阅读
    Linux <b class='flag-5'>ALSA</b><b class='flag-5'>声卡</b>驱动之一:<b class='flag-5'>ALSA</b>架构简介

    51单片机学习 基础知识总结

    51单片机学习 基础知识总结
    发表于 11-11 19:21 39次下载
    51单片机学习    <b class='flag-5'>基础知识</b><b class='flag-5'>总结</b>

    Arduino入门必备基础知识(基础认证考前总结)

    Arduino入门必备基础知识(基础认证考前总结)
    发表于 11-15 20:51 16次下载
    Arduino入门必备<b class='flag-5'>基础知识</b>(基础认证考前<b class='flag-5'>总结</b>)

    【51单片机】考试基础知识总结(引脚)

    这里写目录标题单片机考试基础知识总结串口:单片机考试基础知识总结串口:
    发表于 11-22 17:51 18次下载
    【51单片机】考试<b class='flag-5'>基础知识</b><b class='flag-5'>总结</b>(引脚)

    alsa底层框架系统配置与插件

    网上大多数是 alsa 底层框架、音频驱动的文章,应用开发的入门少得可怜。从业务需求出发,摸索积累了一些 alsa 应用开发心得。出此文以便后来者快速入门。
    的头像 发表于 07-04 09:04 9997次阅读

    高级linux声卡架构ALSA概述及特点

    ALSA(Advanced Linux Sound Architecture )是高级 linux 声卡架构简称,是目前Linux的主流音频体系结构, 提供了音频和MIDI的支持。
    发表于 10-17 10:35 5139次阅读

    RK平台声卡添加与驱动调试指南

    在瑞芯微(RK平台的嵌入式系统开发中,音频功能的实现核心依赖于 Sound Card(声卡)的正确配置与驱动调试。
    的头像 发表于 02-09 16:42 1139次阅读
    <b class='flag-5'>RK</b><b class='flag-5'>平台</b>新<b class='flag-5'>声卡</b>添加与驱动调试指南

    RK3576 Android15音频开发必看:alsa_route核心文件解析与修改场景

    RK Android平台开发的同学,大概率都遇到过这些音频问题:插耳机没声音、通话音量忽大忽小、新增的HDMI声卡没适配、录音增益异常… 这些问题看似五花八门,根源却大概率指向同一个核心模块
    的头像 发表于 02-26 08:08 486次阅读
    <b class='flag-5'>RK</b>3576 Android15音频开发必看:<b class='flag-5'>alsa</b>_route核心文件解析与修改场景