一、总线概念
总线是存在于物理层(硬件层)并且用于设备间通信的桥梁。
二、通信方式
2.1 串行通信和并行通信
- 串行通信是指通信双方收发数据时,是一位一位的收发数据的,一般使用一根数据线进行通信。
- 并行通信是指通信双方收发数据时,是多位数据进行收发的,一般使用多根数据线进行通信。
![]()
图 1 串行通信图解
![]()
图 2 并行通信图解
2.2 同步通信和异步通信
1)同步通信
通信双方使用同一时钟源(时钟频率一致),也即是通信双方的通信速率一致。
2)异步通信
通信双方使用不同时钟源(时钟频率不一致),也即是通信双方的通信速率不一致。
3)频率和周期
频率:单位时间内传输数据的位数。
周期:传输 1 位数据需要的时间。
2.3 单工 / 半双工 / 全双工通信
1)单工通信
通信设备只能发送或者只能接收数据,例如 麦克风 和 广播。
2)半双工通信
通信设备既可以发送数据,也可以接收数据,但同一时刻只能接收或只能发送,例如 对讲机。
3)全双工通信
通信设备既可以发送数据,也可以接收数据,并且同一时刻既可以发送也可以接收数据,例如 手机。
2.4 总线的分类
三大基础串行总线(串行接口):
- UART 总线:串行、异步、全双工 通信总线。
- IIC 总线:串行、同步、半双工 通信总线。
- SPI 总线:串行、同步、全双工 通信总线。
三、UART 总线概念
3.1 概念
- UART 总线是一种 串行、异步、全双工通信 的总线,存在于 物理层(硬件层);
- UART 总线硬件连接:有 3 根线,分别为 - TXD(数据发送线)、RXD(数据接收线)、GND(地线);
- UART 总线应用场景:设备间的通信(PC 和开发版进行通信),打印调试信息(类似于 linux 下的 printf 在终端打印信息);
- UART 总线在实际使用操作时,称之为 串口。
3.2 UART 总线的作用
- 通过 UART 总线将程序烧录传输到开发板中;
- 可以通过 UART 总线将单片机程序运行中的打印信息传输到 PC 端的串口工具上显示,方便进行调试和查找错误。
四、UART 总线的硬件连接
4.1 本质连接方式
![]()
图 3 UART 本质连接图
PC 与开发板的 UART 总线实际连线如上图所示:
TXD --- RXD
RXD --- TXD
GND --- GND --- 接地
4.2 DB25 / DB9 公母头插件


引脚定义

4.3 ST-Link 连接方式

4.4 电平转换
- 开发板使用的是 TTL 电平:0 ~ 0.8v(低电平,逻辑 0),2 ~ 5v(高电平,逻辑 1);
- PC 使用的是 USB 电平:-2 ~ -6v(低电平,逻辑 0),2 ~ 6v(高电平,逻辑 1);
- 通过 电平转换芯片 CH340 :USB 电平 <---> TTL 电平
![]()
图 8 CH340 电平转换驱动 ![]()
图 9 CH340E 电平转换过程连接图
4.5 UART 总线的工业层协议
UART 总线常使用 TTL 电平信号进行数据传输,TTL 电平易受电磁干扰,导致数据传输距离有限。
如果需要增强抗干扰能力和更长的传输距离,通常会采用 RS-232、RS-485 等电平标准,通过相应的电平转换芯片(如 MAX232、MAX485 等)将 TTL 电平转换为其他电平标准来实现。
RS232 总线和 RS485 总线都是基于 UART 总线优化得来的,所以 RS232 总线和 RS485 总线进行数据传输的协议格式和 UART 总线一致,但是电平信号范围发生变化。
1)RS232 总线、RS485 总线
电平范围:
RS232 总线电平范围:-3 ~ -15v(逻辑 1),3 ~ 15v(逻辑 0),称为 负逻辑电平 。
需要使用 MAX232 电平转换芯片。
RS485 总线电平范围:1.5 / 2 ~ 6v。
需要使用 MAX485 电平转换芯片。
![]()
图 10 RS485 总线的电平转换芯片
特性:
RS232 总线和 UART 总线特性一致:串行、异步、全双工总线;
RS485 总线由于其采用差分信号(AB 线),所以是 半双工总线。
差分信号(AB 线):指一根数据线 B 线上的电信号与另一根数据线 A 线上的电信号作差,最后结果电信号表示为一个电信号。
通信距离:
UART:1m 左右
RS232:10m 左右
RS485:1000m 左右
为什么RS232总线传输数据的距离比UART总线长:
232 电平的范围比 TTL 电平的范围大,可支持的电平波动范围大 ------> 传输距离长
![]()
图 11
为什么RS485总线传输数据的距离比UART总线长:
485 电平采用的是差分电平信号的方式(AB 线,双绞线)
![]()
图 12
五、UART 总线协议格式
5.1 UART 总线协议格式
下图所示为 UART 总线传输的 1 帧数据:
![]()
图 13 UART 总线的 1 帧数据
起始位:当 UART 总线的数据线产生 高电平 -> 低电平(下降沿信号)变化,标志着 1 次 UART 总线通信的开始。
终止位:当 UART 总线的数据线产生 低电平 -> 高电平(上升沿信号)变化,标志着 1 次 UART 总线通信的结束。
起时位始终为 1 位,终止位可以是 1 位、1.5 位、2 位。
====================================================================
起始位和终止位之间是数据位。
数据位:实际接收或者发送的数据,可以是:5 位、6 位、7 位、8 位、9 位。
奇偶校验位(可选择):用于奇偶校验,奇偶校验位属于数据位。
奇校验时,若数据位中 “1” 的个数为奇数则校验位补 0,否则补 1 以让 “1” 的总数为奇数;
偶校验时,若数据位中 “1” 的个数为偶数则校验位补 0,否则补 1 以让 “1” 的总数为偶数,且实际开发一般不用奇偶校验位检错。
![]()
图 14 SecureCRT 9.0 中数据帧的设置
六、波特率
6.1 定义
单位时间内传输数据的位数。
单位:bps(bit per second),每秒传输多少位的数据。
6.2 设置波特率的作用
UART 总线采用异步通信方式,通信双方没有共用同一时钟源,若基于各自时钟频率控制数据收发速率,会因时钟频率不一致导致数据截断或乱码等错误,且实际中难以通过修改双方时钟频率使其一致,因此需要通信双方约定相同的波特率(通信速率),以此实现异步通信下的同步效果,确保数据正确传输。
6.3 常见波特率
4800、9600、115200
6.4 总结
- 使用 UART 总线进行数据传输时,通信双方需要确保 协议格式 和 比特率 一致;
- 常用串口协议格式:8N1 协议格式 + 9600 / 115200.
七、分析电路图
7.1 UART 总线 TXD 和 RXD 对应引脚
第 1 步:查看核心板的 RXD 和 TXD 的 Type-C 接口外设丝印为 J4
![]()
图 15 第 2 步:查看核心板原理图,找到 J4 原理图,找到 USB 1P 和 USB 1N 引脚
![]()
图 16 第 3 步:根据两两对应,找到 CH340E 的原理图,USB 1P、USB 1N -> USB RXD、USB TXD
![]()
图 17 第 4 步:根据 USB RXD 和 USB TXD 编号找到 J6 插件,核心板上 J6 插件跳线帽使 PA9 TXD 和 USB RXD 连接在一起,PA10 RXD 和 USB TXD 连接在一起
![]()
图 18 ![]()
图 19 ![]()
图 20 第 5 步:找到芯片上引脚为 PA9 和 PA10
![]()
图 21
总体连接顺序
![]()
图 22
八、分析芯片手册
8.1 RCC 相关外设控制器
8.2 GPIO 相关外设控制器
1)GPIO_MODER 寄存器
手册 rm0456-stm32u5-series-armbased-32bit-mcus-stmicroelectronics(重要).pdf 的第 628 页。
![]()
图 23 GPIO_MODER 寄存器
将 PA9、PA10 设置为复用功能模式:
- 使用 GPIO_MODER 寄存器
- 使用 [19:18]、[21:20] 位
- 都写入 0b10
2)GPIO_AFRL/R 寄存器
手册 rm0456-stm32u5-series-armbased-32bit-mcus-stmicroelectronics(重要).pdf 的第 633 页。
![]()
图 24 GPIO_AFRL 寄存器 ![]()
图 25 GPIO_AFRH 寄存器 ![]()
图 26 复用功能选择 ![]()
图 27 复用功能查询表
GPIO_AFRL/H 寄存器每 4 位管理 1 个引脚,GPIO_AFRL 和 GPIO_AFRH 分别是 GPIO 端口复用功能低寄存器和 GPIO 端口复用功能高寄存器,各管理 8 个 GPIO 引脚。
将 PA9、PA10 复用为 UART_TX 和 UART_RX 的功能
- 使用 GPIOA_AFRH 寄存器
- 使用 [11:8]、[7:4] 位
- 写入 0b0111(AF7)
8.3 USART / UART 相关外设控制器
USART:通用同步 / 异步接收 / 发送器
USART = USRT(同步接收 / 发送器) + UART(异步接收 / 发送器)
更多使用异步方式 -> UART