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

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

[复制链接]
STMCU小助手 发布时间:2022-5-7 17:43
串口通讯 (Serial Communication) 是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。简单来说物理层规定我们用嘴巴还是用肢体来交流,协议层则规定我们用中文还是英文来交流。
. i9 ?8 x/ O# V, j: b. c+ W; I  F+ B& \& s8 M7 F
STM32 芯片具有多个 USART 外设用于串口通讯,即通用同步异步收发器可以灵活地与外部设备进行全双工数据交换。有别于USART,它还有具有 UART 外设,它是在USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。USART 满足外部设备对工业标准 NRZ 异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。USART 支持同步单向通信和半双工单线通: Y5 z/ z+ }1 F! P2 H+ ~8 ~
信;还支持局域互连网络 LIN、智能卡 (SmartCard) 协议与 lrDA(红外线数据协会) SIR ENDEC 规范。
* j5 r3 K: k4 W5 e& H
* B. w2 L: A5 s3 yUSART 支持使用 DMA,可实现高速数据通信,有关 DMA 具体应用将在 DMA 章节作具体讲解。. |5 u: `( i  j
" j' z; d0 c: c6 p3 n3 |
USART 在 STM32 应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一个 USART通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、指出运行出错位置等等。. f4 G3 `2 x/ I; W1 [

( z- O4 p+ v( ^  cSTM32 的 USART 输出的是 TTL 电平信号,若需要 RS-232 标准的信号可使用 MAX3232 芯片进行转换。
% s% i$ p' O$ D, |9 b" n+ j# Z; d- b* y# D
物理层:5 l' m& n! l% G# M/ R4 A& r' m

6 w9 }  @& ?8 B! U# q4 PRS-232 标准主要规定了信号的用途、通讯接口以及信号的电平标准。# U, Y7 z8 F" m) Z" a2 ~) @
943ad856ca9948d8866c6b0c1dba0660.png 6 S$ E- z5 ^  Z) ?) l; Y

8 ~9 c' u: F, H两个通讯设备的“DB9 接口”之间通过串口信号线建立起连接,串口信号线中使用“RS-232 标准”传输数据信号。由于 RS-232 电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL 校准”的电平信号,才能实现通讯。
' |  L( i  s) W; J! d% j, D+ b" F0 C+ C! h9 m9 t5 [
根据通讯使用的电平标准不同,串口通讯可分为 TTL 标准及 RS-232 标准,见表 TTL 电平标准与RS232 电平标准 。
, i  G9 u  y) I) t2 g3 X6 j
- b  ]8 r6 e0 H8 `( o" X 1 s4 {8 N3 ~5 y3 c; U0 `

7 x- l! S9 _! i9 @/ N理想状态下,使用 5V 表示二进制逻辑 1,使用 0V 表示逻辑 0;而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V 表示逻辑 1,+15V 表示逻辑 0。9 s/ X7 y/ S6 U2 z: z
0 \: j/ s1 m1 n- r; G& P  O
@TQN~3@O{S~NQX)J26B~KIH.png
* p% \- G0 E' t: U# ^! C; j' k. L' r0 G
DB9 信号线说明:
4 V, Q" p5 ?% y2 X
1 x! T4 t2 v5 X7 z {68Z[~W17Z}0T[CI8Z1`FDS.png
% p$ }  ~, t4 {0 r7 g- A# C. _* Z8 C$ h2 Q
3K8RYGHP{}15()LVA[H_7EF.png
  X; \4 r8 B4 v  t
3 M9 V7 |" f. r$ N( L0 K+ d2 n协议层3 Q. `8 D  n" x& A' e" U
9 M: M5 `) D6 p/ G7 L7 y& s# T; W
串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。
; Z; k3 ~5 c; @  k0 l' R+ E* x( O6 N: s- @3 `" a" [5 ~
f36aa3f51eca403b9bb8a687eb12f725.png
' N2 ^9 z& J6 _5 t/ Z8 u
2 f+ I7 Q5 z+ j- v6 ^  d$ O* O6 O波特率
! Y/ h. [2 ]6 B0 t% m& f异步通讯中由于没有时钟信号 (如前面讲解的 DB9 接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,图串口数据包的基本组成 中用虚线分开的每一格就是代表一个码元。常见的波特率为 4800、9600、115200 等。" o+ E5 I6 \( U+ L5 }8 I* ?( O

! P( T! \! q! {) A通讯的起始和停止信号
' l# D# S7 e: Q5 I; d* S2 h
' r8 \+ ~5 ~9 L1 s串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 0 的数据位表示,而数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。
+ L! e& R& u  E8 |2 R/ [5 L1 E, a0 o1 A9 Q/ q$ c
有效数据
  G& I" ^6 i4 L7 ]9 k1 }( O- J* a
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为 5、6、7 或 8 位长。
) }9 D. ]0 {8 l! x1 B$ N
& X  h+ K' ?! V( L) ?6 ^数据校验
( Q2 `: x$ Z- C9 V! y( r# i) G6 w- l2 J) |$ B
在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验 (odd)、偶校验(even)、0 校验 (space)、1 校验 (mark) 以及无校验 (noparity)。/ J/ e8 ?5 l# T( R
8 i( Y% p" w+ j5 r
1• 奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位。* v  {: A4 U$ S+ p" E: {2 K7 R; U

- ^# W1 d# X, [* Z2• 偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。' u5 c: z0 A$ W3 e% n; j

1 I: ^' @$ \9 e1 h1 Y$ r3• 0 校验是不管有效数据中的内容是什么,校验位总为“0”,1 校验是校验位总为“1”。/ k4 e) S$ @2 d7 b
4 m) \# w4 C) r4 U
4• 在无校验的情况下,数据包中不包含校验位。" f3 W4 W, y* k- @
! G5 D/ B- S" _; j) L1 B# E8 F. ?
USART功能框图:
! g# ]7 ?( S% `# G' I* q! _4 |8 \( @6 `4 Z
(~0V@I)(CWJC557]MGNM1UY.png " g: B& C7 `3 V5 N1 M, t3 X
1 `! R! @* t. ~5 p- t
功能引脚:
% ?) g6 B' Q( l
2 x0 z- s! a0 G/ S. @/ b- eTX:发送数据输出引脚。
! B4 f+ \0 r1 w- o. E+ W4 O. R+ hRX:接收数据输入引脚。/ e0 `2 W$ W) a7 K9 [, A
SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。
) s% W/ t/ B" C: _& I8 a( X  SnRTS:请求以发送 ,n 表示低电平有效。如果使能 RTS 流控制,当 USART 接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时,nRTS 将被设置为高 电平。该引脚只适用于硬件流控制。
! x0 e" d: |4 [; ~' F: u6 v$ y1 LnCTS:清除以发送 (Clear To Send),n 表示低电平有效。如果使能 CTS 流控制,发送器在发送下 一帧数据之前会检测
. p) X' V/ [4 ]& P) @4 I$ x8 XnCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完 当前数据帧之后停止发送。该引脚只适用于硬件流控制。
( S% l) T! ^" ]# _SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。 USART 引脚在 STM32F429IGT6 芯片具体发布见表
) t5 p5 h, {( G4 F* n+ U! Z# d1 z  tSTM32F429IGT6 芯片的 USART 引脚 。; ~, v  i& m( X& J- ?: v
, w' w+ F' I7 L& \) @
LPR4QM2ILF@KLZRF~V@(EMM.png
5 x! }7 L2 p  v7 D& E. P. @7 j7 ]9 g5 I2 j$ l! B2 v" `
+ A: H9 ^; A( G) }& O# Z. h
收藏 评论0 发布时间:2022-5-7 17:43

举报

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