[Linux Audio Driver] I2S相关介绍

1.概述
对于音频来说,常见的数据流总线就是I2S了,当然还有PCM总线,以及高通把I2S和PCM封装成的PDM数据总线,本文主要进行I2S相关的术语介绍。

2.I2S构成
I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,它一般有四根线:SCK、WS、Rx、Tx .

SCK:串行时钟,也叫位时钟
WS:帧时钟,同步信号(左、右声道),采样率
Rx:接收数据线
Tx:发送数据线
[Linux Audio Driver] I2S相关介绍_第1张图片
从这张图来看,第一行就是WS信号,分为左、右声道,左声道全是低电平,右声道全是高电平,第二行就是位时钟,第三行是合在一起的数据线,一般是叫Rx或者Tx,有时候叫Datain和Dataout,在这里叫做VXDIN和VXDOUT。

3.位深度
位深度也叫采样深度(Bit Depth),我们知道量化(Quantization)是将连续值近似为某个范围内有限多个离散值的处理过程。那么这个范围的宽度以及可用离散值的数量会直接影响到音频采样的准确性,这就是采样深度的意义。
我们可以把它理解为:表征音频数据量化后的精度。
[Linux Audio Driver] I2S相关介绍_第2张图片
比如上图是一个采用4位位深度进行量化得到的PCM。因为4bit最多只能表达16个数值(0-15),所以图中最终量化后的数值依次为7、9、11、12、13、14、15等等。这样的结果显然是相对粗糙的,存在一定程度的失真。当位深越大,所能表达的数值范围越广,上图中纵坐标的划分也就越细致,从而使得量化的值越接近原始数据。
注意Qualcomm平台支持的位深度是16位,24位,没有32位位深度。但是我们可以令前24位不变,后8位补0,这样构成32位的采样位数,但是这里位深度还是24位。

所以我们不能简单的从抓取的I2S上的波形,一个声道对应的时钟个数,来判断位深度(需要先判断有没有人为修改采样位数)

4.简单计算

4.1 已知位深度16位、采样频率48k,问位时钟为多少?

[Linux Audio Driver] I2S相关介绍_第3张图片
4.2 每秒钟左声道对应的字节数为多少?

[Linux Audio Driver] I2S相关介绍_第4张图片
PS:本文中的一些图片来源于网络,个别内容参考了一些前辈的博客,但是时间久远已遗忘。
若有侵权,请联系本人,会加上您的参考链接;

你可能感兴趣的:(Qualcomm,Audio)