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

【经验分享】STM32的串口(UART)及串口通信原理(内附代码)

[复制链接]
STMCU小助手 发布时间:2022-5-17 22:00
一、通信接口介绍2 G, i0 a: p. i" L
3 K; }4 R8 X( B' i' I3 I; A
    1、处理器与外部设备通信的两种方式:      
1 D! ~8 V! p% \% Z  b' s) X$ {, d. C$ R4 |9 y+ _
        并行通信% @/ U4 h6 P% z, k- s) p, P# l+ @
* W! `( O: I8 l' j2 N8 n% g
    -            传输原理:数据各个位同时传输。
/ `! e6 C8 a  b& U" H
5 f4 i9 z1 c0 R- ]$ l                -优点:速度快
" {+ e) B* z1 \; R) g, T4 `5 a) o, \" F3 x; @
                -缺点:占用引脚资源多
7 i+ f1 R1 A4 Z1 w* C4 e7 O0 P5 P; s& y2 ]) k$ Z
        串行通信
: K: t$ j2 c3 ^# g  z7 X0 A) \+ P" m( G$ A
   -            传输原理:数据按位顺序传输(一位一位传输)。
2 e! I) e2 Y* e/ ?- U9 L$ H' \0 h% q" G) r2 `  \& I
                -优点:占用引脚资源少
* I: r6 S. E5 `0 W, j
% I! Z$ c7 V6 k) \* n                -缺点:速度相对较慢) h9 T* N, y, ^
1 ~5 g  ?$ r  p) i. S2 a3 w. g: A
    2、串行通信三种传送方式:/ X8 z5 h6 L, `! G' i9 T

+ b! [7 Y+ k1 D3 J        单工:% I, ~3 \! G" k) V# @2 O5 o
4 r  C# K0 X% H& a! x; X3 U: Y
               数据传输只支持数据在一个方向上传输# p- K6 G( L+ V1 _7 n
  F! f" X" T5 \  v: ?9 K
        半双工:
/ D( Z1 W* n1 B5 ^8 ], c/ p  c; Y8 ^0 w
               允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;% D- R; y* [# a* i# d; N
/ `2 H; X2 Y; R8 J; d8 n
        全双工:
0 q. u3 f/ Y5 x) s8 f- G7 G0 r9 s8 y& W
               允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
1 f* A4 K5 J  ^" \  C% I/ y) |  S! t/ S6 S# y6 u+ Y
@6@17M2T%0HF${CRM(1@Q3P.png
$ W1 v4 A% D  ?( g2 J# a. j5 T. r9 }0 v+ M
0 w! V* d& k# X% k5 W9 g( R    3、串行通信的通信方式及举例- V7 @$ f/ N9 g3 T) q

1 f& y# v! P2 Y        同步通信:带时钟同步信号传输。         -SPI,IIC通信接口3 X( y$ ~4 O7 V* ^
4 h" r; _( \/ u( u! n* F$ G
        异步通信:不带时钟同步信号。            -UART(通用异步收发器),单总线
7 ]5 Z" v  N9 m8 ]" Z6 U  ^- J1 c
% [) z7 W% `+ ~ {IYE1VNHID04V`~7M]1PB2P.png
" l2 D8 t, r, G* g% E$ b
4 L/ f" m  p) B二、什么是串口:& M! Q; H. P: a" w3 ]9 Y

* h% C( ?  x9 p4 [3 G1 |    串口是我们的大多数微控制单元(MCU)都具有的基本的外部接口,一般串口最基本的功能就是调试,又能做数据通信的接口(数据量要小一些)。
) W. W3 Z" ~; h2 b# ^3 Z2 y) q! P# N" |+ [
    数据从A到B只能通过1根线,数据就像是羊肉块一样被串在线上
2 [$ C7 q# y$ F/ t! U! E9 ]" Z
5 X- ^6 T$ v) w/ Y        UART:通用异步收发器
' z/ f3 ?3 k8 a$ b* C( ]: n8 f1 ^' g. i1 d6 `% Y5 S' E
        USART:通用同步异步收发器
% W; G  m7 L1 v: |* S$ q: @. r4 h1 V
三、串口电平标准及引脚连接方法:
+ e  e0 I7 u3 P! s
$ [8 y% R1 p" }5 C, k( m( E2 v6 Z# j    1、电平标准
3 P& q7 c" @5 u7 d& I6 g& ^- `* w: q. \7 v0 ~: t. T
     TTL是常见的模块的通讯电平标准:串口wifi、串口蓝牙(4针接口:VCC、GND、TXD、RXD)+ Y/ ~# C; I; x( ~3 g: p

. \! f( g, r  G" h( x6 S' W2 Q( E     232一般是数据通讯接口:台式电脑的主机背后的九针接口. |2 k2 Q% B: g
3 X% u  t5 y+ d% v2 G+ a
{5J}[(WI131SYPS8K6PSLK0.png
% W( F! m3 R" o9 z  l# P& ?
9 H3 a" d4 I$ a$ m- T- d+ J! k9 P    2、连接方法7 T/ y6 s9 E# f- c2 ], P
1 k& M( o+ L6 \+ H7 _
        RXD:数据输入引脚。数据接受。% v) A& q7 O4 Q, f# R2 I9 J

2 I" W. [, z# o' q" w% y# f        TXD:数据发送引脚。数据发送。
4 y( K* o3 B, u) r& l1 q
" \# G- h/ q* M  L GD4A`A[72@7O58BQVT`DOV0.png
: w7 F. F- m/ z4 [9 q# B5 [ O]WMUM6W`B2B@OT4]XYF00Y.png 7 t2 V" w) ^5 K  u8 Z6 A" S

3 Z! N3 ~; }3 ?( a7 |! U- ^四、STM32串口通信过程  d9 J7 X  |0 \1 e8 Z7 @

2 W: \, ]% {% i$ Q数据接收过程:
7 |: X. I2 J1 V, }5 F
0 V; M) U( ?0 x& O! S+ O9 N" Z" u 322LHZ3](4T8GYOK@_B_SYV.png 5 A* ~% X& k' n8 w* v. v; u
* W( P, [% B: e# r
数据发送过程:1 V2 L) a8 G0 p1 e5 w: j, W
/ M6 ?) v) x/ o3 V
I]ZS_SM]I}ZH3I7@N~8X4[M.png
9 ]5 ?3 b& W- U* D8 a* p* v, A9 ?4 ]+ Y3 W/ M% y
五、STM32串口异步通信需要定义的参数
6 m4 F( T# U( b/ s3 P
# C2 j% F+ r% |1 i        ①起始位
( Y/ x( k" p; E5 O8 ~' ]0 v% O8 f( n1 P% }: e: A5 e, n
        ②数据位(8位或者9位)   9位是带奇偶校验位3 K: A9 @# D0 ]  X" _

4 E  e: M/ Y# {  m6 D0 L3 a5 g        ③奇偶校验位(第9位)    9 i9 v/ [0 ^( h/ r  c, V# `
" V, [+ G( S( E. g5 S
                奇检验就是保证8位数据位中1的个数为基数个,如果1是基数个则检验位就为0,反之为1;/ v) Y4 y. m9 {6 [: `. E5 Q& p

7 c8 f1 ^4 U+ E2 y/ m* U& ]                偶检验就是保证8位数据位中1的个数为偶数个,如果1是偶数个则检验位就为0,反之为1;+ R! u, H. o  K0 h( B) ]
; w; d  L( R: w# j3 b
        ④停止位(1,15,2位)
; v5 a3 r! ]. Q: `3 Y
! _% K1 D6 ~  L, p0 [) _        ⑤波特率设置
* R; q) l! h: o4 @8 x/ r
* J! ^. S, t  ~$ A  H4 ?6 V 6KRL6DUA5[@T31X[98ROG8I.png
7 y' N' D. ~+ M- l2 q8 z, D
. j/ d% u- a9 j! P! x六、UART配置过程  
4 ~" X5 s" s3 J% c4 n2 N2 b9 r; W! I" ]
  1. //1、串口时钟和GPIO时钟使能
    ! ~5 ?3 J' Y- h- T. U2 F9 ?
  2. / D3 \! T. h' Q* R/ h4 e6 L2 C; B1 w5 [
  3.         ①串口时钟使能: RCC_APBxPeriphClockCmd();
    # z) H8 r! m) h1 N
  4. & Z6 d7 i7 S2 n' [
  5.         ②GPIO时钟使能:RCC_AHB1PeriphClockCmd();' k) f# C4 U' o# p& A% x* r' @

  6. 4 r% l- z! Q1 t' ]- N
  7. //2、设置引脚复用器映射:
    5 \- t* a2 a8 g
  8. 3 p9 Q- O3 \8 ]9 q( R# }
  9.         GPIO_PinAFConfig();
    . H3 e7 L+ H8 u7 m
  10. $ Q# H9 ~* g6 A8 x) u% k8 J
  11. //3、串口参数初始化(GPIO配置)(五大参数)
    6 [4 X9 }2 _* T/ k9 F9 |7 d
  12. 9 c9 w1 L1 V5 F/ N  J
  13.         GPIO_Init();//初始化$ G3 x; A7 [, r% i7 a: i

  14. - N) u( i% `% S- Y: P: _
  15. //4、串口参数初始化(六大参数)$ T! `- N! m  o6 }" I0 l' r0 A

  16. 8 m% H1 u8 x, B# f
  17.         USART_Init(); //初始化串口
    ) g! r  ]2 N% y1 f4 |% x8 R
  18. # V/ ]) a7 j4 y* H
  19. //5.使能串口
    % G) t( i- m3 t  W
  20. % D! G) U: L4 @0 r. p! u
  21.         USART_Cmd();
    ; _- G0 z' S/ c5 L

  22. 8 g2 {0 K& h. U' E3 Z2 u
  23. //6.开启中断(如果需要开启中断才需要这个步骤)5 w% G  I! H2 z( l' H

  24. - D8 u! ^# U, Y' `( S% K. \
  25. //  设置中断进入的条件:接收数据缓冲区有数据的时候就会进入中断
    + t) d" K1 H' f, P$ U$ z
  26. $ k7 M* C7 |, C; v3 c
  27.         USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);
    8 Q( D6 a3 J" L5 F" h- ~4 F

  28. 9 q& A, J/ i# R6 v
  29. //7.配置NVIC中断(四大参数)! r' j; w( Z) q& N; E5 w, C' G

  30. & e5 w. o2 o1 C2 Q- M3 d
  31.         NVIC_Init(&NVIC_InitStructure);9 T, _: A8 }- X6 _

  32. + d8 P8 `4 f1 @' l2 k. H' @% u
  33. //8、编写中断处理函数:USARTx_IRQHandler();
复制代码
  1. //串口数据收发:
    4 A& Z4 N1 _) {; q% A: k) h
  2. ) I' a% u( N  h) }/ }; R
  3.     void USART_SendData();//发送数据到串口,DR
    % i5 N. a5 i0 C7 f/ @8 H  n

  4. 7 F; q0 N" _6 |
  5.     uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
    1 L6 Y' P" o5 w& @; @4 z8 ?) X) I

  6. - c1 k# q% T1 y; \7 J% m
  7. //串口传输状态获取:
    - P8 s- Y3 e( ^- ]
  8. 0 Z2 S9 c, p4 \& n2 ]
  9.     FlagStatusUSART_GetFlagStatus();( `9 s( _  Z! t, I7 ^* W
  10. $ Z6 S5 C7 T- }; [
  11.     void USART_ClearITPendingBit();  y7 A4 x( v) |8 j: Z: s4 v
  12. & V, F8 p' b6 q/ a9 i
复制代码
5 G% u2 C& l/ s$ i! ?
) K- Y6 I& Q1 O) i, ?. @+ C- A
赞 收藏 评论0 发布时间:2022-5-17 22:00

举报

0个回答

所属标签

相似技术帖

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