自制ESP32下载器
自从接触ESP32之后,就被它优秀的硬件资源与软件开发环境所吸引。为了方便后续基于ESP32的各种制作,我制作了这一款通用的下载器。
从乐鑫 ESP32官方开发板原理图中可以看到,与下载相关的电路除了CP2102N
芯片工作所必须的电路之外,还有两个三极管与两个电阻组成的,控制IO0
与RST
,这部分电路如下图所示:
这部分电路主要是保证串口芯片的RTS
与DTR
引脚均为低时,EN
和IO0
可以释放为高电平。这主要是因为某些串口调试工具在退出时或串口芯片在默认状态下会的将RTS
与DTR
拉低,若没有这两个三极管构成的电路,芯片将一直处于复位状态,无法正常工作。
官方开发板使用了CP2102N
作为USB转串口芯片。除了CP2102N
之外,其实还有许多其他芯片可供选择,如下表所示。
芯片型号 | 最高波特率 | 备注 |
---|---|---|
CH340G | 2000000 | 驱动的CPU占用率较CP2102 高,且供电波动时有蓝屏现象 |
CH343 | 6000000 | 驱动问题同上,提供QFN16 小封装,支持免驱的CDC驱动 |
CP2102 | 921600 | 芯片已经不推荐用于新设计,速度较慢但稳定 |
CP2102N | 3000000 | 有QFN20 、QFN24 与QFN28 三种封装,兼容CP2102 与CP2104 |
CH9102 | 4000000 | 兼容CP2102 ,有QFN24 与QFN28 封装,支持免驱的CDC驱动 |
由于此下载器不需要集成到每一个PCB上,因此我选择了较贵但是更加稳定的CP2102N
。通过实测,波特率4M
与3M
在下载过程中,实际的下载时间并无明显差异,应该是达到了Flash写入速度的瓶颈。
除了USB转串口芯片之外,PCB上还有RX、TX与电源三个LED指示灯与一个复位按键。
下面是PCB的实物图片: