一、认识串口烧录:从入门到实战
大家好,我是你们的嵌入式讲师。今天咱们正式开始《手把手教你串口烧录全流程》的第一章。说实话,串口烧录这活儿,我干了十几年,到现在每次拿到新板子还是习惯先看看串口能不能用。为什么?因为这是最基础、最可靠、也最容易上手的方式。
1.1 什么是串口烧录
串口烧录,说白了就是通过串行通信接口,把编译好的固件(也就是咱们写的程序)下载到芯片的 Flash 或 ROM 里。你想想看,芯片出厂时里面是空的,它得知道上电后该干什么。串口烧录就是给它“注入灵魂”的过程。
具体怎么做的呢?电脑通过 USB 转串口工具(比如 CH340、CP2102)连接到目标板,然后利用芯片内部 Bootloader(引导程序)接收数据,写入存储器。整个过程不需要 JTAG、不需要仿真器,一根 USB 线就能搞定。
核心要点:串口烧录依赖芯片出厂自带的 Bootloader,所以只要芯片没坏、串口引脚没接错,基本都能成功。
1.2 为什么用串口烧录
我刚开始做项目时也纳闷:明明有 JTAG、SWD 这些更快的调试接口,为什么大家还死守着串口不放?后来踩过几次坑才明白——
- 成本低:串口芯片几毛钱,USB 转串口模块十几块,几乎零门槛。
- 通用性强:几乎所有 MCU 都支持串口烧录,STM32、ESP32、Arduino 无一例外。
- 接线简单:就三根线——TX、RX、GND,不会接错(嗯,其实接反过的人不少)。
- 无需额外硬件:不用买仿真器,不用装驱动(Windows 可能还是要装一下 CH340 驱动)。
- 适合量产:工厂里经常用串口批量烧录,效率高、成本低。
我的经验:有一次在客户现场调试,JTAG 死活连不上,最后发现是仿真器坏了。还好带了 USB 转串口模块,用串口烧录临时救场。从那以后,我包里永远备着一根串口线。
1.3 串口烧录的典型应用场景
咱们来看看三个最常用的平台,它们虽然都是串口烧录,但细节上各有门道。
STM32:最标准的串口烧录
STM32 的串口烧录依赖芯片内部的 System Memory Bootloader。上电时把 BOOT0 拉高、BOOT1 拉低,芯片就会进入烧录模式。我用的是 STM32CubeProgrammer 这个工具,当然也可以用命令行工具。
# 以 STM32F103 为例,使用 STM32CubeProgrammer CLI
STM32_Programmer_CLI -c port=COM3 -w firmware.bin 0x08000000
这里要注意:波特率默认 115200,但有些老芯片只支持 57600。我遇到过客户用 115200 死活烧不进去,降到 57600 一次成功。
ESP32:自动下载电路
ESP32 的串口烧录更智能。它通过 DTR 和 RTS 信号自动控制 EN 和 GPIO0,实现一键下载。你只需要按住 BOOT 键、点下载、松开,或者直接用工具自动控制。
# 使用 esptool.py 烧录 ESP32
esptool.py --chip esp32 --port COM3 write_flash 0x1000 firmware.bin
避坑指南:我曾经因为 USB 转串口模块的 DTR/RTS 信号没接对,导致 ESP32 一直无法进入下载模式。后来发现是模块的 DTR 和 RTS 引脚标反了,交换一下就好了。
Arduino:最傻瓜化的串口烧录
Arduino 的串口烧录可以说是“零配置”。插上 USB 线,选好板子和端口,点上传就行。它的 Bootloader(比如 Optiboot)会在上电后等待几秒,如果收到烧录指令就进入下载模式,否则直接运行用户程序。
// Arduino IDE 自动处理一切,你只需要点这个按钮
// 工具 -> 开发板 -> Arduino Uno
// 工具 -> 端口 -> COM3
// 然后点击上传按钮
说实话,Arduino 的串口烧录体验是最好的,但也最容易让人忽略底层原理。我建议初学者还是从 STM32 开始,手动拉一下 BOOT 引脚,才能真正理解串口烧录的流程。
1.4 串口烧录的核心流程
不管用哪个平台,串口烧录的流程都大同小异。我画了一张图,帮你理清思路:
1.5 串口烧录 vs 其他烧录方式
为了让你更直观地了解串口烧录的位置,我整理了一个对比表:
| 对比项 | 串口烧录 | JTAG/SWD | USB DFU |
|---|---|---|---|
| 硬件成本 | 极低(几块钱) | 中等(几十到几百) | 低(需芯片支持) |
| 速度 | 慢(115200bps) | 快(MHz级别) | 中等(USB 2.0) |
| 调试功能 | 无 | 支持断点、单步 | 无 |
| 接线数量 | 3根(TX/RX/GND) | 4-5根 | 1根(USB线) |
| 适用场景 | 量产、现场升级 | 开发调试 | 产品升级 |
我的建议:如果你是初学者,或者在做产品量产,串口烧录是首选。如果你在开发阶段需要调试,那就用 JTAG/SWD。两者互补,不冲突。
1.6 本章小结
好了,第一章的内容就到这里。咱们认识了串口烧录是什么、为什么用它、以及它在 STM32、ESP32、Arduino 上的具体应用。记住一句话:串口烧录是嵌入式工程师的“基本功”,就像程序员会写 Hello World 一样。