串口一键下载电路(CH340)的理解

本文详细介绍了STM32微控制器通过串口实现代码下载的过程。利用MCUISP工具控制CH340芯片的DTR#和RTS#引脚,通过改变电平状态来切换STM32的启动模式,实现从系统存储器启动并完成代码的下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图:为原子的串口下载电路 
这里写图片描述  
在CH340的数据手册上有引脚的介绍以及作用: 
这里写图片描述  
这两个引脚: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#在变成高电平。 
如果DTR#先变成高电平,那么会在一次产生复位。
### ESP32-S3与CH340E之间正确接线方法 对于ESP32-S3与CH340E之间的连接,考虑到CH340E只有一个可控制的输出信号RTS#,而缺少DTR#信号线的情况,在设计电路时需采用特定的方法来实现对ESP32-S3的有效编程。 #### 接线配置说明 - **VCC (CH340E)** 连接到 **3.3V (ESP32-S3)** - **GND (CH340E)** 连接到 **GND (ESP32-S3)** - **TXD (CH340E)** 连接到 **RXD (GPIO3/UART1_RXD, ESP32-S3)** - **RXD (CH340E)** 连接到 **TXD (GPIO1/UART1_TXD, ESP32-S3)** 针对仅有的RTS#信号用于同时控制复位(NRST)和引导模式选择(BOOT0): - RTS# 需要经过电容隔离后连接至 NRST 引脚。 - 同样利用该RTS#, 经由三极管配合额外设置的一个电容器向 BOOT0 提供电压。这允许通过调整拉低 RT S# 的持续时间长短来决定是否激活 ISP 模式[^4]。 具体来说: - 当需要使能ISP模式时,即希望启动从串口加载固件的过程,则应适当延长拉低RTS#的时间以便给连接于BOOT0上的电容充足电量使其维持高电平状态直到完成复位动作; - 若不打算进入ISP模式而是正常运行程序,则只需短暂地下拉RTS#即可确保BOOT0处于低电平从而跳过ISP过程直接执行已存储的应用代码。 这种设计方案巧妙地解决了因缺乏独立DTR#引脚所带来的挑战,并且能够兼容大多数开发环境下的自动上传流程需求。 ```cpp // 示例:Arduino IDE 中定义的板级参数文件片段可能如下所示 boards.txt: esp32s3.upload.protocol=esptool esp32s3.upload.tool=esptool_py esp32s3.upload.maximum_size=1966080 esp32s3.upload.speed=921600 esp32s3.build.board=ESP32S3 ... ``` 上述代码展示了如何在Arduino环境中指定适用于ESP32-S3的目标平台及其通信速率等重要属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值