SPI、I2C和UART三种串行总线协议的区别

第一个区别当然是这个名字:
串行外设接口(串行外设);
I2C总线(ic总线)
通用异步收发器:通用异步收发器

第二,电信号线的区别:
SPI总线由三条信号线:串行时钟(SCLK)、串行数据输出(SDO),和一个串行数据输入(SDI)。SPI总线可以连接多个SPI设备彼此。SPI设备,提供一个SPI串行时钟是一个SPI主机或主设备(主),而另一个是SPI从机或从设备(Slave),全双工通信可以实现主从设备之间,以及从设备选择线时可以添加有多个设备的装置。
如果使用普通IO口模拟SPI总线,必须要有一个输出端口(SDO),一个输入端口(SDI),另一个口的装置来实现类型而定,如果你想实现一个主设备,需要输入和输出端口,如果只为输出端口的主要设备可以实现如果,从设备,你只需要输入口。

I2C总线是双向、二线(SCL、SDA)、串行和多主控制(多主)接口标准。它具有总线仲裁机制。它非常适合于设备间的短距离和非常规数据通信,在协议系统中,数据的传输将带来目的设备的设备地址,从而实现设备网络。
如果使用通用IO端口模拟I2C总线并实现双向传输,则需要输入和输出端口(SDA),需要输出端口(SCL)。(注意:I2C信息相对较小,描述可能非常不完整)。

UART总线是异步串行口,所以一般比前两个同步串行结构更复杂,一般由波特率发生器(16倍波特率等于波特率),UART接收器,UART发送器。硬件由两行组成,一个用于发送,一个用于接收。
显然,如果使用通用IO端口模拟UART总线,则需要一个输入端口和一个输出端口。

第三,从第二点可以看出SPI和UART可以实现全双工,但I2C不好。

第四,看看牛的看法。
我认为wudanyu:I2C线小于UART,SPI更为强大,但是技术是比较麻烦,因为I2C需要双向IO的支持,和一个上拉电阻,我觉得抗干扰能力较弱,一般用于同一芯片卡之间的通信,在长距离communication.spi实施不简单,需要固定的UART波特率,即比特间的间隔是相等的,和SPI并不重要,因为它与时钟协议。
对quickmouse速度:I2C比SPI慢一点,和协议是一位比SPI更复杂,但连接小于标准SPI。