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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 18:56
14.1 串行/并行通信- z6 N# k0 O1 R& Q
按照数据传输的方式,通信可以分为串行通信和并行通信。串行通信简单的说就是数据依次传输,比如要传输0x11111111,一位一位的发送,需要发送8次。并行通信则是几个数据一起传输,同样是0x11111111,如果8位一起发送,只需要发送1次,如图 14.1.1 所示。- U- W1 w! u. u  m, Y

& G8 l+ I) m& w9 D% {; \/ h
U@`5$_VIVBHL62WIZ9YHEN2.png
/ {/ |& |% i) u% z1 w' F0 ~

5 c. X% O$ h1 r; i$ K% @
图 14.1.1 串行/并行传输示意图

4 U! N% P' J7 ]% H  K8 k5 w6 C6 ?; _! D8 E
9 ~1 E0 I. ~4 v+ d
由此可见,串行传输占用的通信线更少,成本低,通信速度相对较慢;并行传输占用的通信线多,成本高,通信速度相对更快。但随着对传输速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展出差分传输等技术,极大的提高了串行传输速率,使得串行通信速度可能比并行通信速度更快。* }. ?5 w- ?' b: s6 W+ T( s

  W; f4 L5 g8 i串行通信就像单车道,行驶的车辆需要依次行驶。并行通信就像多车道,同时多辆汽车并排行驶。但当车速很快的时候,多车道上并列行驶的汽车之间会形成“气流”相互干扰,单车道则受影响较小,速度能够进一步提升。8 }4 V6 x& I  V) ^! k, C5 I

! _, N. Y1 ~/ j. ?+ U" `
7 T5 S0 n- P- d8 G- g6 N# f* _9 ^7 W14.2 全双工/半双工/单工传输, u/ [- c9 Z' t: [& H; ^
按照数据传输的方向,通信可以分为全双工、半双工和单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但同一时刻只能一方发送信息;单工指只能一方发信息,一方接受信息,通信是单向的。4 s# j9 O2 Q5 t/ C5 j$ K8 H8 Y, N

9 q9 s  `, h. j2 r: b全双工就像电话通信,双方任意时刻都可以同时收发信息;半双工就像对讲机通信,双向都可得到信息,但是同一时刻只能是一方发射另一方接收,发射和接收不能同时进行;单工就像收音机,只能由广播站发送给收音机,单向不可逆的,如图 14.2.1 所示。2 S$ P/ Z( F5 f: V5 [

/ c3 [" d& w- P1 p, ]( a- w$ F
K@$B@B27FQGMP3V(6CQ}WME.png
  O) ~2 D( e$ \

1 \3 I4 \9 U! E+ O) u3 U+ o& V
图 14.2.1 全双工/半双工/单工示意图
* G% a% Z, T3 B( W. A6 `

/ p, \* b$ W& Z" |0 F8 _6 U/ N" v% \+ e& L! G
14.3 同步/异步通信
5 O' j4 E7 m4 F. `' B  Z0 A按数据同步的方式,通信可以分为同步通信和异步通信。数据在双方之间传输时,需要制定规则保证数据传输的准确。同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI、I2C。而异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按这个规则传输数据,比如UART、1-Wire。2 t2 j) o+ y) A

8 c2 p% l2 n1 ]# }# f因此,可以通过是否有时钟信号,初步判断是何种数据同步方式。
: Q( v$ k6 u$ X5 K9 s# T  N  I! }8 Q4 i% W
2 K4 s! z. ]/ ~2 P( p" z

( m6 i( A. n+ i9 C. L14.4 通信速率! S* ^4 W4 r% }  f
对于同步通信,通信速率由时钟信号决定,时钟信号越快,传输速度就越快。
& m% f* O5 p' d9 h) U" L! |
, m, k& h. l1 c* Q6 S* |对于异步通信,需要收发双方提前统一通信速率,这也就是我们串口调试时,波特率不对显示乱码的原因。, [4 j& Y8 C* N  T

( Q) p& H& j2 Y' _4 o' ?5 U时钟对通信的重要性,这里再举个例子:假设发送端时钟频率为1Mhz,对应时钟周期则为1us, 接收端时钟频率为10Mhz,对应时钟周期则为0.1us。现在发送端发送一个数据0x1,就会产生一个持续时间为1us高电平,接收端接收到这个1us的高电平时,会当作是10个0.1us的高电平,认为收到了10个0x1。这时双方数据就乱套了,因此需要一个统一的时钟标准。
* A* l: G0 d( a7 N. F
8 O' X9 o/ l+ `$ W通常使用比特率来描述通信速率的快慢,与之容易混淆的是波特率。
  y4 h+ \' B6 V' t0 S7 V
: `5 X1 t: Z  [7 M比特率(Bitrate):系统在单位时间内传输的比特位(二进制0或1)个数,通常用Rb表示,单位是比特/秒(bit/s),缩写为bps;! k  m3 l: `4 |$ O6 f+ c9 G
' z3 p* s7 j: t5 c  v/ ?
波特率(Baudrate):系统在单位时间内传输的码元个数,通常用RB表示,单位是波特(Bd);
8 ?) M7 q+ B" [! [& I$ ~, j
; c6 i" P# m7 V8 W# ?100bit/s即是一秒钟传输100个0或1,100Bd即是一秒钟传输100个码元。& h3 u7 w+ i2 L: T$ ^  w( U# c
, Q: p( A% b6 d" \
码元就是“承载信息量的基本信号单位”,以一条电线上传输的信号为例,码元就是电线上的电平值。
& ?3 `5 @6 r# n- H0 h4 c
7 }1 ^* [3 z6 v8 M; h  T' E如果电线上电平只有0和3.3V两种选择,传输的信号是这2种电平之一,码元的状态只有2种。接收方可以把0V认为是二进制的0,把3.3V认为是二进制1。即:传输1个码元时,能用来表示1位数据。
' f% ?& s* m* X& d& H* k; z& Y* T+ k& o' }& Z
如果电线上电平有0V、3.3V、5V、12V四种选择,传输的信号是这4种电平之一,码元的状态有4种。接收方可以把这4个电平认为是二级制的4个值:00、01、10、11。即:传输1个码元时,能用来表示2位数据。2 w0 Y& x; N- L* k- j- d# H( ?
" F7 ~, E9 ^; z% D$ ^
因此码元状态为2时,比特率等于波特率,码元状态越多,每次传输的码元能携带的信息越多,自然速率也越高。0 h4 G; c. p0 e

- Y. f7 d% h5 @$ t/ j6 a码元有N个状态时,比特率与波特率的关系式:, Z% ~' ]: ]7 _* h/ W9 k
7 K% L5 a, U4 z. z6 @2 g
4C9DNZ6}82UVCN`%HF_J]80.png
6 c# m/ U, H* }4 g+ j
) L4 C- Q- |3 O5 D0 I0 }
) W0 |2 y) o8 ?" g6 B- b

! w9 L8 Q& Y: X! K5 }* ]14.5 常见通信协议
" H0 [3 Y/ [- }/ L4 r- L
在嵌入式中,有众多通信协议,往往从性能、成本、稳定性、易用性等角度考虑选择合适的协议。常见的通信协议如表 14.5.1 所示。
& ]7 i' p6 M1 z
EU@JU6OM3G64MAZPNI8~4[Y.png
: @/ J2 }6 @- h
" S. P  N1 C3 E& d4 x7 z% y& ?; v
表 14.5.1 常见通信协议列表

- I$ A" t% c% W, D# `& X- o& u
5 ^8 y% L9 i& I* Z2 B- |作者:攻城狮子黄
" R) S* [4 `* y1 {% a
5 z! T9 ?% K( _( B. \3 U  i0 T" u1 l! I2 y5 d2 V
赞 收藏 评论0 发布时间:2022-8-30 18:56

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版