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

2008-3-14 21:13 6313 6 10 分类: 汽车电子

第一个区别当然是名字:
    SPI(Serial Peripheral Interface:串行外设接口);
    I2C(INTER IC BUS:意为IC之间总线)
    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不行;

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

jianwei2030_344457845 2014-6-23 15:41

好好,我也想这么干

用户1462541 2009-12-10 21:32

学习~

用户152436 2008-6-24 22:43

好!

ilove314_323192455 2008-5-20 20:14

还有MAXIM公司的1-wire通信,感觉就是质疑偶一个输入口的UART

ilove314_323192455 2008-5-20 20:12

iic差不多就这样了,数据线SDA可以发数据也可以接收数据,但是必须在时钟信号线SCL的控制下

用户1407150 2008-3-15 13:47

不错的,支持!
相关推荐阅读
用户393569 2011-10-14 10:26
ucos-ii 中断服务程序需要做的事情
用户中断服务子程序需要按以下顺序完成这些工作:保存全部CPU寄存器; (1)调用OSIntEnter或OSIntNesting直接加1; (2)执行用户代码做中断服务; (3)调用OSIntExit(...
用户393569 2011-10-14 10:17
ucos-ii 任务状态
下图是μC/OS-Ⅱ控制下的任务状态转换图。在任一给定的时刻,任务的状态一定是在这五种状态之一。   ...
用户393569 2011-01-15 09:59
与书配套-CAN学习板第六版照片
...
用户393569 2009-10-27 07:17
【转载】hxhxin网友:我的自收发实验成功了.........
 当买来CAN学习板时,看着板子精致的,说实话,都不舍得碰,怕碰坏了。更别说用板子来做实验了,简直是无从下手。因为我的专业是电力系统自动化,学的都是强电类的,对这个小板子还真的不了解。经过近一个半月的...
用户393569 2009-10-23 20:07
【推荐!】akuei2网友的CAN学习笔记分享
akuei2网友一直在我们小组很活跃,积极发表自己的一些学习经验。这几天有机会看了他在EDN博客上发表的几篇CAN的学习笔记,觉得写得非常好!还没有征得他的同意我就想转载进来,这里把连接标出来,供大家...
用户393569 2009-08-23 19:30
出差了!
今晚就要出差了,出差过程中白天不方便上网,不能看大家的发帖了.晚上有时间会尽量来EDN上转转,与大家共同学习!在这器件如果您有问题,可以发邮件给我.如果你购买了无线模块,而还没有收到程序,那么请将你付...
EE直播间
更多
我要评论
4
6
关闭 站长推荐上一条 /3 下一条