3. 音频基础概念
在SA8155这类车载智能座舱平台中,音频链路往往从麦克风、蓝牙、USB、Tuner一路延伸到DSP、功放和扬声器。工程师如果只记住“能出声”或“没声音”,很难定位问题。真正有效的排障与设计,必须回到数字音频的基础概念:采样率决定时间轴分辨率,位深决定幅度量化精度,声道决定空间与通道组织,PCM是原始音频数据的通用载体,而I2S、TDM、PDM则是把这些数据在芯片之间搬运的接口协议。理解这些术语之间的关系,等于拿到了音频链路的“坐标系”。
一、采样率、位深与声道:数字音频的三根支柱
模拟声音是连续变化的电压信号,数字音频要把它变成离散序列,必须完成两个动作:时间上离散化,幅度上离散化。时间离散化的密度就是采样率,单位是Hz或kHz。根据奈奎斯特采样定理,采样率必须大于信号最高频率的两倍,才能无混叠地还原。例如48kHz可覆盖24kHz以内的音频,足以覆盖人耳听觉范围。车载常见采样率包括8kHz(窄带通话)、16kHz(语音识别)、44.1kHz(音乐)、48kHz(多媒体与车机主链路)、96kHz/192kHz(高解析音频)。
位深决定每个采样点用多少比特表示幅度,常见有16bit、24bit、32bit。位深越高,量化噪声越低,理论动态范围越大。粗略估算,动态范围约为6.02×位深+1.76dB,因此16bit约96dB,24bit约144dB。在SA8155平台中,DSP内部常以32bit定点或浮点处理,以保留足够的余量,避免级联增益调整时产生截断噪声。
声道描述音频的通道数量与组织方式。单声道Mono只有一路;立体声Stereo有左右两路;5.1、7.1则包含多路环绕与低频效果通道。车载场景中,声道还常与区域绑定,例如主驾、副驾、后排、头枕扬声器,形成多区域音频。声道数、采样率、位深三者共同决定原始PCM码率:码率=采样率×位深×声道数。例如48kHz、16bit、2声道立体声的码率为1.536Mbps。
核心公式:PCM码率 = 采样率 × 位深 × 声道数。它决定了总线带宽、DMA缓冲大小和DSP负载的基线。
二、PCM:数字音频的“通用货币”
PCM即脉冲编码调制,是最基础、最未压缩的数字音频表示形式。它按时间顺序排列每个采样点的量化值,可以是8bit无符号、16bit有符号小端、24bit打包或32bit对齐等多种格式。几乎所有音频接口最终传输的都是某种PCM样式,区别只在于帧结构、时钟关系和通道映射。
在Linux/Android音频系统中,PCM设备通常以/dev/snd/pcmC0D0p这类节点出现,其中C代表card,D代表device,p表示playback,c表示capture。ALSA的hw_params会配置采样率、位深、声道和周期大小。若应用层提交的PCM格式与硬件能力不匹配,就会出现-EINVAL或播放变调、噪声等问题。
# 查看PCM设备能力示例
cat /proc/asound/card0/pcm0p/sub0/hw_params
# 典型输出
format: S16_LE
rate: 48000
channels: 2
period_size: 1024
buffer_size: 8192
需要特别区分“PCM数据格式”和“PCM接口”。前者描述样本如何排列,后者描述数据如何被时钟同步地搬运。I2S、TDM、PDM都属于后者,它们承载的负载通常就是PCM样本。
三、I2S、TDM、PDM:三种典型数字音频接口
I2S是最常见的芯片间音频接口,使用三根核心信号线:SCK/BCLK位时钟、WS/LRCK左右声道帧时钟、SD数据线。标准I2S中,WS低电平表示左声道,高电平表示右声道,数据在BCLK边沿移入移出。它适合两声道高保真传输,接线简单,SA8155与音频Codec、DSP之间大量使用I2S。
TDM是I2S的时分复用扩展。它仍然使用BCLK和帧同步,但在一帧内划分多个时隙,可承载4、8、16甚至更多通道。车载多区域音频、麦克风阵列回传常使用TDM,以减少引脚数量。TDM的关键参数包括时隙数、时隙宽度、帧同步宽度和有效数据位置。如果主从设备的TDM模式不一致,会出现通道错位、左右串音或只有部分声道有声。
PDM用于数字麦克风,只有时钟CLK和数据DATA两根线。它用高密度1bit脉冲的密度表示模拟幅度,随后由抽取滤波器转换为PCM。PDM布线简单、抗干扰好,适合麦克风阵列。但PDM本身不是PCM,必须经过抽取和低通滤波才能进入DSP处理。
四、案例与排障:从参数不匹配到通道错位
某SA8155座舱项目在播放提示音时出现“左声道正常、右声道极小”的现象。检查发现,DSP输出配置为I2S标准模式,而Codec被配置为左对齐模式,导致数据在WS边沿后的位置不一致,右声道样本被部分截断。将Codec改为I2S标准模式后恢复正常。这个案例说明,接口协议名称相同,但数据对齐方式、帧同步极性、时钟主从关系必须逐项核对。
另一个常见问题是采样率不匹配。应用层以44.1kHz播放,而硬件链路固定为48kHz,若没有采样率转换,就会出现音调偏高、播放速度异常。Android AudioFlinger通常会在混音前统一到主输出采样率,但离线音频、USB音频和蓝牙SCO路径可能绕过该机制,需要单独确认。
排障提醒:遇到“有噪声但无有效音频”时,优先检查BCLK是否存在、WS频率是否等于采样率、SD数据是否在正确边沿采样。PDM麦克风无声时,先确认CLK频率和抽取滤波器配置,而不是直接怀疑麦克风损坏。
五、关键参数速查清单
| 术语 | 核心含义 | 典型值/形式 | 在SA8155链路中的关注点 |
|---|---|---|---|
| 采样率 | 每秒采样点数,决定频率上限 | 8/16/44.1/48/96/192 kHz | 主输出统一采样率、SRC是否启用 |
| 位深 | 每个样本的量化比特数 | 16/24/32 bit | DSP内部位宽、增益余量、截断噪声 |
| 声道 | 音频通道数量与映射 | Mono/Stereo/5.1/7.1 | 多区域路由、扬声器映射、混音策略 |
| PCM | 未压缩脉冲编码调制数据 | S16_LE、S24_3LE、S32_LE | ALSA hw_params、DMA缓冲、格式匹配 |
| I2S | 芯片间双声道同步串行接口 | BCLK/WS/SD | 主从模式、对齐方式、时钟极性 |
| TDM | 时分复用多通道接口 | 4/8/16时隙 | 时隙宽度、帧同步、通道顺序 |
| PDM | 1bit密度调制数字麦克风接口 | CLK/DATA | 抽取滤波、时钟频率、麦克风阵列时序 |