单片机开发 - USART 总线

发布于:2025-09-10 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、总线概念

总线是存在于物理层(硬件层)并且用于设备间通信的桥梁。


二、通信方式

2.1 串行通信和并行通信

  • 串行通信是指通信双方收发数据时,是一位一位的收发数据的,一般使用一根数据线进行通信。
  • 并行通信是指通信双方收发数据时,是多位数据进行收发的,一般使用多根数据线进行通信。

图 1 串行通信图解

图 2 并行通信图解

2.2 同步通信和异步通信

1)同步通信

通信双方使用同一时钟源时钟频率一致),也即是通信双方的通信速率一致

2)异步通信

通信双方使用不同时钟源时钟频率不一致),也即是通信双方的通信速率不一致

3)频率和周期

频率单位时间内传输数据的位数

周期传输 1 位数据需要的时间

2.3 单工 / 半双工 / 全双工通信

1)单工通信

通信设备只能发送或者只能接收数据,例如 麦克风 和 广播。

2)半双工通信

通信设备既可以发送数据也可以接收数据,但同一时刻只能接收只能发送,例如 对讲机

3)全双工通信

通信设备既可以发送数据也可以接收数据,并且同一时刻既可以发送也可以接收数据,例如 手机。

2.4 总线的分类

三大基础串行总线(串行接口):

  1. UART 总线:串行、异步、全双工 通信总线。
  2. IIC 总线:串行、同步、半双工 通信总线。
  3. SPI 总线:串行、同步、全双工 通信总线。

三、UART 总线概念

3.1 概念

  1. UART 总线是一种 串行、异步、全双工通信 的总线,存在于 物理层硬件层);
  2. UART 总线硬件连接:有 3 根线,分别为 - TXD(数据发送线)、RXD(数据接收线)、GND(地线);
  3. UART 总线应用场景:设备间的通信(PC 和开发版进行通信),打印调试信息(类似于 linux 下的 printf 在终端打印信息);
  4. UART 总线在实际使用操作时,称之为 串口

3.2 UART 总线的作用

  1. 通过 UART 总线将程序烧录传输到开发板中;
  2. 可以通过 UART 总线将单片机程序运行中的打印信息传输到 PC 端的串口工具上显示,方便进行调试和查找错误

四、UART 总线的硬件连接

4.1 本质连接方式

图 3 UART 本质连接图

        PC 与开发板的 UART 总线实际连线如上图所示

        TXD   ---   RXD

        RXD   ---   TXD

        GND   ---   GND   ---   接地

4.2 DB25 / DB9 公母头插件

图 4 DB25 公母头
图 5 DB9 公母头

引脚定义

图 6 DB9 公母头引脚定义

4.3 ST-Link 连接方式

图 7 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-232RS-485 等电平标准,通过相应的电平转换芯片(如 MAX232MAX485 等)将 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 总结

  1. 使用 UART 总线进行数据传输时,通信双方需要确保 协议格式 和 比特率 一致;
  2. 常用串口协议格式: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 设置为复用功能模式

  1. 使用 GPIO_MODER 寄存器
  2. 使用 [19:18]、[21:20] 位
  3. 都写入 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 的功能

  1. 使用 GPIOA_AFRH 寄存器
  2. 使用 [11:8]、[7:4] 位
  3. 写入 0b0111(AF7)

8.3 USART / UART 相关外设控制器

USART:通用同步 / 异步接收 / 发送器

USART = USRT(同步接收 / 发送器) + UART(异步接收 / 发送器)

更多使用异步方式 -> UART

主要特性


网站公告

今日签到

点亮在社区的每一天
去签到