第三章 软件工具链:串口驱动与烧录工具

做嵌入式开发,有一半的时间在跟工具链较劲。这不是夸张,我早期带团队时,新人入职第一周往往不是学代码,而是装驱动、配环境。串口驱动装不上、烧录工具连不上——这些问题几乎每个人都遇到过。

这一章,咱们就把工具链捋清楚。从驱动到烧录工具,我会把常见的坑和我的习惯做法都告诉你。

本章核心脉络:串口驱动(CH340 / CP2102)→ 烧录工具(STM32CubeProgrammer / esptool.py / Arduino IDE)→ 驱动验证 → 常见故障排查

软件工具链知识体系 USB 串口硬件 串口驱动:CH340 / CP2102 / FTDI 驱动验证(设备管理器) 烧录工具 STM32CubeProgrammer ESP32 esptool.py Arduino IDE (及其他厂商工具) 驱动装不上? 先看 VID/PID 对不对

3.1 串口驱动安装:CH340 与 CP2102

串口驱动是烧录的第一步。没有驱动,电脑认不出你的板子。市面上最常见的两种 USB 转串口芯片就是 CH340 和 CP2102。当然还有 FTDI,但前两者在国产开发板上几乎占到了 90%。

CH340 驱动

CH340 是南京沁恒的产品,便宜、量大。淘宝上十几块的 STM32 最小系统板,十有八九用的就是它。

  • Windows:去沁恒官网下载 CH340 驱动,或者直接用驱动精灵。安装后插上板子,设备管理器里会出现 "USB-SERIAL CH340" 的 COM 口。
  • macOS:需要安装 CH340 的 macOS 驱动。注意 macOS Catalina 之后有安全提示,要去「安全性与隐私」里允许加载。
  • Linux:内核自带驱动,插上就能识别为 /dev/ttyUSB0。不需要额外安装。

我的习惯:Windows 下装完 CH340 驱动后,我会立刻去设备管理器看一眼。如果显示的是黄色感叹号,多半是驱动版本不对。换一个旧版本驱动试试,CH340 的驱动兼容性有时候挺玄学的。

CP2102 驱动

CP2102 是 Silicon Labs 的芯片,比 CH340 稳定一些,价格也贵一点。很多正点原子、野火的板子用的就是它。

  • Windows:去 Silicon Labs 官网下载 CP210x 驱动。安装后设备管理器显示 "Silicon Labs CP210x USB to UART Bridge"。
  • macOS:同样需要下载对应驱动。我遇到过 macOS 升级后驱动失效的情况,重新安装一遍就好。
  • Linux:内核自带,即插即用。

注意:CH340 和 CP2102 的驱动不能混用。我曾经见过有人把 CP2102 的驱动强行装给 CH340,结果设备管理器里显示 "Unknown Device"。说白了,芯片型号要对上。

3.2 驱动验证:确认你的串口在工作

驱动装完,怎么知道它真的能用了?别急着打开烧录工具,先做两步验证。

  1. 看设备管理器(Windows)或 ls /dev/tty*(Linux/macOS)。确认出现了对应的 COM 口或 tty 设备。
  2. 用串口助手测试:打开一个串口助手(比如 SSCOM、Putty),选择对应的 COM 口,波特率设 115200,打开串口。如果板子有上电打印信息,你应该能看到乱码或正常输出。

为什么先做这个?因为烧录工具连不上时,你至少能确认是驱动问题还是工具问题。我在项目中遇到过好几次,折腾半天烧录工具,最后发现是驱动没装对——白白浪费了两个小时。

3.3 烧录工具概览

驱动搞定后,就该上烧录工具了。不同芯片厂商有自己的工具,但核心逻辑是一样的:通过串口把固件写到芯片的 Flash 里。

工具名称 适用芯片 操作方式 我的评价
STM32CubeProgrammer STM32 全系列 GUI + 命令行 功能全面,但启动慢
esptool.py ESP32 / ESP8266 命令行 轻量、稳定,我常用
Arduino IDE Arduino 系列 + ESP32 GUI 一键烧录 适合快速验证

3.3.1 STM32CubeProgrammer

ST 官方工具,支持串口、USB DFU、SWD 等多种烧录方式。串口烧录时,需要把 BOOT0 拉高、BOOT1 拉低,让芯片进入系统存储器模式。

基本用法:

# 命令行烧录(串口)
STM32_Programmer_CLI -c port=COM3 -w firmware.hex -v

参数说明:-c port=COM3 指定串口,-w 写入固件,-v 校验。我个人习惯每次都加 -v,烧录完自动校验,省得心里不踏实。

避坑指南:我曾经遇到过 STM32CubeProgrammer 连不上芯片,提示 "No STM32 target found"。检查了半天,发现是 BOOT0 没拉高。嗯,这种低级错误犯过一次就不会再犯了。

3.3.2 ESP32 esptool.py

esptool.py 是乐鑫官方的烧录工具,基于 Python。它轻量、跨平台,而且支持脚本化操作。我经常在 CI 流水线里用它做自动化烧录。

安装:

pip install esptool

烧录命令:

# 擦除 Flash
esptool.py --port COM3 erase_flash

# 烧录固件
esptool.py --port COM3 --baud 921600 write_flash 0x1000 firmware.bin

注意波特率。默认 115200 太慢,我一般用 921600,只要线材质量不太差,都能稳定跑。

重要:ESP32 烧录前需要让芯片进入下载模式。通常是按住 BOOT 键、按一下 EN 键、松开 BOOT 键。这个顺序不能错。我见过有人按了十几次都进不去,最后发现是 BOOT 键没按到底。

3.3.3 Arduino IDE

Arduino IDE 虽然简单,但背后调用的也是 avrdude 或 esptool.py 这类工具。它把底层细节封装了,适合快速原型验证。

用 Arduino IDE 烧录 ESP32 的步骤:

  1. 在「文件 → 首选项」里添加 ESP32 开发板管理器地址。
  2. 在「工具 → 开发板」里选择对应的 ESP32 型号。
  3. 选择正确的 COM 口。
  4. 点击「上传」按钮。

Arduino IDE 会自动处理编译和烧录。但说实话,如果做产品级开发,我还是更推荐用 esptool.py 或 STM32CubeProgrammer——Arduino IDE 的日志输出太简略了,出了问题很难排查。

3.4 常见故障与排查思路

工具链的问题,说来说去就那么几类。我整理了一个速查表,你遇到问题时可以对着看。

现象 可能原因 解决方法
设备管理器无新 COM 口 驱动未安装 / 线材问题 重装驱动,换 USB 线
COM 口有黄色感叹号 驱动版本不匹配 换旧版驱动或官方驱动
烧录工具连不上芯片 BOOT 模式不对 / 波特率不匹配 检查 BOOT 引脚,降低波特率
烧录到一半卡死 电源不稳定 / 线材干扰 换短 USB 线,外接电源
校验失败 Flash 损坏 / 固件地址错误 重新擦除 Flash,检查地址

核心原则:遇到烧录问题,先确认驱动,再确认硬件连接,最后才怀疑工具本身。这个顺序不要搞反。