概述

USART是通用同步异步串口通信的简称,以STM32为例,它不仅支持最基本的通用串口同步、异步通信,还具有LIN总线功能(局域互联网)、IRDA功能(红外通信)、SmartCard功能。

异步串口通信协议
  • 最基本、最常用的方法:全双工、异步通信方式。
  • 异步通信串口通信协议如下:

STM32CubeMX 串口 连接 stm32串口接线_stm32


配置串口通信,至少要设置这几个参数:字长(一次传送的数据长度)、波特率(每秒传输的数据位数)、奇偶校验位、还有停止位。故必须初始化串口结构体。

RS232 DB9 公头 母头 串口引脚定义

STM32CubeMX 串口 连接 stm32串口接线_stm32_02

直通线和交叉线

以STM32开发板的接线图为例,使用的是MAX3232芯片(将RS232电平转化为TTL电平),把STM32的PA10引脚(复用功能为USART1的RX)接到了DB9接口的第2针脚,把PA9引脚(复用功能为USART1的TX)连接到了DB9接口的第3针脚。TX接第3针脚,RX接第2针脚,这种接法跟PC的串口接法一样,如果实现PC跟配套板子通信,就要使用两头都是母的交叉线。如下图所示:

STM32CubeMX 串口 连接 stm32串口接线_串口_03

  • 串口线主要分两种:直通线(平行线)和交叉线,区别如下。

STM32CubeMX 串口 连接 stm32串口接线_stm32_04

  • 串口线接法选择:
    假如PC与板子之间要实现全双工串口通信,必然是PC的TX针脚要连接到板子的RX针脚,而PC的RX针脚则要连接至板子的TX针脚。
    如果有的开发板是TX连接至DB9的第2针脚,而RX连接至第3针脚,这与PC接法是相反的,这样的板子与PC通信就需要使用直通线。
串口工作过程分析

串口外设的架构图如下所示:

STM32CubeMX 串口 连接 stm32串口接线_STM32CubeMX 串口 连接_05


如上图所示,串口外设主要由三个部分组成,分别是波特率控制收发控制数据存储转移

波特率控制
  • 可以通过对时钟的控制改变波特率;
  • 在配置波特率时,我们向波特率寄存器USART_BRR写入参数,修改了串口时钟的分频值USARTDIV。USART_BRR寄存器包括两部分:DIV_Mantissa(整数部分)和DIV_Fraction(小数部分)。
收发控制
  • 围绕着发送器和接收器控制部分,有多个寄存器:CR1、CR2、CR3和SR,即三个控制寄存器和一个状态寄存器。
数据存储转移
  • 收发控制器根据我们的寄存器配置,对数据存储转移部分的移位寄存器进行控制。