1. 数据通信的基础概念
1.1 数据通信常见类型
1.1.1 按数据通信方式分类
- 串行通信 数据逐位按顺序依次传输
- 并行通信 数据各位通过多条线同时传输
1.1.2 按数据传输方式分类
- 单工通信 数据只能沿一个方向传输
- 半双工通信 数据可以沿两个方向传输,但需要分时进行
- 全双工通信 数据可以进行双向传输
1.1.3 按数据同步方式分类
- 同步通信 共用同一时钟信号
- 异步通信 没有时钟信号,通过在数据信号中加入起始位或停止位等一些同步信号
1.2 波特率
比特率:每秒钟传送的比特数,单位bit/s
波特率:每秒钟传送的码元数,单位Baud
比特率 = 波特率 * log2 M,M表示每个码元承载的信息量
二进制系统中,波特率数值上等于比特率
1.3 常见的串行通信接口
- UART 异步全双工通信
- 1-wire 异步半双工
- IIC 同步半双工
- SPI 同步全双工
2. 串口(RS-232)
2.1 串口
- 串行通信接口:指按位发送和接收的接口。如RS-232/422/482等
- RS-232接口(DB9)数据线:TXD/RXD,信号地:GND
2.2 RS-232电平与COMS/TTL电平对比
1. RS-232电平 逻辑1:-15V ~ -3V; 逻辑0:+3V ~ +15V
2. COMS电平(3.3V) 逻辑1:3.3V;逻辑0:0V
3. TTL电平(5V) 逻辑1:5V;逻辑0:0V
**结论:COMS/TTL电平不能与RS-232电平直接交换信息**
2.3 设备间的RS-232通信示意图
两个设备之间的TXD和RXD,必须交叉连接,方可正常通信
2.4 STM32串口与电脑USB通信示意图
两个设备之间的TXD和RXD,必须交叉连接,方可正常通信
2.5 RS-232异步通信协议
- 启动位:必须占1个位长,保持逻辑0电平
- 有效数据位:可选5、6、7、8、9个位长,LSB在前,MSB在后
- 校验位:可选占1个位长,也可以没有该位
- 停止位:必须有,可选占0.5、1、1.5、2个位长,保持逻辑1电平
3. STM32的USART
3.1 STM32的USART简介
- Universal synchronous asynchronous receiver transmitter,通用同步异步收发器
- Universal asynchronous receiver transmitter,通用异步收发器USART/UART都可以与外部设备进行全双工异步通信
- USART,我们常用的也是异步通信
3.2 STM32的USART主要特征
- 全双工异步通信
- 单线半双工通信
- 单独的发送器和接收器使能位
- 可配置使用DMA的多缓存器通信
- 多个带标志的中断源
3.3 STM32F1的USART框图
简图,区分不同系列的区别:
3.4 设置USART波特率(F1)
- fck 是给串口的时钟(USART2\3\3\4\5 的时钟源为 PCLK1,USART1 的时钟源为 PCLK2)
- USARTDIV 是一个无符号的定点数,存放在波特率寄存器(USART_BRR)的低 16 位,DIV_Mantissa[11:0]存放的是 USARTDIV 的整数部分,DIV_Fractionp[3:0]存放的是 USARTDIV 的小数部分
3.5 USART寄存器
- 控制寄存器1 (CR1)
- 控制寄存器2 (CR2)
- 控制寄存器3 (CR3)
- 数据寄存器 (DR)
- 状态寄存器 (SR)
3.6 HAL库中断回调机制
3.7 HAL库外设初始化MSP回调机制
3.8 USART/UART异步通信配置步骤
4. IO引脚复用功能
4.1 复用
IO端口的输入或输出是由其它非GPIO外设控制
ps:IO端口的输入或输出是由GPIO外设控制,称为通用
4.2 STM32的IO引脚复用
通过查数据手册定义知道各IO支持什么复用功能,同一时间IO只能用作一种复用功能,否则会发生冲突