一、SPI
1、电气特性
SPI是全双工串行总线
-
SPI是一主多从的设备总线,至少3个信号线用于数据交换
SIMO:从机输入、主机输出
SOMI:从机输出、主机输入
SLK:时钟线
SS:从机选择使能位
2、协议内容
SPI是一个环形总线结构,主机和从机各有一个8位的移位寄存器,这两个移位寄存器连接成环状。依照SCK的变化,数据以MSB first的方式依次移出Master寄存器和Slave寄存器,并且依次移入Slave寄存器和Master寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换
二、IIC
1、电气特性
- IIC是多主设备的总线,一个主机可以连多个从机,同一总线上的设备总量只收到总线最大电容400pF 的限制,没有物理芯片选择信号线,只有两条信号线——SCL(时钟线)、SDA(数据线)
- IIC是半双工的通信方式
2、协议内容
- 每一支IIC设备都有一个唯一的七位设备地址
- 每次传输一个大小为8位的数据帧
- 数据(帧)中的某些数据位用于控制通信的开始、停止、方向(读写)和应答机制
3、相关时序
起始信号:SCL 为高电平时, SDA 由高电平向低电平跳变
结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变
响应信号:接收设备在接收到 8 位的数据后,在第 9 个时钟周期,拉低 SDA 电平
-
写字节和读字节时序如下图所示:
首先,主设备发一个START信号,然后其它设备开始监听总线以准备接收数据,接着,主设备发送一个7位设备地址加一位的写操作的数据帧。当所有设备接收数据后,比对地址自己是否目标设备。如果比对不符,设备进入等待状态,等待STOP信号的来临;如果比对相符,设备会发送一个应答信号ACK作为回应。当主设备收到应答后便开始传送从设备内部寄存器的地址,然后接着等待从设备的ACK应答。
如果是写数据,收到应答之后就开始发送8位的数据,发完之后从机便会有一个ACK应答,如果主机发送STOP信号,就代表结束。
如果是读数据,收到应答之后主机会重新发送START信号,接着发送从设备的7位地址加一个读位,等待从机的ACK应答,主机收到应答之后便开始接收数据,从机开始发送数据,主机每接收到一个字节,就会发送一个ACK信号,直到不再接受,发送STOP信号
4、IIC的总线仲裁
在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其他的节点发送控制字节和传 送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。
IIC总线上的仲裁分两部分:SCL线的同步
和SDA线的仲裁
1.SCL同步是由于总线具有线“与”的逻辑功能,即只要有一个节点发送低电平时,总线上就表现为低电平。当所有的节点都发送高电平时,总线才能表现为高电平
2.SDA线的仲裁也是建立在总线具有线“与”逻辑功能的原理上的。节点在发送1位数据后,比较总线上所呈现的数据与自己发送的是否一致。是,继续发送;否则,退出竞争。
三、SPI和IIC的对比
1、从硬件资源上说:SPI至少需要三根信号线,而IIC只要两根但是IIC需要上拉电阻的支持,所以抗干扰能力较弱
2、从传输速度上说:当然SPL传输速度快(10 Mbps),毕竟是全双工的;IIC是半双工的(3.4 Mbps)