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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 18:56
14.1 串行/并行通信
( _& n4 O' S6 E" t按照数据传输的方式,通信可以分为串行通信和并行通信。串行通信简单的说就是数据依次传输,比如要传输0x11111111,一位一位的发送,需要发送8次。并行通信则是几个数据一起传输,同样是0x11111111,如果8位一起发送,只需要发送1次,如图 14.1.1 所示。
$ O: W; B9 T4 o/ ~+ Y+ U6 v4 B6 G6 G5 ~
U@`5$_VIVBHL62WIZ9YHEN2.png
* P, z6 G! e. x6 }' M7 n/ x
: m% G( J3 \/ M/ r# d& d
图 14.1.1 串行/并行传输示意图

4 Q1 l' G. {8 \  W" z, K( b
# P8 o) w  _( j% E; N2 Y
- u9 h; b1 f( Y  j+ V& Q/ r由此可见,串行传输占用的通信线更少,成本低,通信速度相对较慢;并行传输占用的通信线多,成本高,通信速度相对更快。但随着对传输速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展出差分传输等技术,极大的提高了串行传输速率,使得串行通信速度可能比并行通信速度更快。3 H. `3 E$ C" W$ a' V6 H: o  j

1 s6 ?- R" J/ T6 F) b$ ^: h串行通信就像单车道,行驶的车辆需要依次行驶。并行通信就像多车道,同时多辆汽车并排行驶。但当车速很快的时候,多车道上并列行驶的汽车之间会形成“气流”相互干扰,单车道则受影响较小,速度能够进一步提升。
9 v( ^2 j4 R1 L
2 B3 S+ ~2 p  U! j9 k) |: Z! G/ V  k0 q# a' B4 _0 V( W4 l7 J
14.2 全双工/半双工/单工传输0 w" t) F9 s9 E4 I5 l6 z
按照数据传输的方向,通信可以分为全双工、半双工和单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但同一时刻只能一方发送信息;单工指只能一方发信息,一方接受信息,通信是单向的。9 e6 h* M+ M8 {

8 t( m) a' V( _: I全双工就像电话通信,双方任意时刻都可以同时收发信息;半双工就像对讲机通信,双向都可得到信息,但是同一时刻只能是一方发射另一方接收,发射和接收不能同时进行;单工就像收音机,只能由广播站发送给收音机,单向不可逆的,如图 14.2.1 所示。; Y0 X% g. F! O

: ~( i# L2 X0 K/ N5 J( N. N) X+ }
K@$B@B27FQGMP3V(6CQ}WME.png

8 b8 A9 o1 _4 d; r6 ^6 x/ P! T0 [
6 k; |! u$ M' u5 h: E% g
图 14.2.1 全双工/半双工/单工示意图

( i+ P9 ?; R' b) C. v; G$ t
1 J- |; N# t5 {# T3 C% s3 s2 E
' g! h  K- P" u1 p14.3 同步/异步通信7 A3 o: U) E  n7 |' J
按数据同步的方式,通信可以分为同步通信和异步通信。数据在双方之间传输时,需要制定规则保证数据传输的准确。同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI、I2C。而异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按这个规则传输数据,比如UART、1-Wire。
$ m4 b3 c% s1 K, t( t8 J: _( b( L  e! R. y3 ~
因此,可以通过是否有时钟信号,初步判断是何种数据同步方式。1 e" D0 C7 h. d

# I5 D2 v4 _/ R# S2 q+ Z
6 Z& v# b2 d8 [! N/ s- S9 i& J6 }: w* _" g
14.4 通信速率0 ~$ A1 j: l3 f2 Q; m5 w2 M6 K
对于同步通信,通信速率由时钟信号决定,时钟信号越快,传输速度就越快。
2 G8 I6 ^$ r$ J8 P# ~
2 J1 d9 j# I2 e  I! w对于异步通信,需要收发双方提前统一通信速率,这也就是我们串口调试时,波特率不对显示乱码的原因。  C$ h: U  C' Q9 `, x) i

* a9 T9 G5 w# n7 X8 d. ~. \- J时钟对通信的重要性,这里再举个例子:假设发送端时钟频率为1Mhz,对应时钟周期则为1us, 接收端时钟频率为10Mhz,对应时钟周期则为0.1us。现在发送端发送一个数据0x1,就会产生一个持续时间为1us高电平,接收端接收到这个1us的高电平时,会当作是10个0.1us的高电平,认为收到了10个0x1。这时双方数据就乱套了,因此需要一个统一的时钟标准。1 K7 `; Q+ x  ^6 b) O  w0 i: m8 ^
, |, Y% h. ^. \/ q- `; w; {
通常使用比特率来描述通信速率的快慢,与之容易混淆的是波特率。' d6 p' U, I* s) o

4 l! o  a. E7 W6 `# k+ v( \& ~比特率(Bitrate):系统在单位时间内传输的比特位(二进制0或1)个数,通常用Rb表示,单位是比特/秒(bit/s),缩写为bps;
, O8 a+ d- c* r4 x0 r+ R, t/ x
5 f; j) f" }5 B3 W波特率(Baudrate):系统在单位时间内传输的码元个数,通常用RB表示,单位是波特(Bd);
* s0 r5 H: n0 E" n: J! l& q, ?8 A7 _5 r9 C( s& @. u/ J5 g! b7 N
100bit/s即是一秒钟传输100个0或1,100Bd即是一秒钟传输100个码元。
' I8 R' S' A7 s5 }* _/ ?7 K& G7 Y6 A4 ^6 B: P$ D; Q
码元就是“承载信息量的基本信号单位”,以一条电线上传输的信号为例,码元就是电线上的电平值。
; @2 U, }: i+ H2 v
# t2 {; }; Y. v% Q6 z如果电线上电平只有0和3.3V两种选择,传输的信号是这2种电平之一,码元的状态只有2种。接收方可以把0V认为是二进制的0,把3.3V认为是二进制1。即:传输1个码元时,能用来表示1位数据。
. y7 U7 b/ ^; v& Y1 J& K) K* M$ A
; F6 `( U6 ~  y$ v2 m' g( _& z如果电线上电平有0V、3.3V、5V、12V四种选择,传输的信号是这4种电平之一,码元的状态有4种。接收方可以把这4个电平认为是二级制的4个值:00、01、10、11。即:传输1个码元时,能用来表示2位数据。
: E# [+ x  {' w( @3 m$ D
: V  I) B5 f; A' b因此码元状态为2时,比特率等于波特率,码元状态越多,每次传输的码元能携带的信息越多,自然速率也越高。
; A4 R+ l. |5 ?. n& U& W+ c7 o6 b8 `' Z+ x/ ~
码元有N个状态时,比特率与波特率的关系式:
* F& C4 ^) c' w' V* _2 T' h6 X5 a! }4 f4 x
4C9DNZ6}82UVCN`%HF_J]80.png
2 }* I) ^( C, e6 x& }* G
, D5 c# {% _$ O! v0 n& I4 @7 E

  v5 M. ]3 B8 O. p  m: s" b' e
1 e) r9 u! X/ M2 L1 K" c. f14.5 常见通信协议

; `# e$ e4 n2 a$ c1 a在嵌入式中,有众多通信协议,往往从性能、成本、稳定性、易用性等角度考虑选择合适的协议。常见的通信协议如表 14.5.1 所示。
9 N; x1 X! V2 n5 X( @& U$ g; }6 Q# g
EU@JU6OM3G64MAZPNI8~4[Y.png

1 i% A( B$ p' S- p9 D, c6 [3 Y5 G1 p. Q2 C5 ]
表 14.5.1 常见通信协议列表

0 T0 X5 ~$ G2 ^+ T+ K7 t0 D) Q5 c& M4 N5 f* r% ~0 Z0 ?
作者:攻城狮子黄
- W5 }( Y1 i6 u, j  _3 c
2 H9 ?5 V3 [) {- M+ h3 q/ w$ p, K# u5 b
( R0 t9 F2 G% ~* ?) |& F
收藏 评论0 发布时间:2022-8-30 18:56

举报

0个回答

所属标签

相似技术帖

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