协议-I2S笔记

学习笔记,不做其他用途,仅供参考,如有错误,欢迎各位大佬指正,参考内容均来源于网络,有问题可以联系我注明出处

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.1kHz48kHz96kHz192kHz 等。
  • 影响:采样率越高,每秒钟对音频的采样次数越多,从而能够更准确地重现高频成分。较低的采样率(如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传输至关重要,主设备需要提供稳定的时钟信号。如果是从设备,通常需要同步主设备的时钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值