IIC
构成
多主多从
IIC总线 两根线
时钟线SCL 数据线SDA
总线处于空闲状态时, SCL, SDA均处于高电平状态
时序
起始位
时钟信号SCL为高电平期间, 数据线SDA从高电平向低电平的跳变
结束位
时钟信号SCL为高电平期间, 数据线SDA从高电平向低电平的跳变
信号1
时钟信号SCL为高电平期间, 数据线SDA始终为高电平
信号0
时钟信号SCL为高电平期间, 数据线SDA始终为低电平
数据帧的构成
Start + Device Address(7bit) + R/W(0 for read, 1 for write) + N/ACK (0 for ACK, 1 for NACK, slaver to master) + N * (Data(8bit) + N/ACK) + Stop
SPI
构成
一从多主
SPI总线 四根线
时钟线SCK 发送数据线 MOSI 接受数据线 MISO 片选信号 SS
时序
SPI定义了四种数据传输模式
时钟电平定义了时钟空闲状态下的电平
高电平和低电平
时钟相位定义了数据采样和传输的时机
数据在时钟信号的第一个边沿(上升沿或下降沿)进行采样, 数据在第二个边沿进行传输
数据在时钟信号的第二个边沿进行采样, 数据在第一个边沿进行传输
时钟电平和时钟相位共同组成了四种数据传输模式
数据帧的构成
SPI没有明确规定数据帧的长度, 具体的规定参照相应芯片的数据手册
SPI协议发送一帧数据的基本流程, 初始化SPI(传输模式), 置位SS, 选择Slave, 读写数据.
SPI和IIC的对比
区别
传输速率: SPI通信的速率通常比I2C高,可以达到更高的带宽和数据传输速度.
设备数量: I2C支持多主机模式,可以连接多个设备,而SPI通信一般是点对点连接,只能连接一个从设备.
连接复杂性: I2C通信只需要两根线进行传输,连接相对简单,而SPI通信需要多根线(至少4根),连接相对复杂一些.
功耗:I2C通信通常具有较低的功耗,适合低功耗应用,SPI通信在传输数据时消耗的功耗较高.
应用场景
SPI的应用场景:
高速数据传输:SPI通信可以实现高速的全双工数据传输,适用于需要快速传输大量数据的应用,如存储器、传感器、显示屏
短距离通信:SPI通信通常用于短距离的设备间通信(板级),因为它基于点对点连接,不适合长距离传输
需要高带宽的应用:SPI通信具有较高的带宽,适用于需要频繁传输数据的应用,如音频、视频等
I2C的应用场景:
多设备通信:I2C支持多主机模式,可以连接多个主设备和从设备,适用于需要多个设备之间进行通信的应用场景,如传感器网络、嵌入式系统等。
低速设备通信:I2C通信速率较低,适用于对速率要求不高的应用,如温度传感器、电子存储器等。
简单硬件连接:I2C通信只需要两条线连接简单,适用于有限的硬件资源或空间受限的应用。