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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 18:56
14.1 串行/并行通信
' Z  L; T8 l0 e/ L按照数据传输的方式,通信可以分为串行通信和并行通信。串行通信简单的说就是数据依次传输,比如要传输0x11111111,一位一位的发送,需要发送8次。并行通信则是几个数据一起传输,同样是0x11111111,如果8位一起发送,只需要发送1次,如图 14.1.1 所示。5 c; D8 E4 Y% g1 v# r6 V; W" {
% y+ X4 H8 T; o$ V0 c! @1 w/ c4 j
U@`5$_VIVBHL62WIZ9YHEN2.png

4 A- H+ [4 o& X/ ]/ K- y5 m7 q( V0 m
图 14.1.1 串行/并行传输示意图
4 o: Q( p3 a4 K. h

6 b! q: f+ j8 Q7 Z
5 k. O4 r: w  I由此可见,串行传输占用的通信线更少,成本低,通信速度相对较慢;并行传输占用的通信线多,成本高,通信速度相对更快。但随着对传输速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展出差分传输等技术,极大的提高了串行传输速率,使得串行通信速度可能比并行通信速度更快。
9 |) u. ~4 b$ p9 ~
" ^8 k/ ]7 R7 U' w+ i串行通信就像单车道,行驶的车辆需要依次行驶。并行通信就像多车道,同时多辆汽车并排行驶。但当车速很快的时候,多车道上并列行驶的汽车之间会形成“气流”相互干扰,单车道则受影响较小,速度能够进一步提升。
6 K, ~) Z2 S+ X' i; W# v1 j5 @% f

1 T7 Q0 D) x: @+ h4 j14.2 全双工/半双工/单工传输8 d' k* ?5 s8 w; b
按照数据传输的方向,通信可以分为全双工、半双工和单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但同一时刻只能一方发送信息;单工指只能一方发信息,一方接受信息,通信是单向的。
: L. r/ h2 s, \) l7 T$ E; [  _- B& g7 N5 Z, `
全双工就像电话通信,双方任意时刻都可以同时收发信息;半双工就像对讲机通信,双向都可得到信息,但是同一时刻只能是一方发射另一方接收,发射和接收不能同时进行;单工就像收音机,只能由广播站发送给收音机,单向不可逆的,如图 14.2.1 所示。! w# X* d6 A* w1 u' V1 g& j) O0 h6 s

! ^/ o3 u3 q9 k% H9 y7 D
K@$B@B27FQGMP3V(6CQ}WME.png

) i3 n8 P& ~9 U" T2 z6 e
2 n$ q& G$ H6 T0 s9 Q' q& N2 \1 R
图 14.2.1 全双工/半双工/单工示意图

# e  v. x) O) M3 I) |# n) X- Z
* v1 E: \  }& X# V- y- Q
% Y8 I9 y+ `' P14.3 同步/异步通信& K1 c, V* D/ S4 c, v7 W
按数据同步的方式,通信可以分为同步通信和异步通信。数据在双方之间传输时,需要制定规则保证数据传输的准确。同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI、I2C。而异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按这个规则传输数据,比如UART、1-Wire。& H5 X9 @# o- {9 i1 }
  @! j2 ^, j$ b8 P
因此,可以通过是否有时钟信号,初步判断是何种数据同步方式。
: E  g+ M( F  I
& }; M8 Q1 G4 S) ?, B- h! a) S0 h% q# W! @7 U" `/ W0 g& ]* b) \

9 M7 }/ x% v/ c0 a+ E2 \5 Z- Y14.4 通信速率# G7 D6 d# S7 C8 d- B& \* y7 x
对于同步通信,通信速率由时钟信号决定,时钟信号越快,传输速度就越快。) q, D: x0 T5 W' b' ~( K
# m) P( b$ v6 _9 \
对于异步通信,需要收发双方提前统一通信速率,这也就是我们串口调试时,波特率不对显示乱码的原因。
# m/ u+ O( O  J5 v9 m) ?
  s6 Z! s/ I7 F% i" X" \时钟对通信的重要性,这里再举个例子:假设发送端时钟频率为1Mhz,对应时钟周期则为1us, 接收端时钟频率为10Mhz,对应时钟周期则为0.1us。现在发送端发送一个数据0x1,就会产生一个持续时间为1us高电平,接收端接收到这个1us的高电平时,会当作是10个0.1us的高电平,认为收到了10个0x1。这时双方数据就乱套了,因此需要一个统一的时钟标准。0 u! ^* P" f4 u$ J/ i' ^4 p2 \2 e
7 n5 D) m, r+ K- x+ d$ X2 K
通常使用比特率来描述通信速率的快慢,与之容易混淆的是波特率。) T! o  V5 n0 d& \
+ p0 A3 c: U  R1 i  b5 I  T
比特率(Bitrate):系统在单位时间内传输的比特位(二进制0或1)个数,通常用Rb表示,单位是比特/秒(bit/s),缩写为bps;
& L9 o1 c. H4 D& D7 D/ M2 e/ n6 z: J: R" d! J# F
波特率(Baudrate):系统在单位时间内传输的码元个数,通常用RB表示,单位是波特(Bd);, X0 r9 k  g9 ]' e

) L2 @3 a, k2 `% X" y4 ~' M8 j, a100bit/s即是一秒钟传输100个0或1,100Bd即是一秒钟传输100个码元。( p+ H- k$ B6 V( y

" u2 ~% s  M- O% V码元就是“承载信息量的基本信号单位”,以一条电线上传输的信号为例,码元就是电线上的电平值。
- m( ~0 [/ h: {1 O1 Q! r, w, q4 U- u; M& z
如果电线上电平只有0和3.3V两种选择,传输的信号是这2种电平之一,码元的状态只有2种。接收方可以把0V认为是二进制的0,把3.3V认为是二进制1。即:传输1个码元时,能用来表示1位数据。2 c1 u$ R' |4 x/ _9 J: v& L1 q! }
2 U2 `& t6 E" J; Q2 b  M: t/ W" F
如果电线上电平有0V、3.3V、5V、12V四种选择,传输的信号是这4种电平之一,码元的状态有4种。接收方可以把这4个电平认为是二级制的4个值:00、01、10、11。即:传输1个码元时,能用来表示2位数据。+ n* j( U) @: k# k6 Y

" d$ f$ @: s( V因此码元状态为2时,比特率等于波特率,码元状态越多,每次传输的码元能携带的信息越多,自然速率也越高。
5 {/ U2 c& D" K: }, t! h
! X; R* |: B4 u, W) ~# e  x码元有N个状态时,比特率与波特率的关系式:
. p' {" N( ?5 G+ z: ?# |: @* W+ U& l/ U- h- t4 A5 A  y9 ^% \: e  @
4C9DNZ6}82UVCN`%HF_J]80.png

6 Z) C* M1 z' n6 X
/ P/ ]: ?' b3 d0 N$ q3 K8 R( B0 J5 x8 k9 \) k% [

* b* j. {* X% M; M) H7 ^1 j$ [14.5 常见通信协议

9 v" O8 e- [% I# M+ q在嵌入式中,有众多通信协议,往往从性能、成本、稳定性、易用性等角度考虑选择合适的协议。常见的通信协议如表 14.5.1 所示。2 D2 ?* J0 G; ]1 G& Q
EU@JU6OM3G64MAZPNI8~4[Y.png

! @* k8 ^2 z& t& M
3 B; h0 B+ g" N9 Y3 h  [- s' k
表 14.5.1 常见通信协议列表
; r3 W, n' T% u; e# j8 C& ~
3 d' c- C" x; N" h* `- P  a+ ]7 o
作者:攻城狮子黄 ( w/ c+ H& w. {/ l# T: A

: k/ }  D3 v. m% I+ p" ~: e1 P6 d' _- G; I4 h$ |
收藏 评论0 发布时间:2022-8-30 18:56

举报

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