I2S基础
Posted Welljia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I2S基础相关的知识,希望对你有一定的参考价值。
概念
I2S(Inter—IC Sound)总线,又称集成电路内置音频总线,飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,用于音频设备之间的数据传输,广泛应用于各种多媒体系统。
特点
- 支持全双工和半双工通信。
- 支持主/从模式。
总线规范
标准
标准的I2S总线电缆是由3根串行导线组成的:1根是时分多路复用(简称TDM)数据线;1根是字选择线;1根是时钟线。
其3个主要信号 为:
- 串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数。
- 帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据。LRCK的频率等于采样频率。
- 串行数据SDATA,就是用二进制补码表示的音频数据。
格式分析
I2S格式的信号无论有多少位有效数据,数据的最高位总是出现在LRCK变化(也就是一帧开始)后的第2个SCLK脉冲处,见上面I2S格式图。
这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。
硬件接口规范
- SD,即SDATA:串行数据(映射到 MOSI 引脚),用于发送或接收两个时分复用的数据通道上的数据(仅半双工模式)。
- WS:字选择(映射到NSS引脚),即帧时钟,用于切换左右声道的数据。WS频率等于音频信号采样率(fs)。
- CK,即SCLK:串行时钟(映射到SCK引脚),即位时钟,是主模式下的串行时钟输出以及从模式下的串行时钟输入。位时钟=采样率通道数位数。
- I2S2ext_SD和I2S3ext_SD:用于控制I2S全双工模式的附加引脚(映射到MISO引脚)。
- MCK:即主时钟输出,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。有时为了使系统间能够更好地同步,当I2S配置为主模式(并且SPI_I2SPR寄存器中的MCKOE位置1)时,使用此时钟,该时钟输出频率 256×fs,fs即音频信号采样频率(fs)。
I2S时序及要求
在I2s总线中,任何设备都可以通过提供必需的时钟信号成为系统的主导装置,而从属装置通过外部时钟信号得到它的内部时钟信号,主导装置和数据以及命令选择信号之间有传播延迟,总的延迟主要由两部分组成:
- 外部时钟和从属装置的内部时钟之间的延迟
- 内部时钟和数据信号以及命令选择信号之间的延迟
对于数据和命令信号的输入,延迟的主要部分是发送端的传输延迟和设置接收端所需的时间。外部时钟和内部时钟的延迟不占据主导地位,它只是延长了有效的建立时间(set—up time)。
T是时钟周期,Tr是最小允许时钟周期,T>Tr这样发送端和接收端才能满足数据传输速率的要求。
对于所有的数据速率,发送端和接收端均发出一个具有固定的传号空号比(mark—space ratio)的时钟信号,所以yLC和tHC是由T所定义的。tLC和tHC必须大于0.35T,这样信号在从属装置端就可以被检测到。
延迟(tdtr)和最快的传输速度(由Ttr定义)是相关的,快的发送端信号在慢的时钟上升沿可能导致tdtr不能超过tRC而使thtr为零或者负。只有tRC不大于tRCmax的时候(tRCmax>:0.15T),发送端才能保证thtr大于等于0。
为了允许数据在下降沿被记录,时钟信号上升沿及T相关的时间延迟应该给予接收端充分的建立时间(set-up time)。
数据建立时间(set-up time)和保持时间(hold time)不能小于指定接收端的建立时间和保持时间。
扩展
随着技术的发展,在统一的 I2S接口下,出现了多种不同的数据格式。根据SDATA数据相对于LRCK和SCLK的位置不同,分为左对齐(较少使用)、I2S格式(即飞利浦规定的格式)和右对齐(也叫日本格式、普通格式)。
电气规范
输出电压:
VL <0.4V
VH>2.4V
输入电压
VIL<0.8V
VIH>2.0V
注:这是使用的TTL电平标准,随着其他IC(LSI)的流行,其他电平也会支持。
I2S发送数据与接收数据
读写流程
- WS时钟线用于切换左右声道,在该时钟的同一周期内的高电平和低电平应发送相同的数据,然后左右声道的声音才会一样。
- CK时钟用于启动传输每一位音频数据
I2S Receiver Architecture
I2S Transmitter Architecture
运行流程及配置使用
I2S工作过程
随着WS信号的改变,导出一个WSP脉冲信号,进入并行移位寄存器,从而输出数据被激活。串行数据的默认输入是0,因此所有位于最低位(LSB)后的数据将被设置为0。
随着第一个WS信号的改变,WSP在SCK信号的下降沿重设计数器。在“1 out of n”译码器对计数器数值进行译码后,第一个串行的数据(MSB)在SCK时钟信号的上升沿被存放进入B1,随着计数器的增长,接下来的数据被依次存放进入B2到Bn中。在下一个WS信号改变的时候,数据根据WSP脉冲的变化被存放进入左(声道)锁存器或者右(声道)锁存器,并且将B2一Bn的数据清除以及计数器重设,如果有冗余的数据则最低位之后的数据将被忽略。
注意:译码器和计数器可以被一个n比特移位寄存器所代替。
配置使用
- i2s的时钟使能和GPIO口配置
- 配置为i2s模式
- i2s标准,包括左对齐,右对齐,i2s标准,即数据的最高位总是出现在WS变化(也就是一帧开始)后的第2个CK脉冲处。
- i2s数据长度,包括16位,16位扩展(16位数据以32位包发送),24位,32位。
- 设置i2s时钟
- i2s使能
- 设置I2S的采样率。采样率一般在8K-192K之间。
示波器测量波形及分析
以上是关于I2S基础的主要内容,如果未能解决你的问题,请参考以下文章