在这里记录一下做音频驱动时遇到的音频基础知识
数模转换
我们能听到的音频,都是声波。声波是声音的传播形式,发出声音的物体称为声源。声波是一种机械波,由声源振动产生,声波传播的空间就称为声场。人耳可以听到的声波的频率一般在20Hz(赫兹)至20kHz之间
要将声波存储起来,我们需要将声波转换为数字信号,这个过程称为录音(capture)
将数字信号转换为可以听见的声波,这个过程称为回放(playback)
录音和回放的过程就涉及数模转换.
录音(Capture)
整个录音的过程为:
1.mic感应到声波,mic根据声波的震动产生模拟电信号
2.ADC接收到mic的电信号,转换为01数字信号
3.dsp根据传入的数字信号,转换成PCM原始音频数据
4.原始的PCM数据被编码后转为其他易于传输或者存储的格式最后存储起来变成音频文件
回放(Playback)
整个播放的过程为:
1.从音频文件中提取出存储的音频数据
2.将音频数据解码,这里可以是硬解或者软解,解码后得到PCM格式的音频数据
3.PCM格式的数据经过dsp进行处理,会根据一些音频算法进行音频增强
4.处理过后的音频数据经过DAC转换为模拟电信号,但此时的电信号比较弱,难以直接驱动喇叭
5.PA能放大电信号,经过PA放大的信号传导喇叭,喇叭震动发出声波
采样率
采样率是指在进行数模转换时,每秒进行多少次采样,用Hz来表示,50Hz表示一秒采样50次,每次采样间隔位0.02秒。
在上图中,曲线代表模拟信号,方形代表采样后的量化值。
采样率越高,则采样后的数字信号能更加精细的描述模拟信号。
常见的采样率如下:
场景 | 采样率 |
---|---|
普通voice通话 | 8khz |
广播 | 22.05khz |
音频cd/mp3/vcd | 44.1khz |
音频cd/mp3 | 48khz |
无损cd/母带 | 96khz/192khz |
位深
当ADC在量化模拟信号时,用多少位来描述当前的模拟信号值,更高的位深能更好的描述模拟信号。
对于音频,我们会用db(分贝)来表示当前的音量大小,如果采样时的位深越大,则数字信号的音量等级分级可以越多,动态范围更大。
音量的计算公式如下
db = 20.0*(log10(Max_Value) - log10(Current_val))
其中,Max_Value为当前位深的最大值,如果是8位深,则是2^8-1
Current_val则是现在这个采样点的实际值。
由函数可知,位深越高,则音量等级越多,越细腻
PCM(脉冲编码调制)
脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程.。其中两个重要指标是采样频率和量化精度(位深)。
在音频格式中,PCM编码是指无压缩的编码格式,可以无损的记录音频文件,但占用空间巨大,所以音频文件存储更多的采用有损的mp3。
I2S接口
I2S全称Inter-IC Sound, Integrated Interchip Sound,简写IIS。是由飞利浦在1986年定义的数字音频传输标准,用于数字音频数据在系统内部器件之间传输。
I2S接口如上图所示,
- SCK/BCLK:同步时钟信号,BCLK = 采样率X声道数X位深
- WS:左右声道信号,IIS能传输两个声道的数据,用这个时钟信号的高低电平来判断当前是哪个声道的数据
- DATA:数据信号,传输的数据在这个信号线上以为高低电平来表示。
I2S的信号有效位(高电平还是低电平有效),先MSB还是LSB都是可以自定义的,不同的厂家不一样。
SWR
SWR全称SoundWire,是一个2014年由MIPI联盟推出的音频接口。
SoundWire支持在一个链路上使用多个音频外设,并支持多种拓扑。 除了能够与低成本的简单设备(如麦克风或放大器)连接外,它还能够集成更高级的麦克风、扬声器和放大器。 此外,SoundWire 还可用于实现扬声器保护(speaker protection)、噪声消除(noise cancellation)、麦克风功率(microphone power)和性能控制(performance control)等功能.
SWR有两根信号,分别是Clock和Data
SoundWire分为三种角色:
- Master : 即主设备,提供时钟,同步以及管理总线,每个主设备最多能连接11个从设备
- Slaves : 即从设备, 可以具有系统唤醒功能以及使用中断,从设备拥有4位的UniqueID来供主设备区分不同的从设备
- Monitor : 一般是调试用,可以临时接管总线
SLIMbus
SLIMbus是由2007年 MIPI联盟推出的音频接口,现大量使用在蓝牙,FM芯片中。
MIPI只能有一个主设备,SLIMbus和SWR一样,信号线分为clock和data线,但SLIMbus能有多根DATA线。
SLIMBus 使用固定帧并以更高的最大频率 28MHz 以单数据速率模式运行。 它支持多个多通道、高质量的音频流,并且通过 8 个通道,它可以提供高达 224Mbps 的峰值聚合带宽。 SLIMBus 还包括多母带处理能力,并为立体声和麦克风阵列提供相位相干性
SLIMBUS和SWR可以桥接到一起