学习笔记,不做其他用途,仅供参考,如有错误,欢迎各位大佬指正,参考内容均来源于网络,有问题可以联系我注明出处
I2S(Inter-IC Sound)是一种专门用于音频数据传输的串行总线协议,通常用于数字音频信号的传输,如PCM(脉冲编码调制)音频数据。I2S协议常用于音频设备之间的通信,如音频编解码器(CODEC)、数字信号处理器(DSP)、音频控制器、模拟-数字转换器(ADC)、数字-模拟转换器(DAC)和数字滤波器等。
-
支持立体声(双声道)、单声道及多声道(通过TDM扩展)。
1、I2S协议概述
I2S协议采用串行传输方式,通过时钟信号同步传输音频数据。用于音频数据传输,具有低延迟、低噪声等特点。I2S协议的主要特点如下:
- 音频数据格式:I2S传输的是音频数据流,一般是通过多个数据位组成数据帧。数据通常是PCM编码的。
- 同步传输:I2S通信依赖于时钟信号,通过分发同步信号,确保数据的准确传输。
- 全双工通信:I2S协议支持全双工传输,允许设备同时发送和接收音频数据。
-
三线制:I2S通常需要3根主要信号线:串行时钟(SCK/BCLK),左右声道选择信号(WS/LRCK),以及串行数据线(SD/SDATA)。此外,可能还需要一个或多个额外的信号线(如主设备时钟、同步信号)。
2、硬件的组成
I2S协议的硬件实现包括发送端和接收端,主要涉及以下信号线和时序:
- 串行时钟信号(SCLK/BCLK):串行时钟线。由主设备提供时钟信号,决定数据传输的速率。每个音频数据位都有一个脉冲。频率 = 采样率 × 位数 × 声道数。
例如,如果采样频率为44.1kHz且量化深度为16位,则SCLK的频率为
44.1 kHz × 16 × 2 = 1.4112 MHz - 左右声道选择信号(WS/LRCK):字选择线。这个信号用来切换左右声道的数据,通常通过高低电平来区分。如:当WS为0时,表示正在传输的是左声道的数据;为1时则代表右声道的数据。这种机制使得I2S协议能够轻松支持多声道音频的传输。WS信号也可以在SCK的上升沿或下降沿变化,但接收设备通常在SCK的上升沿采样WS信号。WS的频率等于采样率,一般常见44.1KHz、48KHz。
- 串行数据信号(SD/SDATA):串行数据线。负责传输实际的音频数据。发送方在SCK的下降沿改变数据,而接收方在SCK的上升沿采样数据。通过这种方式,确保了数据的稳定、可靠传输。SD线上的数据以二进制补码的形式传输,且最高有效位(MSB)通常首先被传输。LSB(最低位)。
- 主时钟 MCLK(Master Clock)(可选):主时钟线,用于时钟的产生与同步。MCLK通常由主设备提供。在一些高保真音响系统中,可能还需要提供一个额外的主时钟信号(MCLK),用于驱动内部的数字滤波器或调制器。MCLK通常是采样频率的256倍或384倍。256×SCK或512×SCK。相位差异或频率不匹配,可能会导致数据传输错误--音频数据可能无法正确对齐,导致音频播放中断、杂音或完全不可用。
- 对于44.1kHz采样率,MCLK的常见频率是 11.2896 MHz 或 22.5792 MHz,取决于所需的时钟倍数。
- 对于48kHz采样率,MCLK的常见频率是 12.288 MHz 或 24.576 MHz。
在I2S系统中,提供时钟(SCK和WS)的设备称为主设备,而接收或发送数据的设备则称为从设备。主设备负责控制整个I2S总线的通信过程,确保数据的正确传输。
3、数据格式
I2S 支持多种数据对齐模式:
标准I²S模式(Philips模式):
-
特点:
-
数据延迟:音频数据在WS(声道选择信号)跳变后的第二个BCLK(位时钟)边沿开始传输。
-
边沿对齐:数据在BCLK的下降沿发送,接收端在上升沿采样。
-
帧结构:每个声道的数据长度可自由配置(如16/24/32位),未使用的位通常补零。
-
优势:抗干扰能力强,支持不同位宽的数据传输,应用最广泛。
-
左对齐(MSB对齐Left-Justified):
-
特点:
-
无延迟:音频数据紧接在WS跳变后的第一个BCLK边沿开始传输。
-
对齐方式:数据高位(MSB)直接对齐WS跳变沿,无需填充位。
-
时序要求:需确保WS与BCLK严格同步,否则可能引发相位错误。
-
适用场景:对时序要求简单的系统,如某些DAC/ADC芯片。
-
右对齐(LSB对齐Right-Justified):
-
特点:
-
低位对齐:数据的最低位(LSB)对齐到WS跳变前的最后一个BCLK边沿。
-
固定位宽:通常要求发送与接收端位宽一致(如16位),灵活性较低。
-
适用场景:位宽固定的传统音频设备,兼容性较弱。
-
TDM(时分复用):可视为I²S的扩展,支持多声道传输,但需通过多路WS信号或长帧同步实现。
PCM模式:与I²S类似,但帧同步脉冲更短(通常1个BCLK周期),常用于语音通信。
音频帧
在I2S协议中,音频帧的长度是指每个音频数据帧的总位数,它包括音频数据本身和一些附加的控制位(如词选择位等)。音频帧的长度直接影响到音频数据的采样精度和传输速率。
音频帧的构成
一个完整的I2S音频帧通常由以下部分组成:
词选择位(WS,Word Select):指示数据帧是左声道还是右声道的标志位,通常为1位。
音频数据:传输实际的音频数据部分,长度取决于音频的位深度(通常为16位、24位或32位等)。
空闲位:某些I2S实现中会有额外的空闲位,用于确保时钟同步。
音频帧的长度是指在一次数据传输中,传送的总位数。例如,假设每个音频采样的数据位数是24位(即24-bit音频深度),并且每帧包含左声道和右声道的数据,那么:
-
每帧长度:2个声道 × 24位 = 48位
常见的音频帧长度
音频帧的长度可以根据不同的音频格式和应用场景有所不同,常见的几种音频帧长度包括:
16位音频帧:
- 每个声道16位,左右声道各16位,总帧长为 32位(16位 × 2)。
- 适用于CD音质音频数据。
24位音频帧:
- 每个声道24位,左右声道各24位,总帧长为 48位(24位 × 2)。
- 用于高质量音频处理,提供更高的动态范围和精度。
32位音频帧:
- 每个声道32位,左右声道各32位,总帧长为 64位(32位 × 2)。
- 适用于高精度的音频数据处理和录制。
I2S音频帧的长度是指一个音频数据帧的总位数,通常包括两个声道的数据,每个声道的数据长度取决于音频的位深度(如16位、24位、32位等)。不同的应用场景会根据音频的要求选择合适的帧长度。常见的音频帧长度为:
- 16位音频帧:总帧长32位(左右声道各16位)。
- 24位音频帧:总帧长48位(左右声道各24位)。
- 32位音频帧:总帧长64位(左右声道各32位)。
4、I2S通信的时序
I2S的数据传输通常有以下几个步骤:
- 主设备产生SCK和LRCLK信号;
- 在每个SCK的上升沿或下降沿,SD传输一个数据位;
- LRCLK信号切换,决定当前传输的是左声道数据还是右声道数据。
5、I2S协议的工作模式
I2S协议的工作模式有以下几种:
- 标准模式:传统的I2S模式,左声道数据和右声道数据分别通过两个时钟周期传输。
- 压缩模式:支持压缩音频数据格式,传输效率更高。
- PCM模式:脉冲编码调制(PCM)模式,数据以PCM格式进行编码和传输。
6、主要参数介绍
音频文件的几个关键参数,主要写采样率、位深度、声道数
采样率(Sample Rate)
- 定义:采样率表示每秒钟从模拟音频信号中获取的样本数量,通常以赫兹(Hz)表示。常见的采样率包括 44.1kHz、48kHz、96kHz、192kHz 等。
- 影响:采样率越高,每秒钟对音频的采样次数越多,从而能够更准确地重现高频成分。较低的采样率(如44.1kHz)可能会导致高频细节的丢失,导致音质的降低。较高的采样率(如96kHz、192kHz)则能更好地捕捉到高频信息,提供更丰富的音频细节。
位深度(Bit Depth)
- 定义:位深度指每个音频样本的精度,也就是每个样本使用多少位来表示。在16位、24位、32位等位深度中,常见的有16位和24位。
-
影响:位深度越大,音频的动态范围(从最安静到最响的声音差距)越宽。24位的音频能记录更多的细节,减少量化误差和噪音,因此提供更高的音质。16位的音频通常适合CD质量音频,但可能无法捕捉到所有的动态变化和细节。
声道数(Channels)
- 定义:音频文件的声道数表示音频中的独立音频轨道。常见的有 单声道(Mono)、立体声(Stereo)和 环绕声(Surround)。
- 影响:立体声(2声道)可以提供更丰富的空间感和音频定位,而单声道(1声道)会将左右声道的声音合并成一个。多声道音频(如5.1、7.1)用于电影和高质量音频体验,能够提供更真实的听觉环境。
7、I2S协议的软件实现
I2S协议的软件实现一般分为以下几个部分:
配置I2S接口:
软件首先需要初始化I2S接口,包括数据格式和长度、时钟配置、数据位宽、声道设置等。通常在嵌入式开发中,I2S接口的配置通过硬件抽象层(HAL)或寄存器直接控制。
数据传输:
音频数据的传输可以通过中断、DMA(直接内存访问)等方式实现。DMA方式可以提高数据传输效率,减少CPU负担。在数据传输过程中,发送方会在SCK的下降沿改变SD线上的数据,而接收方则会在SCK的上升沿采样这些数据。通过这种方式,可以确保数据的稳定传输并避免数据冲突和错误。同时,由于I2S协议支持多声道音频传输,因此可以轻松实现立体声、环绕声等音频效果。
接收与发送:
发送数据:将音频数据写入I2S的数据寄存器后,I2S会自动将数据传输到数据总线。
接收数据:I2S通过接收寄存器接收音频数据,数据可以通过中断或轮询的方式获取。
处理音频数据:
对于PCM数据,可以根据需要进行信号处理,比如混音、滤波等。
在某些应用中,需要对接收到的音频数据进行转换,比如从16位数据转换为32位数据等。
音频时钟同步:
时钟的同步对I2S传输至关重要,主设备需要提供稳定的时钟信号。如果是从设备,通常需要同步主设备的时钟。