发 帖  
原厂入驻New
[资料]

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

2011-11-2 09:48:19  7965 SPI I2C UART
分享
第一个区别当然是名字:

     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)。

     UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。

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

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

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

     wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。

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









7
分享淘帖 显示全部楼层
· 2012-6-21 09:15:31
感谢分享
· 2012-7-1 16:19:10
好好学习哦
· 2012-7-2 07:59:54
好好学习
· 2012-7-2 17:14:07
谢谢楼主分享
· 2012-7-5 07:39:28
· 2012-7-7 20:05:29
谢谢楼主了··
· 2012-7-16 15:37:02
经验之谈。。
· 2012-7-31 10:49:17
dddddddddddddddddddddddddddddddddddddddddd
· 2012-8-1 22:58:13
谢谢楼主了··
· 2012-8-2 20:12:29
· 2012-8-27 14:06:36
这个学习了。。
· 2012-8-27 22:59:37
谢谢楼主了
· 2012-8-29 22:35:47
IIC总线至今没有弄明白的表示压力很大
· 2012-8-30 10:38:08
具体在选择的时候  要看情况
· 2012-8-31 01:07:52
总线的选择确实是一个难题
· 2012-9-6 09:21:38
{:20:}
· 2012-9-6 12:40:30
谢谢楼主
· 2012-9-9 10:52:11
学习了
· 2012-9-9 22:54:41
多谢分享,很有帮助

只有小组成员才能发言,加入小组>>

1234下一页

375个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表