STM32 USART通讯 -- 笔记

STM32 USART通讯 – 笔记

STM32F1xx芯片参考手册 : STM32 Reference Manual (RM0008)


1、USART简介

USART(Universal Synchronous/Asynchronous Receiver/Transmitter),它名为通用异步/同步收发器

  • 全双工,可理解为发的数据同时也可以接收数据

它是现在广泛应用的通讯协议之一,现在市面上的通讯模块都要靠USART发送控制指令操控模块,收发数据。模块如:WiFi模块、蓝牙模块、以太网控制器模块、NB-IOT模块等等。

这种通讯也常常应用在产品的程序开发与调试上,当程序运行到某个地方,或者接收到数据通过USART转串口的方式,在电脑上观察单片机接收数据。


2、USART通讯组成

开始位 数据位 奇偶校验位 停止位
1 Bit 5/6/7/8Bit 1Bit 0.5/1/1.5/2Bit
  • 数据位可选择5、6、7、8Bit,因使用模块不同、芯片不同所数据位也有所不同,一般选着会8Bit。某些模块USART通讯要求,也会选着数据位7Bit。

  • 停止位可选择0.5、1、1.5、2Bit,一般都选择1Bit,而0.5Bit停止位支持的场合较少。

  • 奇偶校验位一般不使用,但某些功能模块可能需要

一般保证数据传输效率最大,一般发送一帧数据就是10位

开始位(1Bit )+ 数据位( 8Bit ) + 奇偶校验位( 0Bit ) + 停止位( 1Bit


3、USART传输速度
发送速度可以选择不同的波特率
4800bps9600bps115200bps128000bps230400bps

备注:bps表示每秒钟发送多少位数据

下面来计算一下不同波特率传输速度:

9600bps / 10Bit = 960 Byte/s

(960Byte/s)/ 1024 = ‭0.9375‬KB/s

在linux驱动学习当中,有时需要通过串口USART通讯发送自己编写的驱动文件到开发板上(并不是唯一方法),所以转换一下传输速度单位,仅供参考。

4800bps 9600bps 115200bps
‭0.46875‬KB/s ‭0.9375‬KB/s 11.25KB/s

4、USART收发

通讯重要的一共有四根线:TX、RX、nRTS、nCTS
STM32 USART通讯 -- 笔记

TX,发送数据线 (DB-9 的引脚3)
RX,接收数据线 (DB-9 的引脚2)

nRTSnCTS硬件数据控制流,其实也没多大用处,只要双方约定好相同的波特率、校验位、数据位、停止位即可通讯。不过RS232接口标准需要这两根线

USART通讯要求对接交换**(跟上面图表示的一样)**,换句话说发送端TX接收端RX,接收端RX端接TX发送端。