一、认识串口烧录:从入门到实战

大家好,我是你们的嵌入式讲师。今天咱们正式开始《手把手教你串口烧录全流程》的第一章。说实话,串口烧录这活儿,我干了十几年,到现在每次拿到新板子还是习惯先看看串口能不能用。为什么?因为这是最基础、最可靠、也最容易上手的方式。

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. 编译生成 .bin/.hex 文件 2. TX-RX 交叉连接 3. 共地(GND)必须接 4. 设置 BOOT 引脚或按键 5. 选择正确的 COM 口 6. 设置波特率(常用 115200) 7. 点击烧录按钮 8. 等待进度条走完 9. 复位芯片,运行程序 10. 验证串口输出

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 一样。