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传输速度
发送速度可以选择不同的波特率:
4800bps、9600bps、115200bps、128000bps、230400bps
备注:bps表示每秒钟发送多少位数据
下面来计算一下不同波特率传输速度:
9600bps / 10Bit = 960 Byte/s
(960Byte/s)/ 1024 = 0.9375KB/s
在linux驱动学习当中,有时需要通过串口USART通讯发送自己编写的驱动文件到开发板上(并不是唯一方法),所以转换一下传输速度单位,仅供参考。
4800bps | 9600bps | 115200bps |
---|---|---|
0.46875KB/s | 0.9375KB/s | 11.25KB/s |
4、USART收发
通讯重要的一共有四根线:TX、RX、nRTS、nCTS
TX,发送数据线 (DB-9 的引脚3)
RX,接收数据线 (DB-9 的引脚2)
nRTS和nCTS硬件数据控制流,其实也没多大用处,只要双方约定好相同的波特率、校验位、数据位、停止位即可通讯。不过RS232接口标准需要这两根线
USART通讯要求对接交换**(跟上面图表示的一样)**,换句话说发送端TX接收端RX,接收端RX端接TX发送端。