当前位置: 首页 > news >正文

STM32外设-串口UART

STM32外设-串口UART

  • 一,串口简介
  • 二,串口基础概念
    • 1,什么是同步和异步/UART与USART对比
    • 2,串行与并行
    • 3,波特率 (Baud Rate)
    • 4,数据帧 (Data Frame)
    • 5,TX 和 RX
  • 三,硬件连接
    • 1,usb转ttl模块
    • 2,dap下载器
  • 四,超时解析法
    • 1,数据解析的方法
    • 2,超时解析法

一,串口简介

如果想让单片机和电脑,或者和其他设备"交流",该怎么办呢?
UART 就像是设备之间的一条电话线,专门用来互相传递信息。通过它,单片机可以把传感器数据发送给电脑显示,电脑也可以给单片机发送指令来控制硬件。

UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发器 ,USART(Universal Synchronous Asynchronous Receiver/Transmitter)即通用同步异步收发器
UART 只支持异步通信模式;USART 功能更丰富,既支持同步通信也支持异步通信
UART 仅能进行异步通信,依靠约定波特率来保证收发双方同步 ;USART 除异步模式外,还支持同步模式,同步模式下需要同步时钟信号(如 STM32 单片机中的 USART_CK )来实现更精确的数据传输同步 。

二,串口基础概念

1,什么是同步和异步/UART与USART对比

UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发器USART(Universal Synchronous Asynchronous Receiver/Transmitter)即通用同步异步收发器
UART 只支持异步通信模式USART 功能更丰富,既支持同步通信也支持异步通信
异步通信,依靠约定波特率来保证收发双方同步USART 除异步模式外,还支持同步模式,同步模式下需要同步时钟信号(如 STM32 单片机中的 USART_CK )来实现更精确的数据传输同步 。

2,串行与并行

串行 (Serial): UART 就是这种方式,数据一位一位地在单根线上发送。
优点:省线,适合长距离;
缺点:速度相对较慢。

并行 (Parallel): 数据同时在多根线上发送。
优点:速度快;
缺点:需要更多线,成本高,不适合长距离。

3,波特率 (Baud Rate)

波特率(Baud rate),是对符号传输速率的一种度量 ,单位为波特(Bd )。它表示单位时间(每秒)内通过信道传输的码元个数

波特率就好比两个人打电话时说话的速度。你说话快,对方也要能听得快;你说话慢,对方也要能听得慢。只有双方速度(波特率)约定一致,才能正确理解对方的信息。

码元:是通信中携带数据信息的信号单元,是数字通信中对数字信号进行调制编码后的信号表示形式。在不同的调制方式下,一个码元可以携带不同数量的比特信息。例如,在四进制调制中,一个码元可以表示 2 个比特的信息;在八进制调制中,一个码元可以表示 3 个比特的信息。
比特:即二进制位,是计算机中数据存储和处理的基本单位,只有 0 和 1 两种状态。比特是信息的最小单位,用于表示数据的二进制值。
常见的波特率有 9600, 115200 等,单位是 Bd

4,数据帧 (Data Frame)

为了确保数据正确传输,UART 通信时会把数据打包成一个个"数据帧"来发送。就像写信需要信封、地址、邮票一样,数据帧也有固定格式。

一个典型的数据帧通常包含:
起始位 (Start Bit): 标志着一个新数据帧的开始,通常是低电平(逻辑 0)。
数据位 (Data Bits): 这才是我们要传输的真正数据,通常是 5 到 8 位。
校验位 (Parity Bit) (可选): 用于检查数据在传输过程中是否出错(奇校验、偶校验或无校验)。
停止位 (Stop Bit): 标志着数据帧的结束,通常是高电平(逻辑 1),可以是 1 位、1.5 位或 2 位。
在这里插入图片描述

重要:通信双方必须约定好相同的数据帧格式(数据位、校验位、停止位),否则就无法解析数据。

5,TX 和 RX

UART 通信至少需要两根线:

TX (Transmit): 发送数据线。设备的 TX 连接到另一个设备的 RX。
RX (Receive): 接收数据线。设备的 RX 连接到另一个设备的 TX。

TX 要连接对方的 RX,RX 要连接对方的 TX,交叉连接,就像打电话一样,你的话筒对着别人的听筒。
通常还需要一根 GND (Ground) 线,即地线,用来统一双方的参考电平(两个设备不是同一电源),确保信号稳定。

三,硬件连接

理论讲完了,我们来看看实际怎么连接。

1,usb转ttl模块

最常见的场景是将单片机(比如 STM32)和电脑通过 USB 转 TTL 模块连接起来。

  1. 找到单片机上的 UART 引脚: 通常在开发板原理图或丝印上会标明 UART1_TX, UART1_RX 等。不同单片机可能叫 USART、SCI 等,但原理类似。
  2. 准备 USB 转 TTL 模块: 这是一个小模块,一边是 USB 口插电脑,另一边引出 TXD, RXD, GND, VCC 引脚。
  3. 连接:
    单片机的 TX 连接到 USB 转 TTL 模块的 RXD
    单片机的 RX 连接到 USB 转 TTL 模块的 TXD
    单片机的 GND 连接到 USB 转 TTL 模块的 GND
    (可选)如果模块需要供电,根据情况连接 VCC。
  4. 插入电脑: 将模块的 USB 口插入电脑。电脑会识别到一个虚拟串口(COM口)。

注意: 一定要交叉连接 TX 和 RX!GND 必须连接!
连接好后,就可以在电脑上使用串口助手软件(如 XCOM、Putty 等)来收发数据了。

2,dap下载器

连接方法同上

因为我的板子上有ch340模块,ch340是usb转串口芯片,电脑的usb接口可以通过ch340连接到STM32
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四,超时解析法

1,数据解析的方法

好了,现在硬件连上了,单片机也配置好了 UART(这部分通常由 STM32CubeMX 或类似工具生成初始化代码),数据源源不断地通过 RX 线进来了。但问题是:我怎么知道一帧完整的数据什么时候结束呢?

比如,电脑发送了 “Hello” 这个字符串,单片机是一个字节一个字节接收的(‘H’, ‘e’, ‘l’, ‘l’, ‘o’)。单片机怎么知道收到 ‘o’ 之后就表示 “Hello” 发送完了,而不是后面还有其他字符呢?

这就是数据解析要解决的问题。方法有很多,比如:

  1. 固定长度: 双方约定好每次都发送固定长度的数据,比如每次 10 个字节。收满 10 个字节就算一帧。
  2. 特定结束符: 双方约定好用一个特殊的字符或字符串作为结束标志,比如每次发送都以回车换行符 \r\n 结尾。收到这个标志就算一帧结束。
  3. 超时解析法: 利用数据传输的间歇时间来判断。如果两个字节之间的时间间隔超过某个阈值(比如 10ms),就认为上一帧数据已经结束了。

2,超时解析法

超时解析法 是非常常用的一种方法,尤其适合那些数据长度不固定,且发送方会自然停顿(比如我们通过串口助手手动发送数据),这时可以用超时解析法,当单片机超过一定时间没有接收到数据时,接收完毕,具体在串口接收讲解

相关文章:

  • WORD压缩两个免费方法
  • leetcode - 双指针问题
  • 抖音 “碰一碰” 发视频:短视频社交的新玩法
  • Spring Boot 框架概述
  • 主题分析建模用法介绍
  • FPGA:如何提高RTL编码能力?
  • 第20篇:Linux设备驱动程序入门<七>
  • 虚拟专用服务器(VPS)完全指南:从入门到选型
  • 基于卷积神经网络和Pyqt5的猫狗识别小程序
  • java基础:继承和多态
  • ChatGPT深度研究功能革新:GitHub直连与强化微调
  • Linux 文件系统中的数据定位:inode 与 dentry 的技术解析
  • 基于DeepSeek的韦恩图绘制:方法、优化与应用
  • 驱动-互斥锁
  • 从粗放管控到数字治能——安科瑞智能监测系统助力污水厂能耗下降15%+
  • 生成自定义的androidjar文件具体操作
  • React+Taro选择日期组件封装
  • 《让歌声跨越山海:Flutter借助Agora SDK实现高质量连麦合唱》
  • Android设备序列号获取方式全解析
  • 【彻底卸载nginx并部署nginx1.22.1+ssl模块等】
  • 花2万多在海底捞办婚礼,连锁餐企要抢酒楼的婚宴生意?
  • 匈牙利外长称匈方已驱逐两名乌克兰外交官
  • 洲际酒店:今年第一季度全球酒店平均客房收入同比增长3.3%
  • “三德子”赵亮直播间卖“德子土鸡”,外包装商标实为“德子土”
  • 中方对中美就关税谈判的立场发生变化?外交部:中方立场没有任何改变
  • 探索人类的心灵这件事,永远也不会过时