你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32经验分享 第14章 关于通信

[复制链接]
STMCU小助手 发布时间:2022-8-30 18:56
14.1 串行/并行通信  o" L- Q( F0 ]% M) I9 u& x
按照数据传输的方式,通信可以分为串行通信和并行通信。串行通信简单的说就是数据依次传输,比如要传输0x11111111,一位一位的发送,需要发送8次。并行通信则是几个数据一起传输,同样是0x11111111,如果8位一起发送,只需要发送1次,如图 14.1.1 所示。; P8 |& c! r: C! x2 w6 b

0 j) Q9 r3 G+ z) l7 x. _  x) I
U@`5$_VIVBHL62WIZ9YHEN2.png
$ X4 y* v) b9 f0 d7 D
  @( l3 y9 z$ o  ?
图 14.1.1 串行/并行传输示意图

" D+ w6 \( r' j& ~, U% r  F! a8 g0 X# Z3 B4 l7 V. `/ g
# d' Y' `* @  r+ ?9 I) _, l
由此可见,串行传输占用的通信线更少,成本低,通信速度相对较慢;并行传输占用的通信线多,成本高,通信速度相对更快。但随着对传输速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展出差分传输等技术,极大的提高了串行传输速率,使得串行通信速度可能比并行通信速度更快。6 l. f1 H- y: {: \

3 c, O3 F% x7 K3 h& F- f! k1 z串行通信就像单车道,行驶的车辆需要依次行驶。并行通信就像多车道,同时多辆汽车并排行驶。但当车速很快的时候,多车道上并列行驶的汽车之间会形成“气流”相互干扰,单车道则受影响较小,速度能够进一步提升。4 G, P5 S* ~& ?4 N( t+ o

# X: Z1 L: A# V) u: Z
+ G+ k2 B+ a* |! O: ?1 u1 F9 s. S14.2 全双工/半双工/单工传输2 S9 g5 r, {7 n' Z3 o6 U
按照数据传输的方向,通信可以分为全双工、半双工和单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但同一时刻只能一方发送信息;单工指只能一方发信息,一方接受信息,通信是单向的。
* }8 |) S1 A+ Y5 P
: P, M! k5 {. b7 K全双工就像电话通信,双方任意时刻都可以同时收发信息;半双工就像对讲机通信,双向都可得到信息,但是同一时刻只能是一方发射另一方接收,发射和接收不能同时进行;单工就像收音机,只能由广播站发送给收音机,单向不可逆的,如图 14.2.1 所示。
% a  x9 v; v) O" c' u, n2 V2 r9 b3 p. M+ B& n* ^3 @" l  ^1 Y
K@$B@B27FQGMP3V(6CQ}WME.png

5 i6 ]1 h9 f3 e: D$ Q! D
9 T, s* X! P! n7 q& v5 L4 M+ ~" M
图 14.2.1 全双工/半双工/单工示意图

/ l* Q. M* `; ^# S6 T7 m5 g/ I2 b7 b0 h* y  y( Z1 h2 K
" X: m4 ?: Q' H7 D, V4 ~% S
14.3 同步/异步通信! [, D, k5 W& v. ^' @2 n" j3 U
按数据同步的方式,通信可以分为同步通信和异步通信。数据在双方之间传输时,需要制定规则保证数据传输的准确。同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI、I2C。而异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按这个规则传输数据,比如UART、1-Wire。
% a. J+ n# v/ R% ~: n3 h/ {3 [
7 E+ l4 y( G) X$ W5 r3 k9 p  N5 @6 c因此,可以通过是否有时钟信号,初步判断是何种数据同步方式。, l2 W* ~2 d5 @$ U1 _: ^3 E7 W- l

) |# D& {6 X* \
. b  [3 X/ l, ?: A; D% K2 R  m
( Q& K. j" M- w  J6 O. J$ [7 @14.4 通信速率
3 P8 |1 C9 @( }对于同步通信,通信速率由时钟信号决定,时钟信号越快,传输速度就越快。5 d% F  N, \& g9 `9 M

5 Y' |# T: _  V* O) ]: ^+ ^. o( t对于异步通信,需要收发双方提前统一通信速率,这也就是我们串口调试时,波特率不对显示乱码的原因。
( u0 p. f$ v) |+ C$ R/ ?
! f; j; o; v  K' j+ P时钟对通信的重要性,这里再举个例子:假设发送端时钟频率为1Mhz,对应时钟周期则为1us, 接收端时钟频率为10Mhz,对应时钟周期则为0.1us。现在发送端发送一个数据0x1,就会产生一个持续时间为1us高电平,接收端接收到这个1us的高电平时,会当作是10个0.1us的高电平,认为收到了10个0x1。这时双方数据就乱套了,因此需要一个统一的时钟标准。
* _- k7 Y  d) ]0 d+ `- y' v# n8 R( J, Z+ H
通常使用比特率来描述通信速率的快慢,与之容易混淆的是波特率。6 |. H0 L$ T# ]! w# F8 ]6 N6 H* w

0 ^3 o. h/ c  G' w比特率(Bitrate):系统在单位时间内传输的比特位(二进制0或1)个数,通常用Rb表示,单位是比特/秒(bit/s),缩写为bps;
2 n) f8 i% o5 v5 k! g* _( a7 t2 E5 g7 Y. h2 N/ F8 r. e
波特率(Baudrate):系统在单位时间内传输的码元个数,通常用RB表示,单位是波特(Bd);
! U# U# z$ Z. m4 B- Q6 v) O5 X- ^( M3 q* E; G+ r$ d. S# K
100bit/s即是一秒钟传输100个0或1,100Bd即是一秒钟传输100个码元。
) I) \- L# Z6 i5 X: F, k9 c: L* v7 G6 v7 d  H+ v( b
码元就是“承载信息量的基本信号单位”,以一条电线上传输的信号为例,码元就是电线上的电平值。
* ?6 _5 Z( X" t; s3 }' X! A( Z% ?* t4 v! {+ g; ^3 Z' K  t, j5 S$ l
如果电线上电平只有0和3.3V两种选择,传输的信号是这2种电平之一,码元的状态只有2种。接收方可以把0V认为是二进制的0,把3.3V认为是二进制1。即:传输1个码元时,能用来表示1位数据。) u% X8 U3 x1 i& f) P% A

0 d8 O$ g- _' u8 D如果电线上电平有0V、3.3V、5V、12V四种选择,传输的信号是这4种电平之一,码元的状态有4种。接收方可以把这4个电平认为是二级制的4个值:00、01、10、11。即:传输1个码元时,能用来表示2位数据。
) P: p! n% Q& x0 L
7 g( b4 `+ C! h因此码元状态为2时,比特率等于波特率,码元状态越多,每次传输的码元能携带的信息越多,自然速率也越高。
! n: s! L% O" U& ?( f0 L; [5 D* d$ d8 s# d$ {& i# e2 a$ m
码元有N个状态时,比特率与波特率的关系式:
9 ^6 ]* C7 s, V5 r% d$ o# M7 m2 [7 Z
4C9DNZ6}82UVCN`%HF_J]80.png
  v; g, ^" Q$ _' @3 B6 ^) C
! ?6 \" V+ \! G9 G2 P* T( z; @
* n7 ]0 }& r+ ^9 b

3 s7 ?, f! ?! I* o/ @, \14.5 常见通信协议

. [6 S8 p0 s2 O8 n8 u在嵌入式中,有众多通信协议,往往从性能、成本、稳定性、易用性等角度考虑选择合适的协议。常见的通信协议如表 14.5.1 所示。3 T4 t9 T& M- i* o4 U  \/ A3 a
EU@JU6OM3G64MAZPNI8~4[Y.png
; w3 ^3 e/ {" ^7 r0 O5 a; q
* {/ [* b' W7 }- b$ v' D
表 14.5.1 常见通信协议列表
4 d2 x2 J' f8 X" y: N) r" q) r; n

- g5 I5 @! @# _# U1 H  k/ H8 m作者:攻城狮子黄
& P) c& T1 t( a* ^* H
* D7 E4 u0 b4 O0 ]% ~' N# K/ ]/ t: p) x: Q0 o- v' w
收藏 评论0 发布时间:2022-8-30 18:56

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版