SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。SPI总线真正实现了全双工数据传输,SPI 有3线跟4线两种,4线的话,就是多了一条叫SDC的线,用来告知从设备现在传输的是数据还是指令。
参考:https://blog.csdn.net/zn2016/article/details/78791028
相同点就是
两者都是一主多从总线模式
两者都有一根线作为时钟
不同点就多了
IIC的另一根线是输入输出复用的。
SPI一条用于输出,一条用于输入
IIC有冲突检测
SPI的多个从机是靠CS引脚区分,无需冲突检测
都是 串行通信,iic 是个标准协议,都是主从通信,
iic 容易扩展,一条总线,可以挂载多个器件。spi 一条总线,多挂载一个器件,需要多一条 CS 线
iic 同一个时刻只能收,或者发,spi 同一时刻同时收和发
I2C和SPI都是串行通信,也都分主从。
两者时序和硬件接口不一样。SPI分时钟、片选、输入、输出;I2C就2根线,数据和时钟。I2C因为只有2根线,而且可以挂多个器件,所以有冲突检测;SPI有CS片选,所以没有这个检测。
相同点恐怕只有都有一根时钟线了吧。
不同点的话,SPI四根线,时钟,发送,接收,使能
IIC两根,时钟,发送/接收
iic是通过地址区分不同从机的。SPI是通过CS脚区分
I2C是半双工的,可以多个设备通信,设备靠7位或者11位地址来识别
SPI是全双工的,多个设备通信,靠片选来实现,不需要器件地址
二者相同的地方在于都有一条时钟线,用于波特率同步