数字音频接口之I2S总线协议详解
数字音频接口之I2S总线协议详解
应用场景#
I2S(Inter-IC Sound)是一种广泛应用于数字音频传输的串行接口标准,一种用于在数字音频设备之间传输音频数据的串行总线标准。它最初由飞利浦(Philips)公司开发,用于解决在集成电路之间传输音频数据的问题,主要用于连接音频编解码器(CODEC)、数字信号处理器(DSP)和其他音频设备。I2S协议定义了音频数据的传输格式、时序和控制信号。在工作中音频采集和输出,AD和主芯片之间的通信均是通过I2S进行通信的,其应用场景如下:
I2S RX方向:麦克风在机械振动下将声音信号转变为电压信号,电压信号经过放大等处理,给到ADC采样,将模拟信号转化为数字信号;音频在ADC与DSP之间的传输协议就是使用的I2S协议。
I2S TX方向:数字信号经过编码、存储、压缩等技术后,发送给解码器-DAC(DSP、专用解码器),将数字信号还原为模拟信号,最后给到喇叭完成声音/音频的播放。音频在DAC与DSP之间的传输就是使用I2S协议。
I2S的应用
上图中,RX方向对应麦克风的模拟信号的输入;TX方向对应输出模拟信号到喇叭。
I2S基本信号#
I2S基本信号线#
I2S协议基本时序关系
如上图I2S接口通常由三类信号线组成,分别是:
-
时钟线(Continues Serial Clock,SCK):SCK线提供了同步音频数据传输的时钟信号。确定了数据传输的速度和时序。该时钟也称为Bit Clock(BCLK)。SCK的频率=2x采样频率x位宽。
SCK(Serial Clock,串行时钟):
也称为位时钟(Bit Clock)或BCLK。
用于同步数据传输。
每个时钟周期对应一个音频数据位。
频率取决于音频采样率和数据位数。
-
左/右声道线(Left-Right Clock,LRCK):LRCK线指示了当前传输的是左声道的音频数据还是右声道的音频数据。它被称为帧同步信号。LRCK的频率=采样频率。
WS(Word Select,字选择):
也称为左右声道时钟(Left/Right Clock)或LRCK。
用于指示当前传输的是左声道还是右声道的数据。
通常WS为高电平时传输左声道数据,低电平时传输右声道数据。
频率等于音频采样率。
-
数据线(Serial Data,SD ):SD线用于传输实际的音频数据。数据的位宽可以根据具体应用而变化,通常为16位或32位。TX方向为:Serial Data Out(SDOUT);RX方向为:Serial Data In(SDIN)。
SD(Serial Data,串行数据):
用于传输实际的音频数据。
数据在SCK的上升沿或下降沿(取决于设备)被采样。
数据格式通常为二进制补码。
I2S协议中常见的参数#
-
位宽(Word Length):位宽指定每个采样数据的位数,通常为16位或32位。较大的位宽可以提供更高的分辨率和动态范围。
-
时钟极性(Clock Polarity):时钟极性确定了数据位传输的时钟沿。根据具体的I2S设备和系统设置,可以定义在时钟上升沿或下降沿开始数据传输。
-
帧同步极性(Frame Sync Polarity):帧同步极性确定了帧同步信号的有效电平。帧同步信号指示音频数据的帧起始和结束位置。
-
传输格式(Data Format):传输格式定义了音频数据的编码方式,传输格式还可以指定数据的顺序,如左声道先传输还是右声道先传输。
数据传输格式#
I²S数据传输格式通常包括以下几个部分:
- 声道选择
- WS信号指示当前传输的是左声道还是右声道的数据。
- 数据对齐
-
数据通常在WS信号变化后的一个SCK周期开始传输。
-
数据位数可以是16位、24位或32位,具体取决于设备。
- 数据延迟
- 数据可能会在WS信号变化后延迟一个SCK周期才开始传输,这称为数据延迟。
时序图#
I2S信号的时序图通常如下所示:
-
WS信号在左声道时为高电平,右声道时为低电平。
-
SD数据在SCK的上升沿或下降沿被采样。
-
数据在WS信号变化后的一个SCK周期开始传输。
应用#
I2S广泛应用于各种音频设备中,包括:
-
音频编解码器:用于将模拟音频信号转换为数字信号,或反之。
-
数字信号处理器:用于音频信号处理。
-
微控制器:用于控制和传输音频数据。
-
音频接口:如耳机、扬声器等。
主从工作模式#
I2S工作模式可以是主模式(Master Mode)或从模式(Slave Mode)。两者唯一的区别是:Master Mode提供时钟信号(SCK)和帧同步信号(LRCK)。如下图所示,一共存在三种工作模式,分别是:
1.发射器(transmitter)为Master,接收器(receiver)为Slave,此时由发射器提供SCK和LRCK
2.接收器(receiver)为Master,发射器(transmitter)为Slave,此时由接收器提供SCK和LRCK
3.发射器(transmitter)和接收器(receiver)均为Slave,由系统中其他模块提供SCK和LRCK
数据传输模式#
I2S接口标准中,存在三种数据传输模式,分别是:飞利浦标准模式(I2S mode),左对齐(Left Justified)和右对齐(Right Justified)三种传输模式。
飞利浦标准(I2S)模式#
其主要特点如下:
(1)LRCK(左右声道选择信号):LRCK信号用于指示当前数据帧是左声道数据还是右声道数据。飞利浦格式中,当LRCK为低时,表示当前传输的数据是左声道数据;当LRCK为高时,表示当前传输的数据为右声道数据
(2)SCK(位时钟):数据传输的时钟信号。在SCK下降沿发送数据,在SCK上升沿采样数据
(3)Data Delay:发送的有效数据相对于LRCK的跳变沿(从0到1或从1到0)延迟一个时钟周期
(4)数据发送从MSB开始;数据MSB与LRCK delay 1个SCK的边沿对齐
左对齐(Left Justified)模式#
其主要特点如下
(1)在左对齐格式中,LRCK为高时,表示当前传输的数据为左声道数据;当LRCK为低时,表示当前传输的数据为右声道数据
(2)在SCK下降沿发送数据,在SCK上升沿接收数据
(3)无data delay:发送的有效数据相当于LRCK跳变沿(从0到1或从1到0)不延迟
(4)数据发送从MSB开始;数据MSB与LRCK跳变沿对齐
3.右对齐(Right Justified)模式
其主要特点如下
(1)右对齐格式中,LRCK为高电平时,表示当前传输的数据为右声道数据;当LRCK为低电平时,表示当前传输的数据为左声道数据
(2)在SCK下降沿发送数据,在SCK上升沿接收数据
(3)无Data delay:发送的有效数据相当于LRCK跳变沿(从0到1或从1到0)不延迟
(4)数据发送从MSB开始;数据LSB与LRCK跳变沿对齐
数据位宽与位深#
(1)位宽:根据SCK与LRCK的关系:
采样频率位宽一般为16位或32位
(2)位深:表示音频数据量化后的精度
需要注意的是,I2S中位宽和位深都是由Master决定的。因此在使用时需要先确定本模块在系统中的工作模式(Master or Slave)。下面以32位位宽,32/24/20/16位位深为例,说明位宽与位深的区别(以下例子的数据格式均为I2S格式)。
32位位宽,32位位深#
位宽=32bit,位深=32bit
32位位宽,24位位深#
位宽=32bit,位深=24bit
32位位宽,20位位深#
位宽=32bit,位深=20bit
32位位宽,16位位深#
位宽=32bit,位深=16bit
I2S初始化配置#
- i2s的时钟使能和GPIO口配置
- 配置为i2s模式
- i2s标准,无论有多少位有效数据,即数据的最高位总是出现在WS变化(也就是一帧开始)后的第2个CK脉冲处。
- i2s数据长度,包括16位,16位扩展(16位数据以32位包发送),24位,32位。
- 设置i2s时钟
- 设置i2s空闲状态下时钟电平
- i2s使能,设置I2S的采样率。采样率一般在8K-192K之间。
总结#
I2S是一种高效、简单的数字音频传输协议,广泛应用于各种音频设备中。通过SCK、WS和SD三条信号线,I2S能够实现高质量的音频数据传输,支持多种数据格式和采样率。理解I2S信号的时序和数据格式对于设计和调试音频系统至关重要。
1、SDATA,也就是串行数据信号,使用二进制传输数字信号。请注意数据的传输形式为补码的方式
2、例如音频的采样率是8K,一s内存采样8K个点,一个点包含一个左声道,一个右声道,所以LRCK是8K,BCLK是2×采样频率×采样位数
3、同时双向(TX和RX)音频流:串行数据同步移位到时钟信号SCK和LRCK。在SCK的下降沿将TX数据写入SDOUT引脚,并在SCK的上升沿从SDIN引脚读取RX数据。始终首先发送最高有效位(MSB);TX和RX均可在主模式和从模式下使用。
4、MCLK:主时钟(也名过采样率),一般是采样频率[不是bclk而是LRCK]的128、或256、或384或512倍。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
2023-08-11 【剑指Offer】36、两个链表的第一个公共结点
2023-08-11 【剑指Offer】25、复杂链表的复制
2023-08-11 【剑指Offer】16、合并两个排序的链表