自制ESP32下载器

自从接触ESP32之后,就被它优秀的硬件资源与软件开发环境所吸引。为了方便后续基于ESP32的各种制作,我制作了这一款通用的下载器。

从乐鑫  ESP32官方开发板原理图中可以看到,与下载相关的电路除了CP2102N芯片工作所必须的电路之外,还有两个三极管与两个电阻组成的,控制IO0RST,这部分电路如下图所示:

https://img.yuanze.wang/posts/esp32-flasher/auto-download-circuit.png
自动下载电路

这部分电路主要是保证串口芯片的RTSDTR引脚均为低时,ENIO0可以释放为高电平。这主要是因为某些串口调试工具在退出时或串口芯片在默认状态下会的将RTSDTR拉低,若没有这两个三极管构成的电路,芯片将一直处于复位状态,无法正常工作。

官方开发板使用了CP2102N作为USB转串口芯片。除了CP2102N之外,其实还有许多其他芯片可供选择,如下表所示。

芯片型号 最高波特率 备注
CH340G 2000000 驱动的CPU占用率较CP2102高,且供电波动时有蓝屏现象
CH343 6000000 驱动问题同上,提供QFN16小封装,支持免驱的CDC驱动
CP2102 921600 芯片已经不推荐用于新设计,速度较慢但稳定
CP2102N 3000000 QFN20QFN24QFN28三种封装,兼容CP2102CP2104
CH9102 4000000 兼容CP2102,有QFN24QFN28封装,支持免驱的CDC驱动

由于此下载器不需要集成到每一个PCB上,因此我选择了较贵但是更加稳定的CP2102N。通过实测,波特率4M3M在下载过程中,实际的下载时间并无明显差异,应该是达到了Flash写入速度的瓶颈。

除了USB转串口芯片之外,PCB上还有RX、TX与电源三个LED指示灯与一个复位按键。

下面是PCB的实物图片:

https://img.yuanze.wang/posts/esp32-flasher/board-bare.jpg
裸板

https://img.yuanze.wang/posts/esp32-flasher/board-with-solder-paste.jpg
刷上锡膏

https://img.yuanze.wang/posts/esp32-flasher/board-soldered.jpg
焊接完成的PCB

 PCB工程