SPI,I2C和UART的总结

参考:

嵌入式工程师面对IIC和SPI时,该怎么选择?

SPI、I2C、UART(即串口)三种串行总线详解


区别:

1. UART是全双工方式,主机和从机至少要接三根线,RX(接收)、TX(发送)和GND;

2. SPI是全双工串行总线,由一个主设备和多个从设备组成,由四跟信号线组成:SDI(串行数据输入)、SDO(串行数据输出)、SCK(串行移位时钟)、CS(从使能),以CS选择从机;

3. IIC是半双工通信,由两根信号线组成:SCL(时钟线)和SDA(数据线),以地址选择从机。 


1、名字上的区别:  
SPI: (Serial Peripheral Interface),串行外设接口  
IIC: (INTER IC BUS),IC之间的总线  
UART: (Universal Asynchronous Receiver Transmitter),通用异步收发器  
2、电气信号上的区别  
a.SPI总线主要由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。主从设备可以实现全双工通信,当有多个从设备是,还可以增加一条从设备选择线。  
b.IIC总线是双向、两线(SCL、SDA)、串行、多控接口标准,具有总线仲裁机制,非常适合器件之间近距离、非经常性的数据通信。  
c.UART总线是异步串口,一般由波特率产生器、UART接收器、UART发送器组成,硬件上有两根线,发送与接收各占一根线。  
3、SPI和UART可以实现全双工,但是IIC不行。 


1.UART是全双工通信方式,两根数据线RX和TX,通信时双方需要共地,数据的传输速度由波特率决定,所以每位数据的收发完全依靠精确的时间来控制。

2.IIC总线是半双工通信方式,支持一个主机多个从机,在通信时主机必须固定,通过地址来区分从机,两根数据线SCL,SDA,数据的收发依靠时钟线进行控制。

3.SPI总线是全双工通信方式,支持一个主机多个从机,通信是主机可以发生改变,是真正的多主机总线,4跟数据线,CS,MISO,MOSI,SCL,通过片选线来控制与哪个从机进行通信,通过时钟线控制数据收发。

    SPI 是全双工串行通信协议,由SCK、MISO、MOSI三根线组成,另外一般具有SPI_EN引脚,用于连接多个从机。通信由主机发起,发送数据的同时也接收数据。SPI具有协议简单,使用便捷等特点。
    IIC是半双工通信协议,只由两根线SCK、DATA组成。每个IIC器件都具有一个独一无二的器件地址,接入IIC网络中,通信时通过地址来识别从机。

对比项          UART                      SPI             I2C
信号线数目 3根,RX、TX、GND 4根,SDO、SDI、SCLK、SS 2根,SDA、SCLK
设备从属关系            —— 存在主从设备。SPI用片选信号选择从机  存在主从设备。IIC用地址选择从机。
通信方式 全双工通信 全双工通信 半双工通信
通信速率 速度慢 比I2C总线要快,速度可达到几Mbps I2C的速度比SPI慢
应用领域

1、UART常用于控制计算机与串行设备的芯片

2、就是我们经常所说的串口,基本都用于调试。

主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间 I2C一般是用在同一个板子上的2个IC之间的通信 ,它可以替代标准的并行总线,连接各种集成电路和功能模块。
传输距离     I2C需要有双向IO的支持,而且使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信
通信特征 异步,一帧可以传5/6/7/8位 同步,SPI允许数据一位一位的传送,甚至允许暂停。从最高位开始传。 同步,电平信号,一次连续8bit。从最高位开始传
协议复杂度 结构比较复杂 SPI实现要比UART简单,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。 协议比SPI复杂,但是连线比标准的SPI要少
对比  

在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。

在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(嵌入式)