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

【经验分享】STM32 关于通信

[复制链接]
STMCU小助手 发布时间:2022-4-28 20:59
14.1 串行/并行通信
2 D+ L1 x" _. E$ r- L$ e0 r8 H' b按照数据传输的方式,通信可以分为串行通信和并行通信。串行通信简单的说就是数据依次传输,比如要传输0x11111111,一位一位的发送,需要发送8次。并行通信则是几个数据一起传输,同样是0x11111111,如果8位一起发送,只需要发送1次,如图 14.1.1 所示。
; e  J* R9 m+ Q9 `$ i  w! e- d1 P. K5 e* D; h0 L5 W; z0 V6 d! s# n
M3RLOT6B6UCHNEF{7HF(J]Q.png
# _3 [. Z6 v  @8 w7 r- k6 {+ I: t1 ]6 \$ p" h
图 14.1.1 串行/并行传输示意图. q: D/ B, E1 _
8 d- A, O% |  D2 o" N: r
: I5 ]: n5 S% y: L% j0 W
由此可见,串行传输占用的通信线更少,成本低,通信速度相对较慢;并行传输占用的通信线多,成本高,通信速度相对更快。但随着对传输速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展出差分传输等技术,极大的提高了串行传输速率,使得串行通信速度可能比并行通信速度更快。
" g# m3 y* k0 E: v
3 f1 p" C* D/ Z7 {2 h  q: o串行通信就像单车道,行驶的车辆需要依次行驶。并行通信就像多车道,同时多辆汽车并排行驶。但当车速很快的时候,多车道上并列行驶的汽车之间会形成“气流”相互干扰,单车道则受影响较小,速度能够进一步提升。
$ F9 D" A% E1 v  o6 ~2 K$ ^. r* @3 U. i/ t( ^, Y
14.2 全双工/半双工/单工传输
; `0 W% ]- r5 h/ [& y( Y2 e按照数据传输的方向,通信可以分为全双工、半双工和单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但同一时刻只能一方发送信息;单工指只能一方发信息,一方接受信息,通信是单向的。
" \! U! n& `0 l0 x7 `* U4 e
# t# h0 u; a+ S3 S0 `全双工就像电话通信,双方任意时刻都可以同时收发信息;半双工就像对讲机通信,双向都可得到信息,但是同一时刻只能是一方发射另一方接收,发射和接收不能同时进行;单工就像收音机,只能由广播站发送给收音机,单向不可逆的,如图 14.2.1 所示。
. Q: o/ v. }& ~: S
0 c/ o4 Q; e0 u& Q% X6 C2 Q# W8 [+ d, U- a( r9 n1 i
G6R}MLIKU$W(%1ZL3ENOI7O.png
# y2 T7 N% x3 ~/ j' G# Q1 f# ^( A- i. n2 U/ B5 h
图 14.2.1 全双工/半双工/单工示意图; Q; ~# F: |. \! W3 `4 v: U
& ?0 [. ~' A" B6 G8 D
" t7 J5 _& j2 j( n9 A$ w6 J
14.3 同步/异步通信$ g$ l1 c, w9 A
按数据同步的方式,通信可以分为同步通信和异步通信。数据在双方之间传输时,需要制定规则保证数据传输的准确。同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI、I2C。而异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按这个规则传输数据,比如UART、1-Wire。
/ n6 X9 d3 M% c7 E! e) O$ ?2 z( T% S, c! O: y6 n5 h
因此,可以通过是否有时钟信号,初步判断是何种数据同步方式。1 @: c7 f" v0 A

7 v& X- B% b- E# f* T9 I! b, ^
3 s8 A- H0 E( p" B" b4 T$ |14.4 通信速率
7 U% O% r( K& D, O对于同步通信,通信速率由时钟信号决定,时钟信号越快,传输速度就越快。. b5 E6 M/ t) a& a- R6 k: x
4 F5 J6 A+ j; X" e  G
对于异步通信,需要收发双方提前统一通信速率,这也就是我们串口调试时,波特率不对显示乱码的原因。
! ^' J+ I! B& c0 T+ s, D8 U6 Q- ?; d6 x! I
时钟对通信的重要性,这里再举个例子:假设发送端时钟频率为1Mhz,对应时钟周期则为1us, 接收端时钟频率为10Mhz,对应时钟周期则为0.1us。现在发送端发送一个数据0x1,就会产生一个持续时间为1us高电平,接收端接收到这个1us的高电平时,会当作是10个0.1us的高电平,认为收到了10个0x1。这时双方数据就乱套了,因此需要一个统一的时钟标准。
% }/ E" f, h/ S: k
! H4 i- z" [; g( o) M. q通常使用比特率来描述通信速率的快慢,与之容易混淆的是波特率。. J0 W4 L% d# C/ I1 ~3 s% z

4 l  z, b/ e4 Z# l  o$ ^7 \比特率(Bitrate):系统在单位时间内传输的比特位(二进制0或1)个数,通常用Rb表示,单位是比特/秒(bit/s),缩写为bps;9 f6 y; B. Y1 e
3 r6 {, `1 b" {% `% _/ d
波特率(Baudrate):系统在单位时间内传输的码元个数,通常用RB表示,单位是波特(Bd);5 K/ e; s) f3 j5 N4 j3 {: `

  H3 H8 S* O0 H0 F5 i! s100bit/s即是一秒钟传输100个0或1,100Bd即是一秒钟传输100个码元。
  n  ~$ `" j2 x! U) |) H8 M8 O! N3 Z2 n  a6 T0 @
码元就是“承载信息量的基本信号单位”,以一条电线上传输的信号为例,码元就是电线上的电平值。
- X" H( ~8 M$ \3 K" Y6 [, h1 ]9 u* M, |
如果电线上电平只有0和3.3V两种选择,传输的信号是这2种电平之一,码元的状态只有2种。接收方可以把0V认为是二进制的0,把3.3V认为是二进制1。即:传输1个码元时,能用来表示1位数据。& V$ j* v' e2 r" U

+ C' Q+ n/ I8 c如果电线上电平有0V、3.3V、5V、12V四种选择,传输的信号是这4种电平之一,码元的状态有4种。接收方可以把这4个电平认为是二级制的4个值:00、01、10、11。即:传输1个码元时,能用来表示2位数据。
/ x3 K1 W/ e1 i2 g/ R. o) Y, H0 c' D! H2 i) G6 j3 z! J' v# t
因此码元状态为2时,比特率等于波特率,码元状态越多,每次传输的码元能携带的信息越多,自然速率也越高。- G7 P2 s: v; j" t& C) }

) v+ {9 k9 a1 D2 U( a, w码元有N个状态时,比特率与波特率的关系式:
' o" D4 H8 M) e6 Z9 F- z7 g& [4 o9 J2 ^! [; ?
AR8%E%$]8HJ}~B7FGT{4Z%E.png
' C' v' k" s" t# V% F8 O2 n$ \2 _& m! h" m" ~( b
) Q- o4 y7 X% x" K: G" \' g
14.5 常见通信协议

& ]- ]; {# Z) Y' R7 o/ u" N4 [( L在嵌入式中,有众多通信协议,往往从性能、成本、稳定性、易用性等角度考虑选择合适的协议。常见的通信协议如表 14.5.1 所示。
9 @4 Y3 E+ w5 z* Y: V+ @+ v* f0 ~/ M% J  g3 w& g
0CHFMZ8_((3GA]BV$ME%A.png
- v  v$ b, a2 f- ~: W+ e* A: B7 f8 X9 {5 x
表 14.5.1 常见通信协议列表 # ?6 a& [0 C1 `& A1 v9 W* R

! H% }5 L6 X  l
9 S5 X1 ]( E/ o& Y8 n/ m2 R
赞 收藏 评论0 发布时间:2022-4-28 20:59

举报

0个回答

所属标签

相似技术帖

官网相关资源

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