news 2026/3/4 20:41:38

串口的一些实用电路分析与介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
串口的一些实用电路分析与介绍

一、串口的基本概念

串口(Serial Port)是计算机中常用的一种通信接口,用于串行数据的传输。与并行接口(Parallel Port)相比,串口通过一根传输线按顺序逐位传输数据,因此称为“串行通信”。顾名思义,串口的“串”是指数据一位一位地按顺序传输。在串行通信中,数据按顺序逐位发送,而不像并行通信那样同时传输多个数据位。每次只传送一个比特(bit)。虽然效率相比与并行接口有所下降,但是极大的降低了硬件资源的占用。

二、串口的组成

常见的信号线如下:

信号线方向说明
TXD输出数据发送(Transmit Data)
RXD输入数据接收(Receive Data)
GND共地信号参考地
RTS/CTS双向硬件流控(可选)
DTR/DSR双向调制解调器状态(可选)

三、串口的工作原理

串口通信是通过电压变化表示数据的传输。典型的串口通信流程如下:

  • 数据位(Data Bits):每个字符由若干个数据位组成,通常为7位或8位(即1字节)。

  • 起始位(Start Bit):通常在数据的最前面添加一个起始位,用来告诉接收方数据即将开始传输。它的电平通常是低电平(逻辑0)。

  • 停止位(Stop Bit):每个字符的后面通常会加一个或多个停止位,表示数据传输完毕。停止位的电平通常是高电平(逻辑1)。

  • 校验位(Parity Bit):为了检测数据传输过程中是否出现错误,串口通信通常可以使用校验位来进行简单的错误检测。常见的校验方式有:无校验、奇校验和偶校验。

  • 波特率(Baud Rate):波特率决定了每秒钟传输多少位数据。常见的波特率有9600、115200等。发送端和接收端的波特率必须一致,才能确保正确通信。

起始位(1 bit) | 数据位(5~9 bit) | 校验位(可选) | 停止位(1~2 bit)

四、常见串口标准

标准电平定义典型应用
TTL 串口0V=逻辑0,3.3V/5V=逻辑1MCU、开发板之间通信
RS-232+3+15V=逻辑0,-3-15V=逻辑1(反逻辑)PC 旧式串口
RS-485差分信号传输,长距离、抗干扰强工业设备,半双工
RS-422差分信号,点对点高速传输工控、仪器设备,半双工

五、优缺点

分类优点缺点
接线线数少(最少 3 根:TX、RX、GND)必须正确连接 TX ↔ RX、GND 共地,否则无法通信
成本硬件成本低,MCU 内置即可实现工业级长距离需要额外芯片(如 RS-485 转换器)
协议协议简单,软件实现方便数据格式固定,不适合复杂协议封装
通信方式支持全双工(UART)、半双工(RS-485)一般只能点对点,多机需要额外总线协议
应用适合调试、传感器、模块通信传输速率低于 SPI、USB(常用 9600~1Mbps)
稳定性硬件简单,易于调试抗干扰能力有限,TTL 距离 < 1m,RS-232 < 15m

NOTE1:UART与USART

对比项UARTUSART
支持模式仅异步异步 + 同步
硬件复杂度简单略复杂(同步模式需要时钟线)
传输速度一般(受波特率限制)同步模式更快
灵活性较低更高,可代替 SPI/同步串口
常见应用串口调试、模块通信高速 MCU 通信、特殊外设通信

NOTTE2:RTS与CTS

硬件流控信号,其中RTS(Request To Send)为请求发送信号,CTS(Clear To Send)为清除发送信号,通常成对使用,用来防止数据溢出,实现硬件流控。

工作原理:

1、发送端准备发送数据时,会先将 RTS 拉低(在 RS-232 中低电平表示逻辑 1,正逻辑则是高电平)。

2、接收端如果准备好接收数据,就会将 CTS 拉低,表示“你可以发了”。

3、只有当 CTS 为有效状态时,发送端才真正开始发送数据。

4、如果接收端缓冲区满了,会将 CTS 拉高,发送端必须暂停发送。

硬件自动握手,实时控制数据流,协调发送和接收节奏,防止丢包,常用于高速串口通信或缓冲很小的设备。

NOTE3:DTR与DSR

设备准备好信号,其中DTR(Data Terminal Ready)为数据终端就绪信号,DSR(Data Set Ready)为数据设备就绪信号,通常用于指示设备是否就绪,早期主要是计算机与调制解调器(Modem)之间的控制信号。

工作原理:

1、PC 端(数据终端)在准备好通信时,会将 DTR 拉低(表示逻辑有效)。

2、调制解调器(数据设备)在准备好响应时,会将 DSR 拉低。

3、只有两边都处于“就绪”状态时,数据通信才会开始

该组信号用于用于连接建立前的“准备”信号,而不是实时流控,在现代 MCU 串口通信中很少用到,但 USB-转-串口芯片(CH340、CP2102)仍可能把 DTR 用来复位单片机(例如 Arduino)。

六、实用电路举例

(一)自动下载电路

以ESP32-S3举例

下载电路如下所示,其结构与RS触发器类似。

其逻辑关系如下:

DTR = 0; RTS = 0, 此时Q1截止,Q2截止,EN = 1; IO0 = 1 DTR = 0; RTS = 1,此时Q1截止,Q2导通, EN = 1; IO0 = 0 DTR = 1; RTS = 0, 此时Q1导通,Q2截止, EN = 0; IO0 = 1 DTR = 1; RTS = 1, 此时Q1截止,Q2截止, EN = 1; IO0 = 1

当DTR和RTS同时为0或者同时为1时,三极管Q1和Q2均为截止状态,此时EN和IO0的状态由其他电路决定(其中,EN外部上拉,IO0内部弱上拉)。当不同时为0或者1时:

EN = RTS IO0 = DTR

芯片复位和自动下载时许逻辑如下,图中EN为复位引脚(RST),GPIO为BOOT引脚(BOOT)。

进行一键下载时,计算机端下载软件打开串口

  • S1: 先设置DTR#(IO0-BOOT)为低电平、设置RTS#(EN-RST)为低电平、再高电平,MCU自动复位进入BOOT下载程序

  • S2: 下载完成后,需恢复DTR#(BOOT)为高电平、设置RTS#(RESET)为低电平、再高电平,MCU自动复位后正常运行应用程序

该过程一般不需要工程师去手动进行,实际上下载软件已经按照该逻辑进行下载。

note1:采用一体芯片

在自动下载电路中,该类似于RS触发器的电路可以使用一块集成芯片:UMH3N(其将三极管和电阻的电路组合合封在一起)。

note2:既然DTR和RTS能用程序控制,为什么要用三极管而非直连

其实最初的电路确实是rts和dtr直接接的en和io0,只是因为有部分串口程序自动打开了硬件flow control,导致默认rts被拉低,esp会一直保持在复位状态,详情见:Auto program Boot Flasher is still mysterious! - ESP32 Forum

另附网友测试:

note3:其他串口芯片

CH340X、CH343、CH342等USB转串口芯片支持免外围电路ESP32/ESP8266等单片机串口一键下载功能,对此类支持多模式启动的单片机,无需外围三极管等逻辑控制电路,将芯片提供的输出信号脚直连MCU的BOOT控制引脚(GPIO0)与CHIP_PU芯片使能引脚(EN)即可实现MCU BOOT和APP模式的控制切换和固件下载。

以Arduino举例
  • 该电路为Atmega2560-16AU芯片上的可行电路,对于大部分单片机具有通用性。

  • CH340的TXD脚应该接单片机的RXD脚,RXD脚接单片机的TXD。

  • CH340芯片内置了USB上拉电阻,UD+和UD-引脚应该直接连接到USB总线上。这里R1、R3两个22R的小电阻可以去除,实际应用不影响。

  • CH340G需要外部提供12MHz的晶振,振荡电容选择两个22pF电容。

  • 5V供电时芯片V3引脚需要接一个104电容到地,3.3V供电时直接将V3脚与3.3V电源引脚短接就可以了。V3的引脚除了在不同电压供电模式下接法不同,对于电容数值选用也是需要注意的。V3引脚的电容用于内部电源节点退耦,来改善USB传输过程中的EMI,通常容量在4700pF到0.1uF范围,建议容量为0.01uF,即103电容。

  • CH340芯片的发送引脚TXD上接一个反向二极管,然后再连接到对端IC。在接收引脚上加一个限流电阻来防止对端IC对CH340倒灌电。通过反向二极管的原理是:在CH340发送数据时,发送高电平时二极管截止,但是由于对端RXD默认上拉也是高电平不会有采样问题,而发送低电平时二极管导通,对端RXD接收到低电平,因此可以正常通讯。并防止了CH340的TXD发送引脚将电流倒灌到对端IC。通过限流电阻的原理是:倒灌电流导致芯片工作甚至闩锁效应,是由于引脚电流过大超过了芯片设计时容忍的上限导致芯片内部电路出现异常。因此加一个限流电阻就可以了,其他通讯场景也可以仿照此方法进行尝试。

  • Arduino单片机需要复位以实现下载,DTR引脚通过一个104电容接到MCU的RESET上,以实现自动复位和一键下载。

  • Arduino需要预先烧写BootLoader(如果芯片内没有BootLoader的话)方能下载

以STM32举例

与Arduino等单片机不同的是,stm32单片机在串口下载时,不仅需要控制RESET来复位,还需控制BOOT0、BOOT1来选择启动位置。

  • DTR#和RTS#都是 输出类型, MCUISP(一键下载工具),会控制CH340这两个引脚的高低电平状态,通过控制DTR#和RST#这两个引脚的高低电平状态,从而控制STM32的BOOT0 和 RESET.

  • DTR#、RST#初始状态的时都是高电平,在启用下载的时候,DTR#维持高,RST#拉低,此时两个三极管Q2 和Q3 导通,那么BOOT0 为高电平,RESET为低电平复位,然后DTR#变低,Q2不导通,复位结束,此时BOOT0 为高电平。stm32的启动模式变为从系统存储器启动,启用串口下载,STM32 和 MCUISP下载软件进行通信,进行代码下载,等到代码下载结束时 RST#先变为高电平,然后DTR#在变成高电平。

参考文章

【esp32 学习笔记】ESP32各型号模组进入下载模式的引脚配置及其自动下载电路 - FBshark - 博客园

分析自动下载电路是如何工作的以及CH340的选型_ch340x-CSDN博客

EMH3 / UMH3N / IMH3A : Transistors

基于CH340的一键下载电路 - 白色泪光 - 博客园

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/2 15:08:05

能省一点是一点!这2个免费降AI率的工具,降AI效果也很好!

3个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华
网站建设 2026/3/2 11:37:06

基于java的SpringBoot/SSM+Vue+uniapp的心理咨询预约管理的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录 前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus 系统测试系统测试目的系统功能测试系统测试结论 为什么选择我代码参考数据库参考源码获取 前言 &#x1f31e;博主介绍&#xff1a;✌全网粉丝15W,CSDN特邀作者、211毕业、高…

作者头像 李华
网站建设 2026/2/24 21:23:53

【2025终极测评】10款常见降AI率工具大汇总(含0元免费降AI版本)

&#x1f4a1;写论文最怕什么&#xff1f; 不是查重&#xff0c;而是那句——“AI率过高”。 现在越来越多学校查论文降aigc报告。 我当时AI率高达98%&#xff0c;整个人快崩溃。 为了把那篇论文救回来&#xff0c;我实测了10款热门降ai率工具&#xff0c; 有免费的&#xff0c…

作者头像 李华