不按 BOOT:COM 口反复闪
板子上电后会运行 Flash 里的原程序。如果程序崩溃、看门狗复位、USB CDC 初始化异常,Windows 就会听到反复“叮咚”,设备管理器里 COM 口出现又消失。
SKU 01458 · ESP32-C3 SuperMini
客户反馈“之前可以用,这次四块板插上一直叮咚、COM 口反复闪,换其他主控没问题”。本页按实测现象整理:不按 BOOT 时串口反复出现/消失,按住 BOOT 上电后 COM 口稳定,优先从旧程序复位、下载模式和 Arduino 设置排查。
Quick Facts
Conclusion
这个现象更像“原程序启动后反复复位/USB 反复枚举”,不是一上来就判断四块板全坏。
板子上电后会运行 Flash 里的原程序。如果程序崩溃、看门狗复位、USB CDC 初始化异常,Windows 就会听到反复“叮咚”,设备管理器里 COM 口出现又消失。
BOOT 会让 ESP32-C3 进入下载模式,暂时不跑原程序。若此时 COM 口稳定,说明 USB 口、芯片下载模式和电脑识别大概率正常。
先烧录空程序或 Blink / RGB 测试程序,确认能稳定上传和运行,再接外设或恢复客户自己的程序。
Product
图片用于客户识别板型。不同批次的 Flash 容量、板载灯引脚、丝印细节以实物为准。
| 项目 | 说明 |
|---|---|
| 商品 SKU | 01458 |
| 产品名 | ESP32-C3 SuperMini 开发板(带内存,黑板,排针无焊) |
| 尺寸 | 约 22.5mm × 18mm(按图片标注,批次可能有轻微差异) |
| 供电 | USB Type-C 或板上 5V/3V3 引脚,按实物丝印使用 |
| 下载模式 | 按住 BOOT 上电,或按住 BOOT 后短按 RST/EN |
| 待确认 | Flash 容量、板载灯引脚、当前批次丝印和原厂示例程序 |
外观、丝印布局不一样,但主芯片都是 ESP32-C3,本页排查的 BOOT / 串口跳 / WiFi 发射功率问题是同一颗芯片的通用特性,不是某一块板子独有的——这类小板子只要用的是 同一颗 ESP32-C3,遇到的坑基本是同一套。
| 项目 | 说明 |
|---|---|
| 商品 SKU | 02231 |
| 产品名 | ESP32-C3 PRO MINI 开发板(蓝板,排针无焊,带 IPEX 天线座) |
| 尺寸 | 约 24.1mm × 18mm(按图片标注,批次可能有轻微差异) |
| 跟 01458 的区别 | 板载 PCB 天线换成了 IPEX 座接外接天线,其余排查思路通用 |
| 天线相关提示 | 外接天线信号路径跟板载 PCB 天线不同,本页发射功率排查结论仅供参考,未在 IPEX 天线款上单独实测验证 |
BOOT Mode
ESP32-C3 的启动模式由启动脚决定。官方资料说明,GPIO9 在复位时拉低会进入下载模式;正常高电平时运行 Flash 里的程序。
先断电,避免按钮时序不对。
BOOT 通常接 GPIO9,按住后让芯片复位时进入下载模式。
电脑识别出稳定 COM 口后,再松开 BOOT。
先烧录最小测试程序,再按 RST/EN 运行。
如果按住 BOOT 上电后 COM 口稳定,说明板子的 USB 下载通道基本可用;不按 BOOT 时串口反复闪,更常见是旧程序反复复位、USB CDC 设置不匹配、外设拖电、线材/供电不稳。
Arduino IDE
ESP32-C3 与传统 CH340/CP2102 开发板不完全一样。很多“端口消失、上传失败”其实是开发板型号或 USB CDC 设置没选对。
这条最容易漏:Tools → USB CDC On Boot 不勾 Enabled,串口监视器会完全没有任何输出(只看到一行 ESP-ROM: esp32c3-api1-... 启动信息就没了),很容易误判成代码没跑起来或板子坏了,其实只是这一个菜单项没选对。ESP32-C3 用的是内置 USB Serial/JTAG,跟传统 CH340/CP2102 走法不一样,这一项必须手动开。
| 设置项 | 建议 | 说明 |
|---|---|---|
| 开发板 | ESP32C3 Dev Module / 对应 ESP32-C3 选项 | 不要选普通 ESP32 Dev Module 或 ESP32-S3。 |
| USB CDC On Boot | 可先设 Enabled | 需要用 USB 串口打印时常用;不同核心版本菜单名称可能略有差异。 |
| Upload Mode | UART0 / USB Serial/JTAG 按实际端口 | 如果自动下载失败,用手动 BOOT 模式。 |
| Upload Speed | 先用 115200 或 460800 | 排查阶段不要一开始用太高速率。 |
| Port | 选择按 BOOT 后稳定出现的 COM | Windows 设备管理器里稳定显示后再上传。 |
void setup() {
// 空程序:先确认板子能稳定烧录和运行
}
void loop() {
delay(1000);
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("ESP32-C3 serial test start");
}
void loop() {
static unsigned long n = 0;
Serial.print("running: ");
Serial.println(n++);
delay(1000);
}
WiFi
跟 BOOT、串口跳是两个不同的问题:这里说的是板子本身能正常烧录运行,但用 WiFi 功能时手机搜不到热点,或者连自己家路由器时反复连接失败。
这篇资料对应的完整排查过程(手机搜不到热点 → 定位发射功率 → 改一行代码修复 → 完整配网体验演示)做成了视频,跟着看一遍比读文字更直观: 在 B 站观看视频版
AP 模式:手机 WiFi 列表里搜不到板子发出的热点,或者搜到了连不上、连上秒断。Station 模式:WiFi.begin() 之后一直卡在 WL_DISCONNECTED(状态码 6),哪怕目标路由器信号很强、加密方式是标准 WPA2。
SSID/密码打错、IP 配置冲突、路由器加密方式不兼容、5GHz 频段不支持——这几项都可以用扫描程序(见下方代码)逐一核实,实测中这些往往都是正常的,不是真正原因。
ESP32-C3 SuperMini 用的是板载 PCB 天线,发射功率开到默认最大档(19.5dBm)时,天线阻抗不匹配会被放大,信号反射失真,导致 WiFi 四次握手失败。功率越大不代表信号越好,这块板子恰恰相反。
#include "esp_wifi.h"
// 放在 WiFi.mode() 之后、WiFi.begin() / WiFi.softAP() 之前调用
// AP 模式和 Station 模式都要加这一行,同一个硬件问题两种模式都受影响
esp_wifi_set_max_tx_power(WIFI_POWER_8_5dBm);
降功率前:WiFi Connection Failed! Status: 6,多次重试均失败。
降功率后:Connected | IP: 192.168.31.224 | Signal: -52~-56 dBm,连接后长时间不断线。
#include "WiFi.h"
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
}
void loop() {
int n = WiFi.scanNetworks();
for (int i = 0; i < n; ++i) {
Serial.printf("%-32s | %4ld dBm | CH%2ld\n",
WiFi.SSID(i).c_str(), WiFi.RSSI(i), WiFi.channel(i));
}
delay(5000);
}
WiFi Provisioning
在「WiFi 连不上」排查基础上,做了一版可以直接给客户用的成品配网流程——不用改代码、不用重新烧录,手机操作几步就能让板子连上任意 WiFi。
板子上电后广播 ESP32C3-Scan,不设密码,手机直接连,省掉输密码/密码打错的麻烦——反正这个热点只是临时配网用,开着的时间很短。
打开 http://192.168.4.1,点"开始扫描"看到周围所有 WiFi,点一个(比如客户家路由器),弹出真正的密码输入框(打码显示),输入密码点"连接"。
连接成功后 8 秒自动关闭 ESP32C3-Scan,板子转入客户家网络;账号密码同时存进 NVS,下次开机(包括重新烧录固件)自动用这份记录重连,不用再配一次。
第一版关闭 AP 的代码:
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_STA); // 多写的这一行
实测发现关闭热点后,板子在家庭网络里的 IP 完全联系不上(ping 返回
"无法访问目标主机",curl 无响应)。第一反应容易怀疑路由器或 DHCP 出了
问题,实际是 WiFi.mode(WIFI_STA) 这一行导致的——单天线板子对显式切换
工作模式很敏感,这个切换动作把刚建立好的 STA 连接也一起冲断了。去掉这一行、
只保留 WiFi.softAPdisconnect(true),问题就解决了。
没有只信网页显示,而是从一台通过网线连接同一路由器的电脑上直接跑命令验证, 排除"网页显示是否准确"这层不确定性:
修复前:
curl http://192.168.31.224/status
(无响应,HTTP_STATUS:000)
ping 192.168.31.224
来自 192.168.31.251 的回复: 无法访问目标主机 (100% 丢包)
修复后:
curl http://192.168.31.224/status
{"status":"connected","ip":"192.168.31.224","rssi":-41}
HTTP_STATUS:200
ping 192.168.31.224
来自 192.168.31.224 的回复: 字节=32 时间=112ms TTL=64
来自 192.168.31.224 的回复: 字节=32 时间=127ms TTL=64
来自 192.168.31.224 的回复: 字节=32 时间=57ms TTL=64
数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失)
// 只调用这一行,不要再额外调用 WiFi.mode() 做显式模式切换
WiFi.softAPdisconnect(true);
"开始扫描"按钮文字会跟着状态变:板子已经连过网络后,这个按钮的
用途从"第一次配网"变成"想换个网络才用",页面加载时会先查一次状态,已连接的话
按钮文字自动变成"重新扫描(更换 WiFi)",避免让人误以为还没配置好。
"忘记已保存的 WiFi"按钮:客户路由器换了密码、或者想换个网络时,
点这个按钮清空 NVS 里存的账号密码,重启后回到"等手机配网"的初始状态。
板载灯效测试:网页上有慢闪/快闪/连闪/常亮/熄灭几个按钮,点一下
看板子上的灯是不是立刻跟着变,用来直观验证"手机确实通过 WiFi 在远程控制板子",
不是本地模拟。
Troubleshooting
按客户实际反馈,把最容易误判为“板子坏”的点单独列出来。
优先判断旧程序反复复位或 USB CDC 初始化异常。先按住 BOOT 上电,如果 COM 稳定,马上重新烧录空程序或串口测试程序。
说明下载模式正常,运行用户程序时异常。可能是程序看门狗复位、深睡眠、USB 设置错误、外设拉低电源或启动脚被外设影响。
如果四块都能按 BOOT 进下载模式且 COM 稳定,更像是同一个旧程序、同一套外设接法或同一台电脑/线材环境导致,不要直接判定四块硬件都坏。
普通 ESP32、ESP32-S3、ESP32-C3 不能混选。选错可能导致上传失败、串口不正常、USB CDC 菜单不匹配。
ESP32-C3 有启动配置脚,GPIO9 常用于 BOOT。不要在上电复位时用外设强拉这些脚,避免进错启动模式。
Type-C 线要确认是数据线。只供电不传数据的线会导致电脑没有稳定 COM 口。
排查时先只接开发板,不接传感器、屏幕、舵机、继电器等外设。裸板稳定后再逐个加外设。
确认 Serial Monitor 波特率、USB CDC On Boot、开发板型号和端口。部分程序需要按 RST/EN 后才开始打印。
先确认代码逻辑本身没问题(SSID、密码、IP 配置),如果都正常,大概率是发射功率问题,参考上方「WiFi 热点搜不到 / Station 连不上怎么办」章节,把 esp_wifi_set_max_tx_power 降到 WIFI_POWER_8_5dBm。
用扫描程序确认目标 WiFi 的 RSSI 和加密方式都正常后,问题基本可以定位到发射功率——这跟 AP 模式搜不到热点是同一个硬件原因,解法也一样。
Support
复制下面这段填一下发给客服,我们一次就能定位,不用来回问。
References
技术结论以 Espressif 官方资料为主;SuperMini 板型资料以公开社区资料和实物为辅。