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

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

http://www.jsqmd.com/news/145077/

相关文章:

  • 快速幂
  • 学长亲荐8个AI论文软件,研究生论文写作不再难!
  • nt!MiInitializeLoadedModuleList分析和全局变量nt!PsLoadedModuleList初始化和LoaderBlock->LoadOrderListHead的关系非常重要
  • 私有知识库:数字时代的知识守护者
  • 【课程设计/毕业设计】基于Java的网上宠物店管理系统基于java的宠物用品店系统【附源码、数据库、万字文档】
  • 【mac如何连接redis】很好用的一款Redis客户端
  • Java计算机毕设之基于Java的网上宠物店管理系统宠物种类管理、宠物信息管理、食品类型管理(完整前后端代码+说明文档+LW,调试定制等)
  • transformer-explainer
  • 安装FunASR
  • 【开题答辩全过程】以 河金新生报到管理APP为例,包含答辩的问题和答案
  • 编译安装Freeswitch 1.10.12
  • 虚拟桌面是什么?Windows 自带的高效办公与摸鱼神器
  • 汽车领域智能体构建全解析—腾讯云黑客松Agent应用创新挑战赛微信公众号赛道实战复盘
  • 英伟达圣诞偷袭,200亿美元收购Groq
  • 鸿蒙开发入门:从环境搭建到第一个ArkTS应用,30分钟上手
  • 【计算机毕业设计案例】基于springboot的课程互助学习系统“资源共享 - 协作学习 - 互助答疑(程序+文档+讲解+定制)
  • [从程序员到架构师] 微服务场景实战 - 注册发现
  • 安装nvm管理node版本
  • 查找两个带头节点单链表的共同后缀起始位置
  • ‌测试代码覆盖率:Jacoco配置详解
  • 8.2.1-内核级支持的分布式存储ceph
  • 自动化测试覆盖率:达到90%+的实战体系构建
  • 鸿蒙6核心功能实战:手把手教你开发分布式协同小应用
  • SQL性能瓶颈破局:Explain分析+实战优化全攻略
  • 负熵流就是财富,财富就是负熵流
  • 放弃 HarmonyOS 7?OpenHarmony 6.1 LTS 版本适配指南(含老机型兼容技巧)
  • 【毕业设计】基于Java的网上宠物店管理系统基于Java技术的智慧宠物店管理系统设计(源码+文档+远程调试,全bao定制等)
  • 【开题答辩全过程】以 共享单车管理系统为例,包含答辩的问题和答案
  • 如何构建一个模型,将企业特定的知识集可视化展示,并可以据此引导用户进行有针对性的提问?
  • SpringBoot Maven 项目 pom 中的 plugin 插件用法整理 - 教程