找回密码
 注册
关于网站域名变更的通知
查看: 613|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-13 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

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

3 b$ W) S1 m0 w( [$ j+ \% M' t. B+ ?2 f" v& Z) O9 }) I
第一个区别当然是名字:/ p0 |2 M9 S1 v

* _  R$ [5 A4 t" R4 T( I     SPI(Serial Peripheral InteRFace:串行外设接口);; g2 t, v, {/ C& u+ v. _0 L1 z
# b% L$ S0 G( `1 ^! _3 N& O" D
     I2C(INTER IC BUS)
7 G% [, O5 W- G% i) M; o: J+ y/ p: }" N+ o! _  h) g& U' i: p
     UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)
2 a3 A# p# s- M: |' r
% k1 _) |6 @4 t6 Z: J4 }/ F- b第二,区别在电气信号线上:) p) o5 _+ E( d, W2 X5 s

! R5 e. z  |8 d) n9 m1 z1 `     SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。: v  \5 N4 Y( K5 t2 V7 f5 p
% j  k$ m0 Y8 g  A% O7 z+ i
     如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
. i+ p% B% Q2 C* w% h' V' V" C9 i2 L  y; Q/ w# K
     I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。8 A, q  W+ x; q4 X$ P8 z

% C3 m+ W) S8 r5 x1 c4 k' m     如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备)
$ |. x- L& Y, ~% ^) K# o  X' J1 _. z8 y5 S
     UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。2 K* h& S' R3 \$ {. k4 Q
8 ~- `8 m) R) s% M' d5 o
     显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
3 R- J2 I/ i7 E4 i, k+ k6 f* ]# m! ~/ M! e
第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;
) z3 V' ^' z7 R" Z5 W* \- ?' P* w: J" }
第四,看看牛人们的意见吧!
6 x- g, ]1 X% P% d$ Z. K6 J
; ]" ]7 W+ Q% @; T" m  N& g     wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。
$ j: ?7 y9 a- X1 H* B1 V
, G0 {* r; I* s     quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。1 ]7 X) f* D6 _( b

6 q! w7 H& ^& o7 k  x/ `! w9 j& ?5 w+ M' QSPI接口介绍(转)
+ A: U1 P& T% d" x; \这几天碰到了使用SPI接口的flash,才知道flash还可以是串行的,看来以前真是井底之蛙啊,找了一些SPI接口的资料都不全,后来找到一点英文资料,翻译了一下,加上我的个人理解,凑成一篇了,希望对初学者有点帮助。
: V$ K# P( J0 ]! t6 T
$ y9 z& n9 @' c. `   SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。; B: w% b: j: Y
9 L) |' s3 q9 A  v$ g  D
   SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
5 |9 o# M7 x7 o1 q# J3 ?4 L( U. J- V
   SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:* a/ @" u; L% r, S- H# P- Z2 P

6 X$ ~8 L* x9 ^1 S% ~8 _(1)MOSI – 主器件数据输出,从器件数据输入- r8 e( u8 o+ H( B3 S% `
(2)MISO – 主器件数据输入,从器件数据输出/ x) q/ g( p0 F0 E# g5 x# f
(3)SCLK – 时钟信号,由主器件产生
7 Y) E. {" `* N" T: p  y(4)/SS  – 从器件使能信号,由主器件控制
  [1 s, T/ g$ y1 {" ?+ o

该用户从未签到

2#
发表于 2019-3-13 14:35 | 只看该作者
讲的非常清楚 赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 14:19 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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