SPI,IIC,IIS和SMbus的应用优缺点分析

SPI,IIC,IIS和SMbus的应用优缺点分析 分享

概述:

对于需要经常进行数据 流传输的系统 数据,SPI是首选,因为它拥有较快的时钟速率,速率可从几兆赫兹到几十兆赫兹。然而,对于系统管理活动,如读取温度传感器的读数和查询多个从器件的状态 ,或者需要多个主器件共存于同一系统总线上(系统冗余常会要求这一点),或者面向低功耗应用 ,这时I2C 或 SMBus将是首选接口。

下面几部分将介绍每种串行总线及其优缺点。

1. SPI

SPI 是一种四线制串行总线接口,为主/从结构,四条导线分别为串行时钟(SCLK)、主出从入(MOSI)、主入从出(MISO)和从选(SS)信号。主器件 为时钟提供者,可发起读从器件或写从器件操作。这时主器件将与一个从器件进行对话。当总线上存在多个从器件时,要发起一次传输,主器件将把该从器件选择线 拉低,然后分别通过 MOSI 和 MISO 线启动数据发送或接收。

SPI 时钟速度很快,范围可从几兆赫兹到几十兆赫兹,且没有系统开销。SPI 在系统管理方面的缺点是缺乏流控机制,无论主器件还是从器件均不对消息进行确认,主器件无法知道从器件是否繁忙。因此,必须设计聪明的软件 机 制来处理确认问题。同时,SPI 也没有多主器件协议,必须采用很复杂的软件和外部逻辑来实现多主器件架构。每个从器件需要一个单独的从选择信号。总信号数最终为 n+3 个,其中 n 是总线上从器件的数量。因此,导线的数量将随增加的从器件的数量按比例增长。同样,在 SPI 总线上添加新的从器件也不方便。对于额外添加的每个从器件,都需要一条新的从器件选择线或解码逻辑。图 2 显示了典型的 SPI 读/写周期。在地址或命令字节后面跟有一个读/写位。数据通过 MOSI 信号写入从器件,通过 MISO 信号自从器件中读出。图 3显示了 I2C总线/SMBus以及SPI的系统框图。

2. I2C总线


I2C 是一种二线制串行总线接口,工作在主/从模式 。 二线通信信号分别为开漏 SCL 和 SDA 串行时钟和串行数据。主器件为时钟源。数据传输是双向的,其方向取决于读/写位的状态。每个从器件拥有一个唯一的 7 或 10 位地址。主器件通过一个起始位发起一次传输,通过一个停止位终止一次传输。起始位之后为唯一的从器件地址,再后为读/写位。

I2C总线速度为从0Hz到3.4MHz。它没有SPI 那样快,但对于系统管理器件如温度传感器来说则非常理想。I2C 存在系统开销,这些开销包括起始位/停止位、确认位和从地址位,但它因此拥有流控机制。主器件在完成接收来自从器件的数据时总是发送一个确认位,除非其准 备终止传输。从器件在其接收到来自主器件的命令或数据时总是发送一个确认位。当从器件未准备好时,它可以保持或延展时钟,直到其再次准备好响应。

I2C允许多个主器件工作在同一总线上。多个主器件可以轻松同步其时钟,因此所有主器件均采用同一时钟进行传输。多个主器件可以通过数据仲裁检测哪一个主器件正在使用总线,从而避免数据破坏。由于 I2C总线只有两条导线,因此新从器件只需接入总线即可,而无需附加逻辑。

3. SMBus

SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总线规范。和 I2C一样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能 特性,但只工作在100kHz且专门面向智能电池管理应用。它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始位,在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。

SMBus与I2C总线之间在时序特性上存在一些差别。首先,SMBus需要一定数据保持时间 , 而 I2C总线则是从内部延长数据保持时间。SMBus具有超时功能,因此当SCL太低而超过35 ms时,从器件将复位正在进行的通信。相反,I2C采用硬件复位。SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清 除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。SMBus只工作在从10kHz到最高100kHz。最低工作频率10kHz是 由SMBus超时功能决定的

总结:

SPI有较快的速度,但是只能单主多从,管理线比较复杂。

IIC等速度比较慢,数据比较臃余,但是主从管理好,也省电省控制管脚。

 

SPI 的通信原理很简单,它需要至少4根线,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。可以实现全双工。同步串口。单主多从。

I2C只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL。不能实现全双工。同步串口。主从关系好管理。

UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。可以实现全双工。异步串口。

 

 

I²S由3条传输线组成:
1. bit clock line
2. word clock line
3. 至少一条multiplexed data

I²S由前述的bit clock line、word clock line和data line三条线所组成。
当新的资料被放到data line上时,bit clock line就会跳动一次。
它以数据取样率的64倍速度在运作,诸如CD的取样率为44.1 KHz,要传输它所使用的bit clock line就为2.8224 MHz。
I²S的data line允许两个轨道的数据同时传送,而bit clock line能让接收装置知道现在正在传送轨道1或轨道2的资料。
每个轨道可传输32位bit的资料,所以显而易见地bit clock line和声音的取样率时脉是相同的。
bit clock line的64倍即是44.1KHz x 2个声道 x 32位元 = 2.8224MHz。

I²S的数据是从高位bit(MSB)传送至低位bit(LSB),从word clock line的左端开始,加上一个bit clock的延迟,即数据将比word clock line要慢一个bit clock。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值