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

【经验分享】STM32F429IGT6 USART串口通讯原理总总结(STM32F429/F767/H743)

[复制链接]
STMCU小助手 发布时间:2022-5-7 17:43
串口通讯 (Serial Communication) 是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。简单来说物理层规定我们用嘴巴还是用肢体来交流,协议层则规定我们用中文还是英文来交流。# U6 i" @* B9 e1 Y3 g4 o- ~4 \/ S8 O
; G3 I5 [0 F8 t
STM32 芯片具有多个 USART 外设用于串口通讯,即通用同步异步收发器可以灵活地与外部设备进行全双工数据交换。有别于USART,它还有具有 UART 外设,它是在USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。USART 满足外部设备对工业标准 NRZ 异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。USART 支持同步单向通信和半双工单线通/ `4 F. i2 E( c
信;还支持局域互连网络 LIN、智能卡 (SmartCard) 协议与 lrDA(红外线数据协会) SIR ENDEC 规范。5 y  d- [# l0 o

, g! e" ?8 G* ?% \/ qUSART 支持使用 DMA,可实现高速数据通信,有关 DMA 具体应用将在 DMA 章节作具体讲解。8 U. ]! v, ~! t5 S; V1 b8 u$ C; E

( m$ ~% P2 z! C' z5 xUSART 在 STM32 应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一个 USART通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、指出运行出错位置等等。: h/ [6 \6 r/ `$ J* i

* p: |0 D7 P3 T) lSTM32 的 USART 输出的是 TTL 电平信号,若需要 RS-232 标准的信号可使用 MAX3232 芯片进行转换。2 ~  D4 d. Q. M4 B
2 e$ E% n: P) A) }2 C# N* G
物理层:
9 z" x4 H& m6 T9 F4 n/ K5 V! e6 h  z8 e. i+ r) s7 |. W" D! K2 Y
RS-232 标准主要规定了信号的用途、通讯接口以及信号的电平标准。
6 b. y( s: G" ? 943ad856ca9948d8866c6b0c1dba0660.png : l$ d& [+ J$ `8 h7 |6 y

) L. P/ U7 n+ X两个通讯设备的“DB9 接口”之间通过串口信号线建立起连接,串口信号线中使用“RS-232 标准”传输数据信号。由于 RS-232 电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL 校准”的电平信号,才能实现通讯。
8 d. X4 z1 S: h, r$ [( ]0 ^' |8 Z! [7 G$ Z. `0 [! E; `
根据通讯使用的电平标准不同,串口通讯可分为 TTL 标准及 RS-232 标准,见表 TTL 电平标准与RS232 电平标准 。
, Q/ D1 o6 g( t( L% U" O; M' O) x$ m2 I& `+ S
. Q0 v4 _/ W, W3 F6 |9 i
! G: Z9 }' ~+ v+ y1 V
理想状态下,使用 5V 表示二进制逻辑 1,使用 0V 表示逻辑 0;而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V 表示逻辑 1,+15V 表示逻辑 0。6 s6 H) r4 P! H' \0 t: T
+ `# W/ s9 e9 R5 B! V. p# Q- t
@TQN~3@O{S~NQX)J26B~KIH.png
0 I  M3 t+ s8 q7 F
$ U9 d7 o* s9 WDB9 信号线说明:, D7 q; X5 r  x# Z; x* X
: }0 ]5 y1 ^4 q, J
{68Z[~W17Z}0T[CI8Z1`FDS.png
- k8 }# p7 w5 [* G- ~9 ^1 b
; \' M) e6 g6 k. d& l# j% ?9 H- ^. | 3K8RYGHP{}15()LVA[H_7EF.png # B& _7 k  D5 v+ P$ w3 t* ~9 g
/ \/ `0 r  n- A' G5 _$ u
协议层# a9 l( Z. d( i* M  O1 y
0 J& g' P$ N% |9 C1 Q  j) S  f
串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。# Y% h. }. Y% b$ h& ~4 F

) w* G! F' `- t1 L f36aa3f51eca403b9bb8a687eb12f725.png 2 i6 T+ @# V$ g$ Y
1 B3 C) c$ T/ }1 A6 }
波特率
* i  V9 n) b; U6 E9 ^7 g& ]异步通讯中由于没有时钟信号 (如前面讲解的 DB9 接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,图串口数据包的基本组成 中用虚线分开的每一格就是代表一个码元。常见的波特率为 4800、9600、115200 等。
0 k4 Z1 U2 k) r1 w& J8 k$ K7 F* W' q' y$ T8 f
通讯的起始和停止信号) Q4 C" E: L- G. g- s$ [0 ]
% K& p7 S$ O9 O7 s" V
串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 0 的数据位表示,而数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。8 T) s7 r7 W1 Y8 l( b) q

: N1 c9 `; q5 Z$ D% E9 c% e有效数据" ^8 S8 o* H3 u! o# s

2 C6 l9 B/ f  m# Z5 ?+ r- o在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为 5、6、7 或 8 位长。) Q) v, `. `) ^: i* V  P: ?

/ x- g* w8 V; Y8 z2 M) H; X: j  u数据校验
' x" C, P% R/ B4 l, O$ S9 W  a+ b8 O5 q: z
% D) H! _1 z  {! k5 q在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验 (odd)、偶校验(even)、0 校验 (space)、1 校验 (mark) 以及无校验 (noparity)。) v  _, b: o) ~$ L

% G& x( D2 x, \1• 奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位。8 v$ A' O5 M2 h0 J# P5 o" H; A
: S6 O  v2 D9 |2 b) \7 h! @: y
2• 偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。
& k6 |- c5 r  c! L: ^) x1 u# u2 u6 [& D7 ~
3• 0 校验是不管有效数据中的内容是什么,校验位总为“0”,1 校验是校验位总为“1”。' Y) W- n, M. `' A7 p" C# ~- Z
4 q1 n% I- _7 b, n/ d2 D7 ^% ?
4• 在无校验的情况下,数据包中不包含校验位。
( }$ ?1 _$ c* t$ k/ b: _/ T7 i2 d) |0 L; N( v
USART功能框图:
1 A! v+ j- g. p% q' B1 c9 K2 p5 m0 i0 k: I$ n0 h) h
(~0V@I)(CWJC557]MGNM1UY.png   l* F- L  d. f: S7 v& x+ {6 V

4 @$ T7 I) {, i- |) P8 V功能引脚:& ~9 U8 o* A$ X& D
9 e4 E& ?) p, p' {
TX:发送数据输出引脚。
; c3 }9 ~' i. Q6 ZRX:接收数据输入引脚。
% C. g* [. G: Z8 R$ K' m# PSW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。
2 l" }6 L; y3 d+ c, ]  k1 N+ T, c' SnRTS:请求以发送 ,n 表示低电平有效。如果使能 RTS 流控制,当 USART 接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时,nRTS 将被设置为高 电平。该引脚只适用于硬件流控制。
& i- G, O( a/ ~nCTS:清除以发送 (Clear To Send),n 表示低电平有效。如果使能 CTS 流控制,发送器在发送下 一帧数据之前会检测
( n  c2 ?8 _6 M, ^1 Y/ s3 wnCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完 当前数据帧之后停止发送。该引脚只适用于硬件流控制。5 _- J/ v1 L% q! X8 N# e
SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。 USART 引脚在 STM32F429IGT6 芯片具体发布见表
4 R$ d# q2 ?4 m8 c+ _# oSTM32F429IGT6 芯片的 USART 引脚 。! G5 @! Q7 U5 z' N7 H" j* U

0 e; [" _$ c+ J0 z LPR4QM2ILF@KLZRF~V@(EMM.png 0 t" s4 Q; f' m* z4 m, }6 j  [3 v$ W

+ q  Q3 x9 T) J3 ^1 S# ?2 t0 {! ]- L: F$ y7 p, i
赞 收藏 评论0 发布时间:2022-5-7 17:43

举报

0个回答

所属标签

相似技术帖

官网相关资源

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