STM32F103 学习笔记-21-串口通信(第1节)-串口通信协议简介

引言

上节章我们讲解了通信的基本概念,包括并行通信、串行通信、同步和异步通信等。本章,我们正式进入串口通信的学习。串口通信是嵌入式开发中最常用的通信方式之一,理解其原理对后续实践至关重要。本节重点讲解串口通信协议的理论部分,分为物理层和协议层来阐述,确保新手小白能轻松入门。

一、串口通信协议概述

串口通信协议并非STM32独有,而是一种通用标准,适用于各种处理器。我们将串口学习分为三部分:协议简介、STM32外设详解和实战编程。本节先讲解协议部分。

串口通信协议可分为两个层次:

  • 物理层:规定通信系统的硬件特性,如电平标准、接口形状等,确保数据在物理介质上的传输。简单说,就是"用什么硬件来通信"。

  • 协议层:规定数据的打包和解包逻辑,统一收发双方的规则。简单说,就是"用什么规则来通信"。

用一个生活比喻:物理层就像我们选择用嘴巴还是手势交流(硬件方式),协议层则像选择用中文或英文交流(软件规则)。

二、物理层详解

物理层涉及实际硬件连接,常见的有三种标准:RS-232标准、USB转串口和原生串口(TTL电平)。它们的核心区别在于电平定义。

1. RS-232标准

  • 电平特点:RS-232使用负逻辑,逻辑"1"用-15V左右表示,逻辑"0"用+15V左右表示。这与TTL电平(高电平为1,低电平为0)相反,且电压差大(约30V),抗干扰能力强,适合工业环境。

  • 硬件连接:需要电平转换芯片(如MAX3232、SP3232)将控制器的TTL电平转换为RS-232电平。设备通过DB9接口连接(开发板上常见母头,需用公头串口线)。

  • 应用场景:主要用于工业设备直接通信,如工控机、老式调制解调器。

  • 扩展说明:DB9接口有公头(针)和母头(孔)之分,连接时需匹配。如果想与电脑通信,可购买USB转串口线(需安装驱动)。

2. USB转串口

  • 电平特点:电脑使用USB信号,而单片机是TTL电平,因此需要转换芯片(如CH340、PL2303、CP2102)进行中介。

  • 硬件连接:开发板上的USB转串口模块(如霸道板使用CH340)默认连接到单片机串口1(PA9为TX,PA10为RX)。通过跳线帽可切换至其他串口。

  • 应用场景:主要用于设备与电脑通信,如打印调试信息、烧录程序。

3. 原生串口(TTL电平)

  • 电平特点:TTL电平直接来自芯片引脚,高电平为3.3V或5V(STM32用3.3V),低电平为0V。逻辑简单:高电平为1,低电平为0。

  • 硬件连接:设备间直接通过导线连接,TX与RX交叉即可,无需电平转换芯片。

  • 应用场景:常用于控制器与串口传感器或模块通信,如GPS模块、Wi-Fi模块(ESP8266)、蓝牙模块(HC-04)等。

三、协议层详解

协议层定义了数据包的格式,确保收发双方能正确解析数据。一个标准的串口数据包包括起始位、数据位、校验位和停止位。

数据包基本组成

  • 起始位:用1个逻辑0(低电平)表示数据包开始,起到同步作用。

  • 数据位:紧接起始位,是有效数据,长度可为5、6、7、8位(STM32支持9位)。例如,发送字符"A"(ASCII 0x41)时,数据位为8位二进制数。

  • 校验位:可选位,用于抗干扰。校验方式包括:

    • 奇校验(Odd) :数据位和校验位中"1"的个数为奇数。例如,数据01101001有4个"1",则校验位为"1"使总数为奇数。

    • 偶校验(Even):数据位和校验位中"1"的个数为偶数。例如,同上数据,校验位为"0"使总数为偶数。

    • 0校验(Space):校验位固定为"0"。

    • 1校验(Mark):校验位固定为"1"。

    • 无校验(None):不包含校验位,直接传输数据。

  • 停止位:用0.5、1、1.5或2个逻辑1(高电平)表示数据包结束,通常使用1位。

数据包示例

假设数据位为8位,无校验,1位停止位,则一帧数据包括:1位起始位 + 8位数据位 + 0位校验位 + 1位停止位,共10位。波特率(如9600bps)决定每位的时间长度。

四、总结与注意事项

  • 关键点

    • 物理层关注硬件:RS-232需电平转换,USB转串口用于电脑通信,原生TTL最简。

    • 协议层关注规则:数据包格式可配置,校验位增强可靠性。

  • 实践提示

    • 使用开发板时,注意跳线帽设置,避免连接错误。

    • 电脑端需安装USB转串口驱动(如CH340驱动)。

    • 多设备通信时,确保波特率、数据位、停止位等参数一致。

本节理论部分为后续STM32串口外设学习打下基础。下一章我们将深入STM32串口的功能框图,结合寄存器讲解配置方法。


备注:本笔记基于《零死角玩转STM32》教材整理

相关推荐
风之子npu2 小时前
AXI 原子访问
arm开发·笔记·学习
YJlio2 小时前
Disk2vhd 学习笔记(13.1):在线 VHD 冷备份与迁移实战
服务器·笔记·学习
yuxb732 小时前
DevOps 从概念到 CI/CD 落地
笔记·devops
就是蠢啊2 小时前
51单片机——LCD1602液晶显示(二)
单片机·嵌入式硬件·51单片机
江苏世纪龙科技2 小时前
从结构到原理:几何G6新能源汽车虚拟仿真实训方案
学习
竹叶萧萧2 小时前
stm32u575从bank2启动,擦写bank1失败
stm32·单片机·嵌入式硬件·双bank升级·双bank切换·bank2·dual-bank
悠哉悠哉愿意2 小时前
【嵌入式学习笔记】Key模块解析
笔记·单片机·嵌入式硬件·学习
huangjiazhi_2 小时前
arduino uno单片机+AM2032 DHT22 Sensor温湿度开发
单片机·嵌入式硬件
找方案2 小时前
all-in-rag 学习笔记:索引构建与优化 —— 解锁 RAG 高效检索的核心密码
人工智能·笔记·学习·all-in-rag