STM32串行通信理解

一、通信接口的背景知识

1.处理器与外部设备通信的两种方式

(1)并行通信
-传输原理:数据各个位同时传输
-优点:速度快
-缺点:占用引脚资源多
(2)串行通信
-传输原理:数据按位顺序传输
-优点:速度快占用引脚资源少
-缺点:速度慢

2.串行通信按照数据传送的方式

(a)单工: 数据传输只支持数据在一个方向上传输。
(b)半双工: 允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。
(c)全双工: 允许数据同时在两个方向上的传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
STM32串行通信理解

3.串行通信的通信方式

  1. 同步通信:带时钟同步信号传输。
    –SPI,IIC通信接口
  2. 异步通信:不带时钟同步信号。
    –UART(通用异步收发器),单总线

(1) 同步通信:
在时钟的上升沿到来时发送一位数据,速度取决于时钟的频率。
(2) 异步通信:
-UART:双方会约定传输数据的速率,如波特率;
-单总线:没有约定波特率,但是会约定信号对应的持续时间,比如,1代表一个信号持续1/3的高电平,2/3的低电平;0代表一个信号持续1/3的低电平,2/3的高电平;
常见的串行通信接口:
STM32串行通信理解

二、STM32串口通信基础

1.STM32的串口通信接口

  • UART:通用异步收发器 USART:通用同步异步收发器
  • STM32F4XX目前最多支持8个UART,STM32F407一般是6个,具体请查看数据手册。

2.UART异步通信方式引脚连接方法

-RXD(具体对应管脚看数据手册):数据输入引脚。数据接收。
-TXD(同上):数据发送引脚。数据发送。
STM32串行通信理解

3.UART异步通信方式特点

● 全双工异步通信
● 小数波特率发生器系统,提供精确的波特率;
● 可配置为 16 倍过采样或 8倍过采样,因而为速度容差与时钟容差的灵活配置提供了可能。(提高容错率)
● 等等(请查看STM32F4XX中文参考手册,这里只列出重要的)

4.STM32串口通信过程

STM32串行通信理解

5.STM32异步通信要定义的参数

(1)起始位
(2)数据位(8位或者9位)
(3)奇偶校验位(第9位)
(4)停止位(1,15,2位)
(5)波特率设置
STM32串行通信理解

6.串口通信框图

STM32串行通信理解STM32串行通信理解

ps:对框图内f(PCLKx)不理解的可以查阅https://blog.csdn.net/mango_cpu/article/details/109824549
里面有详细的说明;

7.串口设置的步骤

  1. 串口时钟使能,GPIO 时钟使能。
  2. 设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。
  3. GPIO初始化设置:要设置模式为复用功能。
  4. 串口参数初始化:设置波特率,字长,奇偶校验等参数。
  5. 开启中断并且初始化NVIC,使能中断(如果需要开启中断才需要这个步骤)。
  6. 使能串口。
  7. 编写中断处理函数:函数名格式为USARTxIRQHandler(x 对应串口号)。