ESP32 系列 USB 外设综述:USB-OTG、USB-Serial-JTAG 与 PHY 架构及实战指南 📅 发布时间:2026/9/19 9:58:42 👁 浏览次数: ESP32 系列 USB 外设综述USB-OTG、USB-Serial-JTAG 与 PHY 架构及实战指南【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solution本文基于 esp-iot-solution 仓库的 USB 外设综述文档 及其同目录下的系列指南系统梳理 ESP32-S2/S3/C3/C6/P4 等芯片内置的 USB 控制器、PHY、电气特性与各芯片支持矩阵并结合仓库源码与示例给出固件下载、日志打印、Host/Device 开发、VBUS 检测等实战方法。读完本文你将能够准确选型芯片、正确接线、配置 USB PHY 切换并快速上手 USB Host 与 USB Device 应用开发。一、USB 与 USB-IF 标准背景USBUniversal Serial Bus是一种通用的总线标准用于连接主机Host和外设Device。USB 主机可以通过 USB 接口与 USB 设备连接实现数据传输、电源供给等功能。USB IFUSB Implementers Forum是 USB 标准的制定者它制定了包括 USB 1.1、USB 2.0、USB 3.0 等在内的 USB 标准定义了 USB 接口的物理层、数据链路层、传输层、会话层、表示层等协议以及 USB 设备类Device Class标准。常见的设备类包括HIDHuman Interface Device人机接口设备键盘、鼠标等MSCMass Storage Class大容量存储设备U 盘、读卡器等CDCCommunication Device Class通信设备虚拟串口、Modem 等AudioUSB 声卡、麦克风、扬声器VideoUSB 摄像头乐鑫 ESP32-S2/S3/C3/P4 等芯片均已内置 USB-OTG 或 USB-Serial-JTAG 外设支持各种各样的 USB 应用包括 USB 多媒体类应用、USB 通信类应用、USB 存储类应用、USB 人机交互类应用等。二、USB 电气属性Type-A 接口的 USB 电气属性如下表所示PinNameCable colorDescription1VBUSRed5V2D-WhiteData-0 或 3.3V3DGreenData0 或 3.3V4GNDBlackGround两个关键的工程注意点自供电设备必须检测 VBUS对于自供电设备需要使用 1 个额外 IO 检测 VBUS 电压用于检测设备是否拔出从而实现热插拔。D- / D 接反不会损坏硬件但主机将无法识别因此 PCB 走线与连接器封装设计时需要格外核对这两根差分线。三、USB 控制器家族OTG Full-speed、OTG High-speed 与 USB-Serial-JTAG3.1 USB-OTG Full-speed 控制器USB OTG Full-speed 控制器是指同时具有 USB-OTG、USB Host 和 USB Device 模式的控制器支持模式的协商和切换。它支持 Full-speed12Mbps和 Low-speed1.5Mbps两种速率支持 USB 1.1 和 USB 2.0 协议。ESP-IDF 从 v4.4 开始已经包含 USB Host 和 USB Device 协议栈和各种设备类驱动支持用户二次开发。关于传输速率、内置功能与动态切换的详细说明见 USB-OTG 外设介绍。3.2 USB-OTG High-speed 控制器USB OTG High-speed 控制器同样同时具有 USB-OTG、USB Host 和 USB Device 模式支持模式的协商和切换。它支持 High-speed480Mbps、Full-speed12Mbps和 Low-speed1.5Mbps三种速率支持 USB 2.0 协议。需要留意版本演进ESP-IDF 从 v5.5 开始ESP32-P4 原本独立的 USB PHY 实现已合并至与 S2/S3 共用的 PHY 模块统一驱动结构简化维护。3.3 USB-Serial-JTAG 控制器USB-Serial-JTAG Controller是同时具有 USB Serial 和 USB JTAG 功能的专用 USB 控制器支持通过 USB 接口下载固件、打印 log、CDC 传输和 JTAG 调试。与 USB-OTG 不同它不支持修改 USB 功能、修改描述符等二次开发即它不是一个可编程的通用 USB 控制器而是面向调试与下载场景的固定功能外设。3.4 USB Full-speed PHYUSB Full-speed PHY也称 USB Full-speed Transceiver用于 USB Controller 数字信号到 USB 总线信号电平的转换提供总线驱动能力等。内部 USB Full-speed PHY 连接到外部固定 IO 引脚。PHY 的具体功能、内部/外部 PHY 的使用方式与 GPIO 对应关系见 USB PHY/Transceiver 介绍。四、ESP32-S/P/C 系列 USB 外设支持矩阵下表汇总了 ESP32-S2/S3/C6/C3/C2/ESP32/ESP8266 各芯片对 USB 外设的支持情况√SupportedXNot SupportedUSB OTG High-speedUSB OTG Full-speedUSB-Serial-JTAGFull-speed PHYHigh-speed PHYESP32-P4√√√√√ESP32-S3X√√√XESP32-S2X√X√XESP32-C6XX√√XESP32-C3XX√√XESP32-C2XXXXXESP32XXXXXESP8266XXXXX从矩阵可以得出清晰的选型结论需要 USB Host / Device 二次开发TinyUSB、USB Host Driver选择 ESP32-S2、ESP32-S3 或 ESP32-P4仅需调试下载USB 串口 JTAGESP32-C3、ESP32-C6 即可满足需要最高 USB 性能480Mbps High-speed只有 ESP32-P4 支持。五、各芯片 USB 功能逐代解析5.1 ESP32-S2USB OTG Full-speed Full-speed PHYESP32-S2 内置USB OTG Full-speed Controller和USB Full-speed PHY内部结构如下ESP32-S2 没有 USB-Serial-JTAG 控制器因此其调试下载完全依赖 USB-OTG 提供的 ROM CDC见下文“USB OTG Console”功能。5.2 ESP32-C3USB-Serial-JTAG Full-speed PHYESP32-C3 内置USB-Serial-JTAG Controller和USB Full-speed PHY内部结构如下5.3 ESP32-S3双控制器共享一个 PHYESP32-S3 内置两个 USB 控制器分别是USB OTG Full-speed Controller和USB-Serial-JTAG Controller内置一个USB Full-speed PHY。关键点在于 PHY 的分配内部 USB PHY 默认连接到USB-Serial-JTAG控制器可通过烧写 eFuse 修改默认或配置寄存器动态切换也可以通过增加外部 PHY同时启用两个控制器。内部 USB PHY 的切换详情参考 USB PHY 切换。5.4 ESP32-P4三控制器 三 PHYESP32-P4 内置了三个 USB 控制器分别是USB OTG High-speed Controller、USB OTG Full-speed Controller和USB-Serial-JTAG Controller内置一个USB High-speed PHY与两个USB Full-speed PHY。默认情况下FS_PHY1 连接到 USB 串行/JTAG 控制器FS_PHY2 连接到 OTG_FS。用户可以通过EFUSE_USB_PHY_SEL更改连接关系0FS_PHY1 连接 USB 串行/JTAG 控制器FS_PHY2 连接 OTG_FS1FS_PHY2 连接 USB 串行/JTAG 控制器FS_PHY1 连接 OTG_FS。六、USB-OTG 传输速率与传输类型ESP32-S2/S3/P4 的 USB-OTGFull Speed总线传输速率为 12 Mbps但由于 USB 传输存在校验和同步机制实际有效传输速率低于 12 Mbps具体数值与传输类型相关传输类型控制中断批量同步适用场合设备初始化和管理鼠标和键盘打印机和批量存储流式音频和视频支持低速有有无无校验重传有有有无保证传输速度无无无有使用固定带宽有10%有90%无有90%减少延迟时间无有无有传输的最大尺寸64 字节64 字节64 字节~512 字节每毫秒传输包数量*1191理论有效速率*64000 Bytes/s1216000 Bytes/s512000 Bytes/s对于 ESP32-P4 USB-OTGHigh Speed总线传输速率为 480 Mbps与 Full Speed 相比在传输的最大尺寸、每毫秒传输包数量与理论有效速率上有所不同传输类型控制中断批量同步传输的最大尺寸64 字节1024 字节512 字节1024 字节每微帧传输包数量*6137理论有效速率*49152000 Bytes/s53248000 Bytes/s57344000 Bytes/s补充说明传输速率计算公式传输速率 (Bytes/s) 传输的最大尺寸 × 每微帧传输包数量 × 8000控制传输用于传输设备控制信息包含多个阶段有效传输速率需要按照协议栈的实现来计算若追求有效吞吐批量传输Bulk是 Full-speed 下的最优选择若追求低延迟、固定带宽则应使用同步/中断传输。七、USB-OTG 外设内置功能实战7.1 使用 USB OTG Console 下载固件和打印 LOGESP32-S2/S3 等内置 USB-OTG 外设的芯片ROM Code 中内置了 USB 通信设备类CDC功能该功能可用于替代 UART 接口实现 Log、Console 和固件下载功能。由于 USB OTG Console 默认为关闭状态首次下载固件需要按以下步骤操作在menuconfig中先使能 USB OTG Console 功能然后编译固件手动将芯片的 Boot 控制引脚拉低然后将芯片通过 USB 线连接到 PC进入下载模式。PC 会发现新的串口设备——Windows 为COM*Linux 为/dev/ttyACM*MacOS 为/dev/cu*使用 esptool 工具或直接使用idf.py flash配置设备对应的串口号下载固件。初次下载完成以后USB OTG Console 功能将自动使能直接通过 USB 线连接 PCPC 会发现新的串口设备LOG 数据将从该虚拟串口打印用户无需再手动拉低 Boot 控制引脚使用 esptool或idf.py flash即可下载固件——下载期间esptool 通过 USB 控制协议自动将设备 Reset 并切换到下载模式。7.2 使用 USB OTG DFU 下载固件ESP32-S2/S3/P4 等芯片的 ROM Code 中还内置了 USB DFUDevice Firmware Upgrade功能可实现标准的 DFU 下载模式使用 DFU 下载固件时用户每次都需要手动进入下载模式将芯片的 Boot 控制引脚拉低然后通过 USB 线连接到 PC在工程目录下运行idf.py dfu生成 DFU 固件然后使用idf.py dfu-flash下载固件如果存在多个 DFU 设备使用idf.py dfu-list查看设备列表再使用idf.py dfu-flash --path path指定下载端口。警告对于 ESP32-P4 v3.1 及以上的版本DFU 下载功能存在缺陷可能会导致 DFU 下载失败建议使用 USB Serial/JTAG 下载方式进行固件下载。7.3 使用 USB-OTG 外设进行 USB Host 开发USB-OTG 外设支持 USB Host 功能用户可以通过 USB 接口直接连接外部 USB 设备。ESP-IDF 从 v4.4 版本开始已支持 USB Host Driver可在此基础上开发 USB Class Driver。此外乐鑫已官方支持 USB Host HID、USB Host MSC、USB Host CDC、USB Host UVC 等设备类驱动可直接用于应用开发。USB Host 方案详情见 USB Host 方案。7.4 使用 USB-OTG 外设进行 USB Device 开发USB-OTG 外设支持 USB Device 功能乐鑫已官方适配 TinyUSB 协议栈用户可以直接使用基于 TinyUSB 开源协议栈开发的 USB 标准设备或自定义设备例如 HID、MSC、CDC、ECM、UAC 等。USB Device 方案详情见 USB Device 方案。7.5 动态切换 USB-OTG 外设模式USB-OTG 外设支持动态切换模式用户可以通过动态注册 USB Host Driver 或 USB Device Driver实现 USB-OTG 外设的动态切换。仓库中提供了完整示例examples/usb/otg/usb_host_device_mode_manual_switch演示了 Host / Device 模式的手动切换流程。7.6 主动断开与主机的连接可以通过将 USB OTGVBUSVALID信号拉低主动断开与主机的连接实现 USB OTG 外设的断开。注意如果需要重新挂载设备需要至少等待 10ms。详细实现请参考 USB 自供电设备解决方案。八、USB PHY 使用指南USB PHY/Transceiver 的功能是将 USB 控制器的数字信号转换为 USB 总线信号电平提供总线驱动能力、检测接收错误等。ESP32-S2/S3/P4 芯片已内置 USB PHY用户可直接使用芯片指定的 USB D/D- 与外部 USB 系统通信ESP32-P4 还额外内置 USB High-Speed PHY。此外ESP32-S2/S3 还保留了外部 PHY 的扩展接口。8.1 使用内部 PHY固定 GPIO 一览ESP32-S2/S3/C3 内部集成了 USB PHY无需外接 PHY 芯片即可直接与外部 USB 主机或设备通过 D/D- 连接。但对于集成两个 USB 控制器的芯片如 ESP32-S3 内置 USB-OTG 和 USB-Serial-JTAG两者共用一个内部 PHY同一时间只能有一个工作。内部 USB PHY 对应固定的 GPIODD-ESP32-S22019ESP32-S32019ESP32-C31918ESP32-C61312对于 ESP32-P4内部集成了两个 USB Full-speed PHY 与一个 USB High-speed PHYGPIO 对应关系如下DD-ESP32-P4 FS_PHY12524ESP32-P4 FS_PHY22726ESP32-P4 HS_PHYpin 50pin 49默认情况下FS_PHY1 连接到 USB 串行/JTAG 控制器FS_PHY2 连接到 OTG_FS可通过EFUSE_USB_PHY_SEL更改连接关系。8.2 使用外部 PHYESP32-S2/S3通过增加一个外部 PHY可以实现 USB-OTG 和 USB-Serial-JTAG 两个外设同时工作。ESP32-S2/S3 支持 SP5301 或同等功能的 USB PHY其典型电路图如下注意使用外部 USB PHY 将占用至少 6 个 GPIO。8.3 USB PHY 默认配置与修改方法默认配置对于同时具有 USB-OTG 和 USB-Serial-JTAG 两个外设的芯片默认情况下 USB-Serial-JTAG 与内部 USB-PHY 连接用户可直接通过 USB 接口进行下载或调试无需额外配置如需使用 USB Host Driver 或 TinyUSB 协议栈开发 USB-OTG 应用在协议栈初始化时USB-PHY 连接会自动切换为 USB-OTG用户不必再进行配置。在 USB-OTG 模式下如需使用 USB-Serial-JTAG 的下载功能需要手动 Boot 到下载模式。修改默认配置的方法方法 1寄存器切换USB Host Driver 或 TinyUSB 协议栈内部通过配置 USB PHY 寄存器将内部 USB-PHY 连接切换为 USB-OTG。相关 API 位于 ESP-IDF 的components/esp_hw_support/include/esp_private/usb_phy.h该路径可在本地 ESP-IDF 安装目录中找到方法 2烧写 eFuse烧写efuse_usb_phy_sel位为 1将 USB-PHY 默认连接切换为 USB-OTG。注意仅当需要在Boot 模式下使用 USB-OTG 功能时才需要烧写此 eFuse 位。烧写完成后芯片进入 Boot 模式后将使用 USB-OTG 提供的下载功能例如 USB DFU烧写 eFuse 为 1 后不可恢复为 0。当 USB-PHY 默认连接切换为 USB-OTG 后USB-Serial-JTAG 功能将无法使用风险提示对于 DateCode 2219 生产的 ESP32-S3 模组和开发板PW No. 早于 PW-2022-06-XXXX由于EFUSE_DIS_USB_OTG_DOWNLOAD_MODEBLK0 B19[7]已被烧录为 1USB OTG 下载被禁用如果再烧写efuse_usb_phy_sel为 1将导致芯片进入 Boot 模式后USB-Serial-JTAG 和 USB-OTG 下载功能均无法使用。九、USB-Serial-JTAG 外设深入集成了 USB-Serial-JTAG 外设的 ESP32 系列芯片如 ESP32-S3、ESP32-C3、ESP32-P4融合了 USB-to-serial 和 USB-to-JTAG 功能提供与主机 PC 的直接 USB 连接支持固件下载、基于 JTAG 的调试和系统控制台输出。详见 USB-Serial-JTAG 外设介绍。9.1 驱动安装Linux 和 MacOS 系统下无需手动安装驱动Windows 10 及以上系统联网将自动安装驱动Windows 7/8 系统需要手动安装驱动可使用 ESP-IDF Windows Installer 勾选 USB-Serial-JTAG 驱动安装。若安装失败可使用 Zadig 工具安装对USB JTAG/serial debug unit (Interface 0)选择usbser或USB Serial (CDC)驱动对USB JTAG/serial debug unit (Interface 2)选择WinUSB驱动。外设接入 PC 后设备管理器将新增两个设备Interface 0 为串口、Interface 2 为 JTAG。9.2 下载固件默认情况下USB-Serial-JTAG 下载功能处于使能状态直接使用 USB 线连接 PC再用 esptool或idf.py flash配置对应串口号即可下载固件。下载期间esptool 通过 USB 控制协议自动将设备 Reset 并切换到下载模式如果应用程序将 USB-Serial-JTAG 对应的 USB 引脚用作其它功能如普通 GPIO 或其它外设 IOUSB-Serial-JTAG 将无法与 USB 主机建立连接用户必须通过 Boot 控制引脚手动将设备切换到下载模式再使用 esptool 下载固件因此硬件设计时应引出 Boot 控制引脚避免应用程序占用 USB 引脚后无法自动进入下载模式默认情况下通过 USB 接口下载不同的芯片COM 号会递增可能对量产造成不便可参考 阻止 Windows 依据 USB 设备序列号递增 COM 编号 解决。9.3 JTAG 调试与系统 LOGJTAG 调试仅需 USB 线连接 PC使用 OpenOCD 工具即可调试代码打印系统 LOG通过menuconfig → Component config → ESP System Settings → Channel for console secondary output配置 USB-Serial-JTAG LOG 功能的使能状态。使能后使用idf.py monitor或其它串口工具打开对应串口号即可打印系统 LOG。需要注意USB-Serial-JTAG仅在主机接入后才会打印 LOG主机未接入时不会被初始化、不会打印 LOGUSB-Serial-JTAG LOG 功能无法在睡眠模式包括 deep sleep 和 light sleep下使用如需要在睡眠模式下打印 LOG请使用 UART 接口。9.4 将 USB 引脚用作普通 GPIOUSB D 接口默认上拉 USB 电阻该电阻会导致 USB D 引脚常为高电平因此用作 GPIO 时需将其禁用ESP-IDF v4.4 及以后版本的 GPIO 驱动默认会禁用 USB D 上拉电阻使用 GPIO 驱动时无需额外配置也可手动修改寄存器USB_SERIAL_JTAG.conf0.dp_pullup 0;禁用上拉。上电时序注意USB D 引脚的上拉电阻在上电时刻即存在软件禁用之前 D 已被拉高因此 D 作为 GPIO 时初始阶段为高电平。如果应用需要上电后 D 立即为低电平需要在硬件设计时将 D 引脚通过外部电路拉低。若希望再次恢复 USB-Serial-JTAG 功能可参考如下代码重新配置 PHY 与 D 上下拉#include soc/soc_caps.h #include soc/usb_serial_jtag_reg.h #include hal/usb_serial_jtag_ll.h SET_PERI_REG_MASK(USB_SERIAL_JTAG_CONF0_REG, USB_SERIAL_JTAG_PAD_PULL_OVERRIDE); CLEAR_PERI_REG_MASK(USB_SERIAL_JTAG_CONF0_REG, USB_SERIAL_JTAG_DP_PULLUP); SET_PERI_REG_MASK(USB_SERIAL_JTAG_CONF0_REG, USB_SERIAL_JTAG_DP_PULLDOWN); vTaskDelay(pdMS_TO_TICKS(10)); #if USB_SERIAL_JTAG_LL_EXT_PHY_SUPPORTED usb_serial_jtag_ll_phy_enable_external(false); // Use internal PHY usb_serial_jtag_ll_phy_enable_pad(true); // Enable USB PHY pads #else usb_serial_jtag_ll_phy_set_defaults(); // External PHY not supported. Set default values. #endif CLEAR_PERI_REG_MASK(USB_SERIAL_JTAG_CONF0_REG, USB_SERIAL_JTAG_DP_PULLDOWN); SET_PERI_REG_MASK(USB_SERIAL_JTAG_CONF0_REG, USB_SERIAL_JTAG_DP_PULLUP); CLEAR_PERI_REG_MASK(USB_SERIAL_JTAG_CONF0_REG, USB_SERIAL_JTAG_PAD_PULL_OVERRIDE);十、自供电设备的 VBUS 检测按照 USB 协议要求USB 自供电设备必须通过检测 5V VBUS 电压来判断设备是否拔出进而实现热插拔。对于主机供电设备由于主机 VBUS 断电后设备直接掉电关机无需实现该逻辑。由于 ESP32-S2/S3/P4 内部 USB PHY 不支持硬件检测逻辑该功能需要借助 ADC/GPIO 由软件实现其中使用 GPIO 检测最为简便。实现方法见 USB 自供电设备解决方案要点如下硬件上需要额外占用一个 IO任意指定特殊引脚除外通过两个电阻分压例如两个 100KΩ与芯片相连ESP32-S2/S3 IO 最大可输入电压为 3.3VESP-IDF 4.4 及更早版本在tinyusb_driver_install之后调用usbd_vbus_detect_gpio_enable函数使能 VBUS 检测该函数将 VBUS 检测 GPIO 分别连接到USB_OTG_VBUSVALID_IN_IDX、USB_SRP_BVALID_IN_IDX、USB_SRP_SESSEND_IN_IDX三个内部信号ESP-IDF 5.0 及以上版本将检测 IO 初始化为 GPIO 输入模式然后直接配置到tinyusb_config_t中#define VBUS_MONITORING_GPIO_NUM GPIO_NUM_4 const tinyusb_config_t tusb_cfg { .device_descriptor descriptor_config, .string_descriptor string_desc_arr, .string_descriptor_count sizeof(string_desc_arr) / sizeof(string_desc_arr[0]), .external_phy false, .configuration_descriptor desc_configuration, .self_powered true, .vbus_monitor_io VBUS_MONITORING_GPIO_NUM, }; ESP_ERROR_CHECK(tinyusb_driver_install(tusb_cfg));若使用原生 TinyUSB 开发则需要在 Phy 初始化阶段进行配置const usb_phy_otg_io_conf_t otg_io_conf USB_PHY_SELF_POWERED_DEVICE(VBUS_MONITORING_GPIO_NUM); phy_conf.otg_io_conf otg_io_conf; usb_new_phy(phy_conf, s_phy_hdl);十一、基于 USB-OTG 的 Host / Device 解决方案11.1 USB Host 方案概览ESP32-S2/S3/P4 等芯片基于 ESP-IDF 的 USB 主机协议栈和各种主机类驱动可连接多种 USB 设备仓库文档 USB Host 方案 总结了以下成熟方案ESP USB Camera 视频方案连接摄像头模组实现 MJPEG 视频流最高支持 480×80015fpsFull-SpeedESP32-S2/S3与 1080×192060fpsHigh-SpeedESP32-P4适用于猫眼门铃、智能门锁、内窥镜、倒车影像等场景。对应示例usb/host/usb_camera_mic_spkUSB 摄像头 WiFi 图传、usb/host/usb_camera_lcd_displayUSB 摄像头 LCD 本地刷屏ESP32-P4 请使用usb_host_uvc组件支持 MJPEG、YUY2、H264 与 H265 格式ESP USB Audio 音频方案连接 USB 音频设备实现 PCM 音频流支持多路 48KHz 16bit 扬声器和麦克风、音量与静音控制、动态修改采样率可与 USB Camera 同时工作适用于音频播放器、门铃对讲等场景。对应示例usb/host/usb_audio_playerMP3 音乐播放器 USB 耳机ESP USB 4G 联网方案连接 4G Cat.1/Cat.4 模组实现 PPP 拨号上网支持 4G 转 Wi-Fi 热点、NAPT、电源管理、网络自动恢复、卡检测与信号质量检测适用于物联网网关、MiFi、智慧储能等场景。对应示例usb/host/usb_cdc_4g_module、usb/host/usb_rndis_4g_module、usb/host/usb_ecm_4g_moduleESP USB 存储方案连接标准 U 盘兼容 USB3.1/3.0/2.0挂载到 FatFS 文件系统默认支持最大 32G支持热插拔、Fat32/exFat 格式、U 盘 OTA适用于广告灯牌、考勤机、记录仪等场景。U 盘 OTA 组件见components/usb/esp_msc_otaESP USB Hub 方案通过 USB Hub 连接多个 USB 设备实现多设备协同工作如双摄像头采集、音视频同步处理。对应示例usb/host/usb_hub_dual_camera。11.2 USB Device 方案概览结合 TinyUSB 协议栈和设备类驱动USB Device 方案 总结了以下成熟方案USB 音频设备方案UAC 2.0作为麦克风或扬声器接入 PC支持多种音频格式和采样率芯片支持 ESP32-S2/S3/P4USB 视频设备方案UVC 1.5作为虚拟摄像头设备支持同步和批量两种传输模式可应用于 USB 门铃摄像头、USB Wi-Fi 双模网络摄像头。对应示例examples/usb/device/usb_webcamUSB 存储设备方案MSC结合 Wi-Fi 构建无线共享存储设备USB 无线 U 盘、读卡器等支持 USB - Wi-Fi 双向访问、多设备接入、模拟 U 盘。对应示例examples/usb/device/usb_msc_wireless_diskUSB HID 设备方案HID作为键盘、鼠标、游戏手柄等设备支持自定义 HID 设备、USB HID 与 BLE HID 双模。对应示例examples/usb/device/usb_hid_device、examples/usb/device/usb_surface_dial、examples/keyboard客制化键盘U 盘拖拽升级esp-tinyuf2基于 esp-tinyuf2 将设备模拟为虚拟 U 盘支持拖拽 UF2 固件实现 OTA并可将 NVS 数据映射为 U 盘文件以便修改。对应示例examples/usb/device/usb_uf2_ota、examples/usb/device/usb_uf2_nvsUSB 扩展屏方案通过 USB 总线将设备作为扩展副屏一根 USB 线同时传输音频、触摸信息与视频图像可应用在电脑屏幕、签字屏等场景。上位机侧采用 Windows IDDIndirect Display Driver驱动获取桌面图像USB 速率受限时驱动会先将图像压缩为 JPEG 等格式再通过 USB vendor 接口传输每一帧图像带 16 字节头宽高、格式、长度、压缩类型等。对应示例examples/usb/device/usb_extend_screen。十二、USB VID / PID 与认证VID 和 PID 是 USB 设备的唯一标识符一般由 USB-IF 分配详细说明见 USB VID 和 PID。免申请 VID/PID 的情况产品使用 USB Host 模式无需申请 VID 和 PID产品使用 USB Device 模式、使用乐鑫的 VID0x303A、并基于 TinyUSB 协议栈开发 USB 标准设备则无需申请 PID使用 TinyUSB 默认 PID 即可。需要申请时使用 USB-IF 分配的 VID需注册成为 USB-IF 成员再按 USB-IF 流程申请 VID 和 PID使用乐鑫的 VID可直接申请 PID免费。注意使用乐鑫的 VID 和 TinyUSB 的默认 PID并不代表产品符合 USB 规范仍需要进行 USB 认证。USB 认证由 USB-IF 管理是可选过程但在产品标榜符合 USB 规范并使用官方 USB 标志、或宣传资料中提及 USB 认证时必须进行认证。此外USB 信号指令测试的详细步骤与固件请参考 USB 信号质量测试。十三、USB Type-C 硬件设计要点针对新一代产品的 USB 接口设计USB Type-C 硬件设计指南 提供了完整参考核心要点如下引脚与连接器Type-C 的 USB 2.0 信号在 A6/B6D与 A7/B7D-CC1/CC2 用于插拔检测、供电协议信息传输与 Vconn 功能SBU1/SBU2 仅分配给备用模式使用。连接器有 24Pin全功能、16Pin/12PinUSB 2.0、6Pin仅电源等配置可按应用需求选择。角色识别与供电Type-C 接口的供电角色通过 CC 线检测——供电方加 Rp 上拉耗电方加 Rd 下拉通常 5.1KΩ。不使用 USB PD 时最高支持 5V/3A15WRp 阻值决定载流能力默认功率 56KΩ5V 驱动/ 36KΩ3.3V 驱动、1.5A 用 22KΩ/12KΩ、3A 用 10KΩ/4.7KΩ。若功率需求超过 15W、需要 DisplayPort 等替代功能或电源/数据角色不匹配则需要 USB PD 控制器。PD 协商USB PD 通过 CC 线上的 BMC 信号300kbps±10%协商电压电流流程为 Source_Capabilities → Request → Accept/Reject → PS_Rdy。当前 ESP32 系列芯片无法解析 USB PD 协议需采用外置 PD 控制器如 IP2721实现特定电压请求。USB 2.0 差分线Type-C 有两组 D/D-A6/A7 与 B6/B7为保证任意插入方向正常传输需将 A6 与 B6 连在一起作为 DA7 与 B7 连在一起作为 D-。SuperSpeed 差分线TX/RX 对因当前 ESP32 系列不支持 USB 3.x建议悬空不连接。Device/Host 设计Device 方案中 CC1/CC2 以 5.1KΩ 下拉Host 与 DRP 方案选用 TI TUSB320LA 等 CC 逻辑与端口控制器通过 I2C 配置在 DFP/UFP/DRP 角色间切换。量产产品必须考虑过流与过温保护可选用带可调电流限制阈值的 USB 端口电源开关芯片来简化 Host VBUS 设计。十四、总结与进一步阅读ESP32 系列芯片通过 USB-OTGFull-speed / High-speed、USB-Serial-JTAG 与内置 PHY 的组合覆盖了从低成本调试下载C3/C6到高性能 USB Host/Device 应用S2/S3/P4的完整需求。选型时先依据上文的支持矩阵确定所需控制器类型再根据 D/D- 固定 GPIO 设计硬件并留意 S3 双控制器共用 PHY 与 P4 的 eFuse 切换关系。软件开发层面USB Host 走 ESP-IDF USB Host Driver 官方类驱动USB Device 走 TinyUSB 协议栈均可参考本文所述方案与仓库示例快速落地。本系列还包含以下可继续深入阅读的文档均位于docs/zh_CN/usb/usb_overview/USB-OTG 外设介绍传输类型与速率、OTG Console/DFU 下载、Host/Device 开发USB PHY/Transceiver 介绍内部/外部 PHY、GPIO 对应、eFuse 切换USB-Serial-JTAG 外设介绍驱动安装、固件下载、JTAG 调试、LOG、GPIO 复用USB 自供电设备解决方案VBUS 检测与热插拔实现USB Host 方案 与 USB Device 方案Camera/Audio/4G/存储/HID/U 盘 OTA 等应用USB Type-C 硬件设计指南Type-C 引脚、角色识别、PD 协商与参考设计USB VID 和 PIDVID/PID 申请与 USB 认证【免费下载链接】esp-iot-solutionEspressif IoT Library. IoT Device Drivers, Documentations and Solutions.项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solution创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考