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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一个区别当然是名字:

SPI(Serial Peripheral Interface:串行外设接口);

I2C(INTER IC BUS)

UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

第二,区别在电气信号线上:

SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输

入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以

实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO 口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现

的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输

出口即可,若只实现从设备,则只需输入口即可。

I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。

在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现

设备组网。如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入

输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这

里的描述可能很不完备)

UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般

由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、

UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。显然,

如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。

第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;

第四,看看牛人们的意见吧!

1、I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单

一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无

所谓,因为它是有时钟的协议。

2、I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

全双工和半双工的区别

全双工就是收发可以同时的,就好像我们打手机,大家都可以说话。收和发可以同时进行。半双工就是发和收不能同时。像对讲机那样,要么你说,要么听别人说。

网卡中的全双工和半双工:网线比较长,设置为全双工的时候丢包,说明信号在网络中收

发串扰比较严重,采用半双工由于同一时间是一个方向发数据。所以丢包要少。所以距离

长的话最好用好的网线,例如使用超五类线。

相关文档
最新文档