无需ESP-IDF工具链,在PlatformIO中实现ESP32-S2原生USB调试?
实现ESP32-S2 USB CDC串口输出(PlatformIO + Arduino框架)
1. 配置platformio.ini
在项目配置文件中添加编译宏与板级参数,启用USB CDC并指定引脚:
[env:esp32s2] platform = espressif32 board = esp32s2dev framework = arduino build_flags = -DARDUINO_USB_MODE=1 ; 启用USB CDC模式 -DARDUINO_USB_CDC_ON_BOOT=1 ; 开机自动初始化USB CDC -DARDUINO_USB_DM_PIN=19 ; 指定USB-对应GPIO19 -DARDUINO_USB_DP_PIN=20 ; 指定USB+对应GPIO20 -DCORE_DEBUG_LEVEL=3 ; 可选:设置日志输出级别(1-5,数字越大越详细) ; 若需同时保留UART串口,添加 -DARDUINO_USB_CDC_AND_HMSC=1,此时Serial对应USB CDC,Serial1对应UART
2. 修改Arduino代码初始化USB串口
调整代码逻辑,让日志输出到USB CDC虚拟串口:
#include <Arduino.h> void setup() { // 初始化USB CDC虚拟串口(波特率参数可忽略,USB串口无物理波特率限制) Serial.begin(115200); // 可选:等待主机端打开串口后再输出,避免开机初期日志丢失 while (!Serial) { delay(10); } Serial.println("USB CDC串口已启动"); } void loop() { Serial.println("USB CDC测试输出"); delay(1000); }
说明:启用
ARDUINO_USB_CDC_ON_BOOT=1后,Arduino框架会自动将Serial对象映射到USB CDC,原UART串口需用Serial1(若保留UART功能)调用。
3. 验证烧录与串口输出
- 保持USB连接(你的板子已支持USB烧录,无需额外操作)
- 烧录完成后,在PlatformIO串口监视器中选择对应的USB虚拟串口设备,即可看到实时输出的日志信息
额外提示
- 无需修改分区表:默认分区配置已支持USB CDC功能,无特殊需求无需调整
- 自定义板配置:若有专属board JSON文件,可将引脚与USB宏直接写入配置,避免重复设置
内容的提问来源于stack exchange,提问作者papakpmartin
相关产品推荐
相关产品推荐

