STM32串口通信基本原理

💡 原文中文,约3700字,阅读约需9分钟。
📝

内容提要

在设备之间进行通信时,通常采用并行通信和串行通信两种方式。串行通信分为单工、半双工和全双工。通信方式分为同步通信和异步通信。串行通信接口有UART和USART。连接两个芯片时,需要交叉连接TXD和RXD。连接芯片与PC机时,需要通过电平转换电路实现连接。串口通信需要定义起始位、数据位、奇偶校验位、停止位和波特率。UART的发送和接收需要波特率发生器控制。

🔎

延伸解读

同步与异步通信的取舍

同步通信带时钟信号,传输内容几乎全是有效数据,效率高,但双方时钟误差必须很小,否则数据易错乱。异步通信不带时钟,靠数据帧中的起始位、停止位等标识符同步,有效数据占比低,但允许的时钟误差较大。选择时需权衡效率与时钟精度要求。

芯片间与芯片到PC连接的关键差异

两个芯片直接连接时,只需共地并交叉连接TXD和RXD,即可进行TTL电平通信。但芯片与PC的RS232接口连接时,因电平标准不同(TTL:+5V为1,0V为0;RS232:+15/+13V为0,-15/-13V为1),必须通过电平转换电路(如Max232芯片)转换后再交叉连接,否则无法正常通信。

串口数据帧的组成与校验

异步串口通信以帧为单位传输,常用帧结构为1位起始位+8位数据位+1位奇偶校验位(可选)+1位停止位。奇偶校验位用于简单误码校验:奇校验要求数据位和校验位中1的个数为奇数,偶校验要求为偶数。此外还可选择0校验、1校验或无校验。

UART内部波特率的控制机制

异步通信虽无外部时钟同步信号,但UART内部仍有时钟控制。接收移位寄存器和发送移位寄存器分别由接收器时钟和发送器时钟驱动,而这两个时钟共用一个波特率发生器。波特率发生器根据配置产生精确时钟,确保收发双方速率一致,从而实现可靠通信。

❓

Q&A

串行通信有哪些分类?

串行通信按数据传送方向分为单工、半双工和全双工,按通信方式分为同步通信和异步通信。

STM32的串口通信接口有哪些?

STM32的串口通信接口有UART(通用异步收发器)和USART(通用同步异步收发器)。

如何连接两个芯片进行串口通信?

连接两个芯片时,需要将GND共地,并交叉连接TXD和RXD,即芯片1的RXD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。

串口通信中波特率的作用是什么?

波特率用于定义数据传输的速率,确保发送和接收设备之间的数据同步。

RS232接口与单片机的电平标准有什么不同?

单片机的电平标准是TTL电平(+5V表示1,0V表示0),而RS232的电平标准是+15/+13V表示0,-15/-13V表示1。

UART的发送和接收是如何控制的?

UART的发送和接收需要波特率发生器控制,接收器和发送器共用一个波特率发生器。

🏷️

标签

➡️

继续阅读