【STM32实践篇】:串口通信

文章目录

  • 1. 串行通信与并行通信
  • 2. 异步通信与同步通信
  • 3. 单工,半双工和全双工通信
  • 4. 通信速率和接口标准
  • 5. USART 结构框图
  • 6. 串口电路
    • 6.1 串口之间的连接
    • 6.2 串口与 RS232 的转换和连接
    • 6.3 串口与 RS485 的转换和连接
    • 6.4 串口与 USB 的转换和连接
  • 7. USART 字符说明


在这里插入图片描述


1. 串行通信与并行通信

  • 串行通信是一种数据逐位顺序传输的通信方式,发送设备把 8 位数据(D0~D7)通过单条线路“顺次传送”,接收设备逐位接收后再还原成完整数据。
    • 在这里插入图片描述
  • 并行通信是一种多位二进制数据通过多条独立线路同时传输的通信方式,下图中:发送端先发 “询问”,接收端回复 “应答”,发送设备与接收设备间有 8 条数据线,8 位数据通过这 8 条线同时发送,接收端在同一时刻采样所有数据线的电平,直接还原出完整的 8 位数据。
    • 在这里插入图片描述

2. 异步通信与同步通信

  • 异步通信是一种 “以字符为单位、无需全局时钟同步” 的串行通信方式,数据按 “字符 / 字节” 独立封装传输,字符与字符之间的时间间隔完全任意,发送端可随时发送下一个字符,但每个字符中的各位是以固定的时间传送的,收发双方通过“起始位 + 停止位”实现字符级局部同步。
    • 在这里插入图片描述
    • 字符帧是异步串行通信中传输单个字符(或字节)的 “标准化数据包”:
      • 空闲状态:通信线路在无数据传输时的默认状态;
      • 起始位:标志一个字符帧的开始,固定为 1 位低电平;
      • 数据位:实际传输的有效字符数据,位数可灵活配置(5/6/7/8 位常见);
      • 校验位:用于简单错误检测(奇校验 / 偶校验 / 无校验);
      • 停止位:标志一个字符帧的结束,固定为 1 位,1.5 位或 2 位高电平;
      • 在这里插入图片描述
  • 同步通信是一种 “依赖全局时钟信号,实现连续数据流同步传输” 的通信方式,收发双方通过 “统一时钟节奏” 采样数据。
    • 在这里插入图片描述
    • 外同步使用独立时钟线,发送方同时传输 “数据信号”(如01101)和 “时钟信号”,接收方通过时钟信号的边沿(上升 / 下降沿) 采样数据位。
    • 自同步无独立时钟线,发送方将 “时钟信息嵌入数据信号”,接收方通过解码数据信号的跳变提取时钟。

3. 单工,半双工和全双工通信

  • 单工通信是一种 “数据只能沿单一固定方向传输,无法反向反馈” 的通信方式。
    • 在这里插入图片描述
  • 半双工通信是一种 “数据可双向传输,但同一时刻只能单向进行” 的通信方式。
    • 在这里插入图片描述
  • 全双工通信是一种 “通信双方可同时双向传输数据,发送与接收完全独立、互不干扰” 的通信方式。
    • 在这里插入图片描述

4. 通信速率和接口标准

  • 比特率表示每秒传输的二进制位数,bps(bits per second,比特 / 秒)。
  • 波特率表示每秒传输的码元数量,一个码元可表示多个二进制位;比特率与波特率的关系由每个码元携带的比特数决定,公式为:比特率=波特率×每个码元的比特数。
  • RS–232C 接口:25针 – DB25,9针 – DB9。
    • 在这里插入图片描述
    • 9针公头和母头
      • 在这里插入图片描述
    • 9针和25针管脚功能:
      • 在这里插入图片描述
    • RS–232C 电平标准:逻辑1:-3V ~ -15V(负电压),逻辑0:+3V ~ +15V(正电压)。
  • 常用通信格式:96-N-8-1。
    • 96:波特率9600 bps;
    • N:无校验;
    • 8:数据位8位;
    • 1:停止位1位;

5. USART 结构框图

在这里插入图片描述

  1. 功能引脚

    • RX:接收数据输入引脚。
    • TX:发送数据输出引脚。
    • 同步模式下需要 SCLK:发送器时钟输出。
    • 硬件流控制模式下需要 :
      • nRTS(Request To Send,低有效):
        • 若接收缓冲区有空间,nRTS 输出低电平(请求发送方 “可以发数据”)。
        • 若接收缓冲区已满,nRTS 输出高电平(告诉发送方 “暂停发送,避免溢出”)。
      • nCTS(Clear To Send,低有效):
        • 若外部设备 nRTS 为低电平,USART 的 CTS 检测到后,启动发送
        • 若外部设备 nRTS 为高电平,USART 的发送自动挂起,直到 CTS 变低。
  2. 数据寄存器

    • 发送流程 CPU → 外部设备:CPU/DMA 写并行数据 → 存入 TDR 发送数据寄存器 → 转移到 发送移位寄存器进行并行→串行拆分 → 按帧格式逐位输出到 TX 引脚,串行信号输出。
    • 接收流程 外部设备 → CPU:RX 引脚输入串行信号 → 送入 接收移位寄存器进行串行→并行拼接 → 拼接为完整数据存入 RDR 接收数据寄存器 → CPU/DMA 读并行数据。
  3. 控制器

    • 发送控制:
      • CR1 寄存器 → TE:
        • 置 1 → 激活发送移位寄存器,允许从 TDR 取数据并串行输出。
        • 置 0 → 关闭发送,TX 引脚回到空闲状态(高电平)。
    • 接收器控制:
      • CR1 寄存器 → RE:
        • 置 1 → 激活接收移位寄存器,允许从 RX 引脚采样串行信号。
        • 置 0 → 关闭接收,RX 引脚输入被忽略。
    • USART 中断:
      • 在这里插入图片描述
      • 在这里插入图片描述
  4. 波特率发生器

    • 波特率=fPCLK8×(2−OVER8)×USARTDIV\text{波特率} = \frac{f_{\text{PCLK}}}{8 \times (2 - \text{OVER8}) \times \text{USARTDIV}} 波特率=8×(2OVER8)×USARTDIVfPCLK
      • fPCLK:系统总线时钟。
      • OVER8=0:采用 16 倍过采样;OVER8=1:采用 8 倍过采样。
      • USARTDIV=DIV_Mantissa+DIV_Fraction16\text{USARTDIV} = \text{DIV\_Mantissa} + \frac{\text{DIV\_Fraction}}{16} USARTDIV=DIV_Mantissa+16DIV_Fraction

6. 串口电路

6.1 串口之间的连接

  • 串口数据收发线交叉连接,并且共GND
  1. 带硬件控制流:
    • 在这里插入图片描述
  2. 无硬件控制流:
    • 在这里插入图片描述

6.2 串口与 RS232 的转换和连接

  • SP3232 是一款双通道 RS-232 电平转换芯片,核心功能是实现 TTL/CMOS 电平与 RS-232 电平的双向转换,解决不同电平标准的设备间通信问题。
  • 引脚功能:
    • 电源与接地引脚:VCC – 接系统电源;GND – 与系统地共地。
    • 电荷泵电容引脚:C1+,C2+ – 外接电容正极;C1-,C2- – 外接电容负极。
    • 串口通信引脚:
      • RINx – 接 RS-232 的 RX 引脚。
      • ROUTx – 接单片机的 UART RX 引脚。
      • DINx – 接单片机的 UART TX 引脚。
      • DOUTx – 接 RS-232 的 TX 引脚。
  • 在这里插入图片描述

6.3 串口与 RS485 的转换和连接

  • SP3485 是一款低功耗半双工 RS-485 收发器芯片,核心功能是实现 TTL/CMOS 电平与 RS-485 差分电平的双向转换。
  • 电源与接地引脚:VCC – 接系统电源;GND – 与系统地共地。
  • 数据收发与使能控制引脚:
    • RO – 接单片机的 UART RX 引脚。
    • DI – 接单片机的 UART TX 引脚。
    • RE – 通常与 DE 引脚短接。
    • DE – 与 RE 短接后,接单片机的 GPIO 引脚(控制收发方向)。
  • RS-485 总线差分引脚:
    • A 差分正端 – 接 RS-485 总线的 A 线。
    • B 差分负端 – 接 RS-485 总线的 B 线。
  • 在这里插入图片描述

6.4 串口与 USB 的转换和连接

  • CH340C 是 USB 转串口芯片,支持 USB 转 TTL/RS232/RS485 等接口。
  • 电源与接地引脚:VCC – 接系统电源;GND – 与系统地共地。
  • USB 通信引脚:D+,D- 直接连接 USB 接口的 D +,D - 信号线,无需串联电阻,芯片内置 USB 上拉电阻。
  • 串口通信引脚:TXD 串口数据发送端,连接MCU 的 RXD 引脚,RXD 串口数据接收端,连接MCU 的 TXD 引脚。
  • RTS#:请求发送信号,低电平有效;低电平时,三极管导通,BOOT0 被拉到高电平,进入下载模式。
  • DTR#:数据终端就绪信号,低电平有效;低电平时,三极管导通,RESET 被拉到低电平,触发复位。
  • 在这里插入图片描述

7. USART 字符说明

  • 可通过对 USART_CR1 寄存器中的 M 位进行编程来选择8位或9位的字长,一般设置为8位。
  • TX 引脚在起始位工作期间处于低电平状态,在停止位工作期间处于高电平状态。
  • 空闲字符可理解为整个帧周期内电平均为“1”(停止位的电平也是“1”),该字符后是下一个数据帧的起始位。
  • 停止字符可理解为在一个帧周期内接收到的电平均为“0”。发送器在中断帧的末尾插入1或2个停止位(逻辑“1”位)以确认起始位。
  • 发送和接收由通用波特率发生器驱动,发送器和接收器的使能位分别置1时将生成相应的发送时钟和接收时钟。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89903.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Trae IDE评测体验:通过 MCP Server - Figma AI Bridge 一键将 Figma 转为前端代码

Trae IDE评测体验:通过 MCP Server - Figma AI Bridge 一键将 Figma 转为前端代码 在现代前端开发中,从设计稿到可用页面的交付往往需要大量重复劳动:切图、手写样式、布局调整……而借助 MCP Server - Figma AI Bridge,我们可以…

文献阅读 250715-Atmospheric rivers cause warm winters and extreme heat events

Atmospheric rivers cause warm winters and extreme heat events 来自 <Atmospheric rivers cause warm winters and extreme heat events | Nature> ## Abstract: Definition: Atmospheric rivers (ARs) are narrow regions of intense water vapour transport in the …

线上协同办公时代:以开源AI大模型等工具培养网感,拥抱职业变革

摘要&#xff1a;在提倡线上协同办公的时代背景下&#xff0c;职场人需迅速提升工作能力以适应职业变革。培养网感成为时代所需&#xff0c;它为快速连接时代奠定基础。本文深入探讨了开源AI大模型、AI智能名片、S2B2C商城小程序源码等工具在培养网感过程中的重要作用&#xff…

Netty网络聊天室及扩展序列化算法

一、前言Netty是一个基于Java的高性能、事件驱动的网络应用框架&#xff0c;广泛应用于各种网络通信场景。本文将介绍如何使用Netty构建一个简单的网络聊天室&#xff0c;并扩展序列化算法来提高数据传输效率和灵活性。二、Netty网络聊天室的实现1. 项目结构我们将使用Maven构建…

基于单片机金沙河粮仓环境监测系统设计与实现

摘 要 本文围绕基于单片机的金沙河粮仓环境监测系统展开设计与实现研究。系统以单片机为核心&#xff0c;集成 DHT11、MQ - 135 等传感器&#xff0c;可实时精准监测粮仓温湿度、气体成分等关键环境参数。借助 LoRa、ESP8266 实现数据的可靠传输与远程通信 &#xff0c;OLED 屏…

如何解决Android Studio安装时无法下载SDK的问题(Windows、Linux、Mac解决方案大全)

如何解决Android Studio安装时无法下载SDK的问题&#xff08;Windows、Linux、Mac解决方案大全&#xff09; 前言 对于全栈开发者而言&#xff0c;安装 Android Studio 是迈向 Android 开发的第一步&#xff0c;但在 Windows、Linux、macOS 等不同平台上&#xff0c;经常会遇…

SQL Server从入门到项目实践(超值版)读书笔记 21

9.5 数据的内连接查询连接是关系数据库模型的主要特点&#xff0c;连接查询是关系数据库中最主要的查询&#xff0c;主要包括内连接、外连接等。内连接查询操作列出与连接条件匹配的数据行&#xff0c;它使用比较运算符比较被链接列的列值。具体语法格式如下&#xff1a;SELECT…

瑞芯微7月17日举办开发者大会,多款AIoT新品发布,触觉智能RK方案商报导

瑞芯微第九届开发者大会RKDC 2025将有多款新品发布。 据瑞芯微电子Rockchip此前宣布&#xff1a;该企业的本年度开发者大会RKDC 2025将于7月17~18日在福建福州海峡国际会展中心举行。本次瑞芯微开发者大会以“AIoT模型创新重做产品”为主题&#xff0c;关注传统IoT功能设备向场…

Eureka+Ribbon实现服务注册与发现

目录 一、相关文章 二、兼容说明 三、服务注册 四、服务发现 一、相关文章 基础工程&#xff1a;gradle7.6.1springboot3.2.4创建微服务工程-CSDN博客 Eureka服务端启动&#xff1a;https://blog.csdn.net/cherishSpring/article/details/149473554 Ribbon负载均衡&#…

数据库、HTML

一、数据库 数据库文件与普通文件区别: 普通文件对数据管理(增删改查)效率低2.数据库对数据管理效率高&#xff0c;使用方便 常用数据库: 1.关系型数据库: 将复杂的数据结构简化为二维表格形式 大型:0racle、DB2 中型:MySq1、sQLServer 小型:Sqlite 2.非关系型数据库以键值对…

RCE随笔(1)

哪些是可以执行代码执行&#xff1a;php代码。eval如&#xff1a;eval:<?php eval($_post[key]);eval&#xff1a;php中不被叫做函数叫动态执行命令assert&#xff1a;执行函数call_user_func_array<?php call_user_func_array(assert,array($_REQUEST[shu]));传入xxs-…

FPGA——ZYNQ7020学习日记(PS端)4(开始PS控制VGA显示)

1.DMA 我们的整体VGA显示分为几步&#xff1a;比如先导入VIDEO TIMING CONTROL来做对输入数据的时序“对齐”&#xff0c;这里开源骚客写的很详细&#xff0c;先用了一个虚拟IO&#xff08;VIO)来作为输入&#xff0c;导入了一个简单的RTL模块&#xff08;当VTL的使能信号有效…

AGX Xavier 搭建360环视教程【补充一:鱼眼去畸变(Fisheye Undistortion)】

对每路帧做鱼眼去畸变除了用cv::cuda::remap是否有更好的办法呢&#xff1f;确实 cv::cuda::remap 不是唯一可选项&#xff0c;甚至未必是最高效或最适合实际业务量级的方案。&#x1f3af; 1️⃣ 去畸变的原理鱼眼相机&#xff08;或者大广角相机&#xff09;会把直线拉弯&…

tomato靶机练习

下载完靶机后&#xff0c;直接运行&#xff0c;选择安装路径后将虚拟机的网络设置为nat模式&#xff0c;设置完成后重启虚拟机扫描同一网段&#xff0c;查找主机&#xff0c;这里我们使用kali的nmap&#xff0c;既能找到主机&#xff0c;也能查看开启的端口依次尝试&#xff0c…

136. Java 泛型 - 下限通配符

文章目录136. Java 泛型 - 下限通配符 (? super T)**1. 什么是下限通配符 (? super T)&#xff1f;****2. 为什么使用下限通配符&#xff1f;****3. 示例&#xff1a;使用 ? super Integer 允许添加 Integer****✅ 正确示例****4. 为什么 List<? super Integer> 和 L…

C++23中的std::expected:异常处理

C23中的std::expected:异常处理 众所周知&#xff0c;C23以前的异常处理是比较麻烦的&#xff0c;尤其是自己要在可能抛出异常的地方&#xff0c;需要自己去捕获它&#xff0c;比如除数为0的异常、使用std::stoi函数将字符串转换成int整型数据、处理文件读写的异常等等&#x…

处理Electron Builder 创建新进程错误 spawn ENOMEM

这个错误 spawn ENOMEM 表明系统内存不足&#xff0c;无法为 Electron Builder 创建新进程。以下是一些可能的解决方案&#xff1a;释放系统内存关闭不必要的程序和服务增加物理内存 (RAM) 或交换空间 (swap)使用 free -h 和 top 命令检查内存使用情况临时增加交换空间# 创建一…

discuz安装使用教程,及网站部署在公网访问

Discuz!的安装主要包括环境准备、程序部署和配置管理三个核心步骤‌&#xff0c;有条件 的可以使用宝塔面板或云镜像简化流程&#xff0c;本地部署无公网IP的配合类似nat123映射公网访问&#xff0c;当前最新版本为Discuz! Q&#xff08;2025年发布&#xff09;和Discuz! X3.5&…

深入解析C#数字转换:隐式与显式转换的全面指南

—— 数据精度保卫战中的checked与unchecked秘籍 &#x1f4cc; 核心概念速览 1. 隐式转换 自动发生&#xff0c;无数据丢失风险&#xff08;如 int→long&#xff09;遵循"小类型→大类型"路径&#xff08;见下图⬇️&#xff09; [图1&#xff1a;C#隐式数字转换路…

量子计算可以解决的三个现实问题

今年是量子力学被发现一百周年。这一突破帮助人们认识到&#xff0c;支配我们周围世界最小层面&#xff08;分子、原子和亚原子粒子&#xff09;的物理定律&#xff0c;与支配我们在日常生活中与物体相互作用方式的物理定律有着根本的不同。量子力学让我们能够了解从血液中的新…