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》教材整理

相关推荐
克里斯蒂亚诺更新3 小时前
ruoyi角色权限的对应关系
笔记
a1117766 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao6 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
sramdram7 小时前
MCU微控制器OA打印机方案
单片机·嵌入式硬件·mcu·mcu微控制器
破碎的南瓜8 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
天天爱吃肉82188 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车
你想知道什么?8 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御8 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
谙弆悕博士8 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
AOwhisky9 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发