1. 数据通信基础概念
1.1 串行/并行通信
1.2 单工/半双工/全双工通信
- 单工通信:数据只能沿一个方向传输
- 半双工通信:数据可以沿两个方向传输,但需要分时进行
- 全双工通信:数据可以同时进行双向传输
1.3 同步/异步通信
- 同步通信:共用同一时钟信号
- 异步通信:没有时钟信号,通过在数据信号中加入起始位和停止位等一些同步信号
1.4 波特率
- 比特率:每秒钟传送的比特数,单位bit/s
- 波特率:每秒钟传送的码元数,单位Baud
- 比特率 = 波特率 * log2 M ,M表示每个码元承载的信息量
- 二进制系统中,波特率数值上等于比特率
1.5 常见的串行通信接口
2. 串口(RS-232)
2.1 串口的定义
串行通信接口:指按位发送和接收的接口。如:RS-232/422/485等
RS-232接口(DB9)
数据:
- TXD(pin 3):串口数据输出
- RXD(pin 2):串口数据输入
握手: - RTS(pin 7):请求发送
- CTS(pin 8):清除发送
- DSR(pin 6):数据发送就绪
- DCD(pin 1):数据载波检测
- DTR(pin 4):数据终端就绪
地线: - GND(pin 5):信号地
其他: - RI(pin 9):振铃指示
2.2 RS-232电平与COMS/TTL电平对比
电平类型 | 逻辑1 | 逻辑0 |
---|---|---|
RS-232电平 | -15V ~ -3V | +3V ~ +15V |
COMS电平 | 3.3V | 0V |
TTL电平 | 5V | 0V |
2.3 设备间RS-232通信
2.4 STM32串口与电脑USB口通信示意图
2.5 RS-232异步通信协议
- 启动位:必须占1个位长,保持逻辑0电平
- 有效数据位:可选5、6、7、8、9个位长,LSB在前,MSB在后
- 校验位:可选占1个位长,也可以没有该位
- 停止位:必须有,可选占0.5、1、1.5、2个位长,保持逻辑1电平
3. STM32的USART
- Universal synchronous asynchronous receiver transmitter,通用同步异步收发器
- Universal asynchronous receiver transmitter,通用异步收发器
- USART/UART都可以与外部设备进行全双工异步通信
- USART,我们常用的也是异步通信
3.1 STM32的USART主要特征
- 全双工异步通信
- 单线半双工通信
- 单独的发送器和接收器使能位
- 可配置使用DMA的多缓冲器通信
- 多个带标志的中断源
3.2 STM32F1/F4/F7的USART框图
STM32F1/F4/F7/H7的USART框图简化版
3.5 设置USART波特率(F1)
波特比率寄存器(BRR)
4. HAL库外设初始化MSP回调机制
5. HAL库中断回调机制
6. USART/UART异步通信配置步骤
HAL库相关函数介绍
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
关键结构体(F1):
typedef struct
{ uint32_t BaudRate; /* 波特率 */
uint32_t WordLength; /* 字长 */
uint32_t StopBits; /* 停止位 */
uint32_t Parity; /* 奇偶校验位 */
uint32_t Mode; /* UART 模式 */
uint32_t HwFlowCtl; /* 硬件流设置 */
uint32_t OverSampling; /* 过采样设置 */
}UART_InitTypeDef
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,uint8_t *pData, uint16_t Size)
作用:以中断的方式接收指定字节的数据
- 形参 1 是 UART_HandleTypeDef 结构体类型指针变量
- 形参 2 是指向接收数据缓冲区
- 形参 3 是要接收的数据大小,以字节为单位
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
作用:以阻塞的方式发送指定字节的数据
- 形参 1 :UART_HandleTypeDef 结构体类型指针变量
- 形参 2:指向要发送的数据地址
- 形参 3:要发送的数据大小,以字节为单位
- 形参 4:设置的超时时间,以ms单位
7. IO引脚复用功能
7.1 复用功能概念
- IO端口的输入或输出是由GPIO外设控制,我们称之为通用
- IO端口的输入或输出是由其它非GPIO外设控制,我们称之为复用
7.2 STM32F1的IO引脚复用
IO复用功能冲突问题:同一时间IO只能用作一种复用功能,否则会发生冲突
7.3 STM32F4/F7/H7的IO引脚复用
复用器特点:
- 每个 IO 引脚都有一个复用器
- 复用器采用 16 路复用功能输入(AF0 到 AF15)
- 复用器一次仅允许一个外设的复用功能 (AF) 连接到 IO 引脚
- 通过GPIOx_AFRL和GPIOx_AFRH寄存器进行配置
评论区