|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
SPI、I2C、UART三种串行总线协议的区别
, i, x6 B3 B8 n+ B8 o5 C! |% ~+ _+ M" K ~ [6 H
第一个区别当然是名字:2 G( g0 P) u5 ^
/ z3 ]" A% i: f2 w SPI(Serial Peripheral InteRFace:串行外设接口);
5 I" ~ ?/ q% ?% v/ q. D5 m1 j' J- g2 L
I2C(INTER IC BUS)- C8 _3 z. K) x
3 G" c! J( q% {# b# N2 [3 g
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)* Q8 o) N c! l5 P0 `, t3 U. }
' i6 C: C3 e7 n- y T
第二,区别在电气信号线上:
3 @& l4 ?: z' _: u4 W' A% m5 Y7 Y) w% Z
SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。$ S& ~2 s' X% Y( N: i0 Z: ~9 P
- P3 x1 [3 x9 d
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。( J/ h. ]9 M, V+ J
7 m* J8 {6 t/ P! \' Y" e- v# Y1 g
I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。3 p- o+ ^- n1 @* l. R
# F" w, N1 K2 E: ?- q1 u' n
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备)5 Z k; Y& E9 f
8 H i' [. ? _: @! l UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
1 c) g3 p' w2 {
1 ]( ~ \9 {( w 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
. c& @# n, W# z$ U+ h3 I- Y
/ f* y& o/ d0 U* H1 S第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;$ }3 i" X- J9 ?3 f& M
2 Y1 Y, U% {+ G: H! F! L第四,看看牛人们的意见吧!7 p1 {) ^4 d' b: f' R
3 q& E9 i3 y x" e wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。
2 X" C) N% O; f' S; T& n
, x- v% C o$ K! q/ O% _ quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。: t" `' }& X+ t. w
( L! L1 _4 v. e6 ]) s0 e' n
SPI接口介绍(转)1 G4 ?4 @; F6 r. X
这几天碰到了使用SPI接口的flash,才知道flash还可以是串行的,看来以前真是井底之蛙啊,找了一些SPI接口的资料都不全,后来找到一点英文资料,翻译了一下,加上我的个人理解,凑成一篇了,希望对初学者有点帮助。
9 U; K9 `; U- h7 w5 Q3 N( Y8 k! ^; b6 M& `* }& ?
SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
# H/ q5 g3 \% T: P' ?( U5 d7 ]( q f: R; ~/ c% Q8 U$ j
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。) y7 j: n4 a% e' G2 j3 P+ B
9 |, j: o1 h! Y6 L/ C `
SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:
# _8 t0 U' P- m2 a' T9 A- u" k! o1 I& v+ [ F
(1)MOSI – 主器件数据输出,从器件数据输入" Q5 `" q/ |9 u
(2)MISO – 主器件数据输入,从器件数据输出
& n4 w7 F4 l1 ?' K! W5 W(3)SCLK – 时钟信号,由主器件产生+ s$ b. L$ e5 J& I
(4)/SS – 从器件使能信号,由主器件控制7 t( \# y# ]3 u
|
|