SPI & IIC

95 阅读2分钟

iic(Inter-Integrated Circuit)和spi(Serial Peripheral Interface)是低端数字通信领域随处可见的接口,因为这两种协议非常适合近距离低速芯片间的通信。

SPI

spi是一种四根信号线协议。

SCLK:Serial Clock(Output form Master)

MOSI/SIMO:Master Output,Slave Input

MISO/SOMI:Master Input,Slave Output

SS:Slave Select(Active Low)

spi是一种单主多从设备通信协议,这意味着总线中只有一支中心设备能发起通信。

当spi主设备想读写从设备时,它首先拉低从设备的SS线(低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOSI实现写,同时可对MISO采样而实现读。

image.png

image.png

I2C

与spi单主设备不同,iic是多主设备的总线,iic没有物理的芯片选择信号线,没有仲裁逻辑电路,只是用两条信号线。

SDA:Serial Data

SCL:Serial Clock

iic协议规定:

  1. 每支iic设备都有一个唯一的七位设备地址;
  2. 数据帧大小为8位的字节;
  3. 数据帧中的某些数据位用于控制通信的开始、停止、方向(读写)和应答机制;

物理实现上,iic总线由两根信号线和一根地址线组成。两根信号线都是双向输出的。

image.png

iic的通信过程:

  1. 主设备发送START信号,告诉其他设备开始监听总线以准备接收数据;
  2. 主设备发送一个7位设备地址加一位的读写操作的数据帧;
  3. 当所有设备接收完数据后,对比地址自己是否目标设备;
  4. 如果对比不符,设备进入等待状态,等待STOP信号,如果相符,设备会发送一个应答信号(ACKNOWLEDGE)作为应答;
  5. 当主设备收到应答之后便开始传送和接收数据,数据帧大小为8位,尾随1位的应答信号;
  6. 当数据传输完毕,主设备发送一个STOP信号,向其他设备告知释放总线,其他设备回到初始状态;

基于iic总线的物理结构,总线上的START和STOP信号必定是唯一的。另外,iic总线标准规定SDA线的数据转换必须在SCL线的低电平期,在SCL线的高电平期,SDA线上的数据是最稳定的。

image.png