概要
CH340、CP2102以及一键下载电路
CH340系列
在串口方式下,CH340提供常用的MODEM联络信号,
1、 用于为计算机扩展异步串口
2、或者将普通的 串口设备直接升级到USB总线。
下面摘取手册中较为重要的几句话
封装形式:
1、哪个系列不需要外部晶振?
CH340G/CH340T芯片正常工作需要从XI、XO脚输入外部12MHZ晶振信号
CH340C/N/K/E/X/B 芯片都已内置时钟发生器,无需外部晶体及电容。
2、常用的?
CH340C和CH340N运用多一点
3、MODEM是什么?
MODEM联络指的是调制解调器(Modem),所谓调制,就是把数字信号转换成电话线上传输的模拟信号;解调,即把模拟信号转换成数字信号。合称调制解调器。
在RS-232C串行通信中,联络信号包括
输入:CTS#(清除发送)、DSR#(数据装置就绪)、RI#(振铃指示)、DCD(数据载波检测)
输出:DTR#(数据终端就绪)、RTS#(请求传送)
4、ESP32S3的BOOTMODE模式
这里就涉及到ESP32的BOOTMODE功能,ESP32-S3 共有四个 Strapping 管脚:
Strapping管脚意为捆扎,strapping管脚的功能是
在芯片的系统复位(上电复位、 RTC> 看门狗复位、欠压复位)放开的过程中, Strapping 管脚对电平采样并存储> 到锁存器中,锁存为“0”或“1”,并一直保持到芯片掉电或关闭。
复位释放后, GPIO0 和 GPIO46 共同控制 Boot 模式。
要使用CH340串口下载程序,就需要将GPIO0拉低,使得系统启动模式进入Download Boot模式。
5、举例USB转串口设计
这里借用立创开发板ESP32S3R8的UART设计
| ![]() | ![]() |
由原理图可知,CH340K的RTS#接到了三极管Q1的基极上,DTR#接到了三极管Q2的基极上。
下面是ESP32使用USB(串口下载的流程):GPIO0(默认为高)需要下拉到低电平
此电路为一键下载电路
从ESP32的手册看出:UART的下载方式要求将GPIO0下拉到低电平。烧录完后再拉高GPIO0。
在电脑端使用串口下载器例如STM32Cubeprogrammer,串口下载处可以设置RTS#和DTR#的高低电平。电脑端发送指令给CH340,CH340即可执行指令完成一键下载。
下载步骤是:(CHIP_PU低电平复位,GPIO0低电平进入下载模式)
当RTS#为高有效时,Q1导通,GPIO0= DTR#
当DTR#高有效时,Q2导通,CHIP_PU= RTS#
RTS | DTR | Q1 | Q2 | GPIO0 | CHIP_PU |
0 | 0 | 截止 | 截止 | 1 | 1 |
0 | 1 | 截止 | 导通 | 1 | 0=RST |
1 | 0 | 导通 | 截止 | 0=DTR | 1 |
1 | 1 | 导通 | 导通 | 1=DTR | 1=RST |
下图为CH340的常用一键下载
下图为ESP32官方的下载程序(附上Github开源链接)
esptool/esptool/reset.py at master · espressif/esptool
注意:因为MODEM数据与引脚电平是反相的,所以这里的False实际是1
下载步骤是:
- CH340置 RTS#为 0 , 置DTR#为1,GPIO0为1,CHIP_PU为0,此时单片机复位
- 延时0.1s
- CH340置 RTS#为 1 ,置DTR#为0, 此时DTR低有效,GPIO0 = 0,进入串口下载模式
- 等待reset.delay时间
- 下载完毕后,置DTR#高电平
因为CHIP_PU接了电容的原因,GPIO0会先由1-0,CHIP_PU则要等待电容充电再从0-1,时间常数t = RC = 4.7ms >> 50us
CP2102
性能 | CP2102A | CH340 |
串口波特率 | 50bps~2Mbps | 300bps ~ 1Mbps |
稳定性 | 中高 | 中 |
典型电路设计:
如果要在系统中编程配置ROM,则必须在VPP引脚和地之间添加4.7 μF的电容。在编程操作期间,不应将其他电路连接到VPP,并且VDD必须保持在3.3 V或更高的电压才能成功写入配置ROM。
总结:CP2102A和CH340的用法差不多