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

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

[复制链接]
STMCU小助手 发布时间:2022-8-30 18:56
14.1 串行/并行通信
" w" |0 t/ e; z0 w$ O- B8 |按照数据传输的方式,通信可以分为串行通信和并行通信。串行通信简单的说就是数据依次传输,比如要传输0x11111111,一位一位的发送,需要发送8次。并行通信则是几个数据一起传输,同样是0x11111111,如果8位一起发送,只需要发送1次,如图 14.1.1 所示。- y3 @1 N# q2 j4 N& y. v# ~7 N  C
4 _/ S3 K3 h) A9 `/ }+ g' E
U@`5$_VIVBHL62WIZ9YHEN2.png
. C8 z; ~( B$ N$ N! s
: L2 ~' t/ K8 g- [
图 14.1.1 串行/并行传输示意图

, @5 G4 v% H+ ]) c1 y4 R+ p' W' T6 I! \1 ~. I  e/ R7 Y
! J" @3 t* J4 v
由此可见,串行传输占用的通信线更少,成本低,通信速度相对较慢;并行传输占用的通信线多,成本高,通信速度相对更快。但随着对传输速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展出差分传输等技术,极大的提高了串行传输速率,使得串行通信速度可能比并行通信速度更快。
5 i; @, s1 N7 T" q# ~9 A% L" i+ @* B4 T; M- m8 i
串行通信就像单车道,行驶的车辆需要依次行驶。并行通信就像多车道,同时多辆汽车并排行驶。但当车速很快的时候,多车道上并列行驶的汽车之间会形成“气流”相互干扰,单车道则受影响较小,速度能够进一步提升。
, M0 ^* m  U5 g* g! K2 K1 I" v# q5 f0 H) w) T. t
2 o5 [5 ]2 J" D8 L# Y$ }( \
14.2 全双工/半双工/单工传输0 F  `9 a* r9 H# W% A( t- I
按照数据传输的方向,通信可以分为全双工、半双工和单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但同一时刻只能一方发送信息;单工指只能一方发信息,一方接受信息,通信是单向的。1 E$ b& X$ j6 Q- T5 V0 o$ `
" [, }$ k" D. i# V
全双工就像电话通信,双方任意时刻都可以同时收发信息;半双工就像对讲机通信,双向都可得到信息,但是同一时刻只能是一方发射另一方接收,发射和接收不能同时进行;单工就像收音机,只能由广播站发送给收音机,单向不可逆的,如图 14.2.1 所示。2 f1 D) \, P" E0 A  K" q) e3 K( ?# m

3 j+ R; U5 q4 q+ z* ]% |3 y
K@$B@B27FQGMP3V(6CQ}WME.png
; s( u# k% J  v" ~) H* D
. k$ N% G/ J# ~0 _9 S
图 14.2.1 全双工/半双工/单工示意图
5 O8 R. U7 @7 C8 I" G3 N/ C
; j+ Y7 M' [0 S  m- v5 I9 E

, b; K( D( s5 b' s! Y14.3 同步/异步通信" V/ |( @! b4 ]. a
按数据同步的方式,通信可以分为同步通信和异步通信。数据在双方之间传输时,需要制定规则保证数据传输的准确。同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI、I2C。而异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按这个规则传输数据,比如UART、1-Wire。% ~7 P8 ^/ T, w8 ^3 G; g( X. y2 C

2 j9 F' V5 o: z* R1 G1 |* I因此,可以通过是否有时钟信号,初步判断是何种数据同步方式。
- d5 s' [5 O; h8 F0 V$ R  e' o" G$ K/ e% w( z6 R

% k$ \: e2 A# Q7 q: K; g! e. `& d6 G$ Z0 y" a& T
14.4 通信速率
1 O( F6 g+ ~% ^( R$ _$ H' b6 S$ Y! G对于同步通信,通信速率由时钟信号决定,时钟信号越快,传输速度就越快。
( f. }  `: ?4 N. W# ?* c1 i4 s/ K' V. J7 R5 k
对于异步通信,需要收发双方提前统一通信速率,这也就是我们串口调试时,波特率不对显示乱码的原因。- {" K5 q% }1 \' ]/ h

" L7 {. T- ]# c3 z时钟对通信的重要性,这里再举个例子:假设发送端时钟频率为1Mhz,对应时钟周期则为1us, 接收端时钟频率为10Mhz,对应时钟周期则为0.1us。现在发送端发送一个数据0x1,就会产生一个持续时间为1us高电平,接收端接收到这个1us的高电平时,会当作是10个0.1us的高电平,认为收到了10个0x1。这时双方数据就乱套了,因此需要一个统一的时钟标准。! ^' }: F  m+ c6 j8 V/ v9 P' H

; L1 v% B) u; H+ t( g; k$ Q通常使用比特率来描述通信速率的快慢,与之容易混淆的是波特率。
, N6 P4 ]& G8 T" b) ]* Z' y" u) @9 l9 b' F7 G# [5 z5 E
比特率(Bitrate):系统在单位时间内传输的比特位(二进制0或1)个数,通常用Rb表示,单位是比特/秒(bit/s),缩写为bps;) G6 _0 Z. {/ s9 ]
# P7 P% Y0 Y, O2 x4 @
波特率(Baudrate):系统在单位时间内传输的码元个数,通常用RB表示,单位是波特(Bd);1 ?' F4 L/ q- R. j7 W. y/ I
: ?& q7 X$ i0 ~
100bit/s即是一秒钟传输100个0或1,100Bd即是一秒钟传输100个码元。; k7 L" z3 r( |' H1 n  a( m& ^$ v: T

( p2 Y# X8 y3 t: W码元就是“承载信息量的基本信号单位”,以一条电线上传输的信号为例,码元就是电线上的电平值。
0 C! q0 q0 A- C' M" Y" l
( r% U' A" D, ^1 Q如果电线上电平只有0和3.3V两种选择,传输的信号是这2种电平之一,码元的状态只有2种。接收方可以把0V认为是二进制的0,把3.3V认为是二进制1。即:传输1个码元时,能用来表示1位数据。  o9 ?' T2 Q- `0 E; D/ d
' h  c- j3 g5 G7 {$ y% N" ]
如果电线上电平有0V、3.3V、5V、12V四种选择,传输的信号是这4种电平之一,码元的状态有4种。接收方可以把这4个电平认为是二级制的4个值:00、01、10、11。即:传输1个码元时,能用来表示2位数据。
# F' Y' S; ?7 r. U
$ F/ |5 W: ?: j! f因此码元状态为2时,比特率等于波特率,码元状态越多,每次传输的码元能携带的信息越多,自然速率也越高。5 o' r* @- m  f" x8 E- B. P
( \; L' }  @0 P& e; `0 n
码元有N个状态时,比特率与波特率的关系式:! l. T' f$ [% l/ V- b
7 t4 T+ M) P& U+ x1 a# _7 ]
4C9DNZ6}82UVCN`%HF_J]80.png

" L5 @# e6 ~: m6 O
3 a+ k, n) n  M+ W- N# Z6 _2 q# y. \0 ]

; p4 a2 {+ {; y8 U( @, |14.5 常见通信协议

" v- ?8 H9 k! ^  c/ a8 g; x在嵌入式中,有众多通信协议,往往从性能、成本、稳定性、易用性等角度考虑选择合适的协议。常见的通信协议如表 14.5.1 所示。2 a3 {' Y; a  v0 F( m. {: ^
EU@JU6OM3G64MAZPNI8~4[Y.png
8 q( w" Z, A$ A3 o2 s3 R- ^% N" |+ q& x

  e/ M) ]+ i0 a* n/ m
表 14.5.1 常见通信协议列表
  m) }- |) ?% R, i7 `5 ~
8 p5 U9 ^0 M6 w( B
作者:攻城狮子黄
" M* }& H; X- S; _; ?- Z. C
! Z" a$ u& k  t0 ^6 [3 y8 F4 w& M' N! S3 j0 W  Y
收藏 评论0 发布时间:2022-8-30 18:56

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版