Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2999953
  • 博文数量: 405
  • 博客积分: 10227
  • 博客等级: 上将
  • 技术积分: 9787
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 21:48
个人简介

非淡泊无以明志,非宁静无以致远

文章存档

2019年(5)

2018年(4)

2017年(3)

2016年(24)

2015年(8)

2014年(7)

2013年(3)

2012年(1)

2011年(23)

2010年(179)

2009年(148)

分类: 嵌入式

2019-04-27 13:53:52

1. 介绍

I2S(InterIC Sound)总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的音频数据传输。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。

   2. I2S特点

1、支持全双工/半双工

2、支持主/从模式

3、和PCM相比,I2S更适合立体声系统。当然,I2S的变体也支持多通道的时分复用,因此可以支持多声道

I2S总线有三条数据信号线:

(1)BCLK:串行时钟,也叫位时钟,对应数字音频的每一位数据。对应数字音频的每一位数据,SCK都有1个脉冲。SCK的频率=2×采样频率×采样位数。

(2)WS:字段(声道)选择,帧时钟LRCK(左右时钟),用于选择左右声道。为“0”表示正在传输的是左声道的数据, 为“1”表示正在传输的是右声道的数据。

用于切换左右声道的数据。WS的频率=采样频率。

         命令选择线表明了正在被传输的声道。

         WS为“1”表示正在传输的是左声道的数据。

         WS为“0”表示正在传输的是右声道的数据。

        WS可以在串行时钟的上升沿或者下降沿发生改变,并且WS信号不需要一定是对称的。在从属装置端,WS在时钟信号的上升沿发生改变。WS总是在最高位传输前的一个时钟周期发生改变,这样可以使从属装置得到与被传输的串行数据同步的时间,并且使接收端存储当前的命令以及为下次的命令清除空间。

 (3)SD:串行数据,用二进制补码来表示音频数据(数据传输从高位到低位)。

用二进制补码表示的音频数据。 I2S格式的信号无论有多少位有效数据,数据的最高位总是被最先传输(WS变化(也就是一帧开始)后的第2SCK脉冲处),因此最高位拥有固定的位置,而最低位的位置则是依赖于数据的有效位数。也就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位(常补足为零)。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。为了保证数字音频信号的正确传输,发送端和接收端应该采用相同的数据格式和长度。当然,对I2S格式来说数据长度可以不同。

(4)  MCLK:主时钟,也叫系统时钟(Sys Clock)。为了使系统间能够更好地同步,MCLK的频率= 256倍或384倍采样频率。

3. 典型I2S信号时序图

对于系统而言,产生SCKWS的信号端就是主设备,用MASTER表示,简单系统示意图如图1所示:





4. 数据格式

随着技术的发展,也出现了很多种不同的数据格式。根据data相对于LRCK海人SCLK位置的不同,分为左对齐和右对齐,发送和接收端必须使用相同的数据格式。

4.1 I2S Philips标准

使用WS信号来指示当前正在发送的数据所属的通道,为0时表示左通道数据。该信号从当前通道数据的第一个位(MSB)之前的一个时钟开始有效。发送方在时钟信号(CK)的下降沿改变数据,接收方在上升沿读取数据。WS信号也在SCK的下降沿变化。参考图 383,为24bit数据封装在32bit帧传输波形。正如之前所说,WS线频率对于采样频率FS,一个WS线周期包括发送左声道和右声道数据,在图中实际需要64个CK周期来完成一次传输。

4.2 左对齐标准

在WS发生翻转同时开始传输数据,参考图 384,为24bit数据封装在32bit帧传输波形。该标准较少使用。注意此时WS为1时,传输的是左声道数据,这刚好与I2S Philips标准相反。




 4.3 右对齐标准

与左对齐标准类似,参考图 385,为24bit数据封装在32bit帧传输波形。




5. 数据发送规格

I2SBCLK的下降沿发送数据(发送),在上升沿进行数据采样(接收)。每次是先发送最高位,最后发送最低位。MSBWS变化的下一个时钟周期有效。因此,最高位拥有固定的位置,而最低位的位置则是依赖于数据的有效位数。也就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位(常补足为零)

I2S发送数据:发送是在每个时钟周期的下降沿发送数据,这样在WS沿变化开始后的第二个下降沿发送数据的最高位。接着在每个下降沿依次发送数据,直到发送完最低位。

I2S接收数据:在每个时钟周期的上升沿接收数据,在WS沿变化开始后的第二个上升沿接收数据的最高位。接着在每个位时钟上升沿依次接收数据,直到接收完最低位。




6. I2S初始化配置

① i2s的时钟使能和GPIO口配置
配置为i2s模式
③ i2s
标准,包括左对齐,右对齐,i2s标准,即数据的最高位总是出现在WS变化(也就是一帧开始)后的第2CK脉冲处。
④ i2s
数据长度,包括16位,16位扩展(16位数据以32位包发送),24位,32位。
设置i2s时钟
设置i2s空闲状态下时钟电平
⑦ i2s
使能

⑨ 设置I2S的采样率。采样率一般在8K-192K之间。

7. 电气连接

IIS是比较简单的数字接口协议,没有地址或设备选择机制。

IIS总线上,只能同时存在一个主设备和发送设备

主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接受设备的其它控制设备。

IIS系统中,提供时钟的设备为主设备。





阅读(220) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册