一、USART总线
1、总线的概念
总线就是实际存在于物理层(硬件层)并用于设备间通信的桥梁
2、设备间的通信方式
1)串行通信和并行通信
串行通信指的是通信双方收发数据时,通过一根信号线,或一对差分线,按顺序逐位传输数据的通信方式
并行通信指的是通信双方收发数据时,通过多根信号线,同时按顺序逐个发送多位数据的通信方式
2)同步通信和异步通信
同步通信:指的是通信双方使用同一时钟源(通信双方使用的时钟频率一致)
异步通信:指的是通信双方使用不同时钟源(通信双方使用的时钟频率不一致)
频率:单位时间内含有完整周期的电平信号
周期:一个完整波形的时间宽度
3)单工、半双工、全双工
单工通信:指的是通信设备要么只能发送数据,要么只能接收数据
半双工通信:指的是通信设备既可以发送数据,也可以接收数据,但是同一时刻只能接收或者发送数据
全双工通信:指的是通信设备既可以发送数据,也可以接收数据,并且同一时刻既可以发送数据,也可以接收数据
4)总线的分类
三大基础串行总线(串行接口):
1. UART总线的特性:串行、异步、全双工通信总线
2. IIC总线的特性:串行、同步、半双工通信总线
3. SPI总线的特性:串行、同步、全双工通信总线
二、TTL硬件协议
TTL协议是指物理层面,通过不同电压范围明确区分高电平和低电平,避免信号模糊的方式,不论是UART、IIC、IPS,哪个协议,只要是在逐个电压范围内,都是TTL协议
在TTL协议中:
2.0V ~ 5.0V 之间的电压值表示高电平
0.0V ~ 0.8V 之间的电压值表示低电平
0.8V ~ 2.0V 之间的电压值是无效信号
三、UART通信总线
1、相关概念
1. UART总线是一种串行、异步、全双工通信的总线,实际存在于物理层(硬件层)
2. UART总线的硬件连接:具备3根线,分别为TXD(数据发送线)、RXD(数据接收线)、GND(地线)
3. UART总线的应用场景:一般用于设备间的通信(PC和开发板进行通信)
4. UART总线在实际操作时,被称之为串口
2、硬件连接

3、DB25/DB9的公母头插件
DB9插件由DB25插件优化而来,主要的协议核心就是TX、RX 和 GND就是串口协议

4、电平转换
开发板使用的是TTL电平:0~0.8v(代表低电平信号,逻辑上的0),2v~5v(代表为高电平信号,逻辑上的1)
电脑上使用的是USB电平:-2v~-6v(代表低电平信号,逻辑上的0),2v~6v(代表为高电平信号,逻辑上的1)
电平转换芯片CH340:USB电平 <--------> TTL电平
5、UART的工业层协议
UART总线使用的是TTL协议进行数据传输,但是TTL电平容易受到电磁干扰,
导致TTL电平的UART总线的通信距离有限,因此对UART协议进行了优化,增强抗干扰能力和通讯距离
RS232总线和RS485总线就是由UART总线优化而来,所以RS232和RS485协议的协议格式和UART协议一致
RS232总线:
电平范围: -3.0V ~ -15V(逻辑上的1) , 3.0V ~ 15V(逻辑上的0) (负逻辑电平)
使用RS232总线进行数据传输时,需要使用MAX232电平转换芯片
RS232总线和UART总线特性一致,都是串行、异步、全双工通讯
RS232总线的通讯距离在10m左右
RS485总线:
电平范围: 1.5V/2.0V ~ 6.0V
使用RS485总线进行传输数据时,需要使用MAX485电平转换芯片
RS485总线是串行、异步、半双工通信(是一对差分线)
RS485总线的通讯距离在1000m左右
6、差分信号线
差分信号线是一种抗干扰能力极强的信号传输方式,其核心逻辑是通过两根信号线传输"互补信号",接收端通过计算两根信号线的电压差来还原原始信号,从而最大程度的抵消外部干扰。
这种工作机制可以概括为 "一送一补,取差还原"

7、UART通讯协议的协议格式


起始位:当UART总线数据产生下降沿信号时,标志通讯开始
终止位:当UART总线数据产生上升沿信号时,标志通讯结束
起始位恒定为 1 位,终止位可以是 1 位,1.5 位,2 位
数据位:实际需要发送接收的数据位(起始位和终止位之间都是数据位)
奇偶校验位:用于奇偶校验,包含在数据位中,可以使用奇偶校验位也可以不使用奇偶校验位
8、波特率
波特率的解释:单位时间内,可以传输数据的位数
波特率的单位:bps(bit per second)每秒传输多少位的数据
设置波特率的作用:
1、UART总线是异步通信的总线,通信双方没有使用同一时钟源,时钟频率不一致
如果再基于时钟频率控制数据收发的速率,一定会出现数据截断/乱码之类的错误
如想修改电脑中的UART的时钟频率暂时做不到,所以更改通信双方的时钟频率为一致的方法走不通
2、通过使用UART总线通信的双方,确定使用同一个通信速率 ----> 波特率
即使是异步通信,只要确定通信双方的通信速率(波特率)为一样的,就可以实现同步的效果
常见的波特率:4800 9600 115200
总结:
使用UART总线进行数据传输时,通信双方必须要保持协议格式和波特率都是一致的
常用的串口协议格式:8N1协议格式 + 9600/115200
四、配置复用串口模式
1、配置RCC相关外设控制器
2、配置GPIO相关外设控制器
1)GPIO_MODER寄存器

2)GPIO_AFRL/H寄存器
下图可以在stm32u575rit6.pdf产品手册4.3章节查找到复用功能查询表
3、USART/UART相关外设控制器
1)USART特性分析
了解USART有哪些特性
2)USART的布局图
了解串口内部的执行逻辑

3)数据位
4)停止位
5)发送字符需要配置的寄存器

6)接收字符需要配置的寄存器

7)总结
发送数据:
1.设置波特率 - USART_BRR
2.设置数据位长度 - USART_CR1[M]
3.设置奇偶校验位 - USART_CR1[10:9]
4.设置停止位长度 - USART_CR2[13:12]
5.使能发送数据寄存器 - USART_CR1[TE]
6.使能USART全局 - USART_CR1[UE]
7.可以开始发送数据
接收数据:
1.设置波特率 - USART_BRR
2.设置数据位长度 - USART_CR1[M]
3.设置奇偶校验位 - USART_CR1[10:9]
4.设置停止位长度 - USART_CR2[13:12]
5.使能接收数据寄存器 - USART_CR1[RE]
6.使能USART全局 - USART_CR1[UE]
7.可以开始接收数据
4、配置USART相关外设控制器
1)USART_BRR寄存器

当OVER8=0时,也就是使用16倍采样模式时
BRR[15:0] = USARTDIV[15:0]
当OVER8=1时,也就是使用8倍采样模式时
BRR[15:4] = USARTDIV[15:4];
BRR[3:0] = USARTDIV[3:0] >> 1;
2)USART_CR1寄存器


