esp32移植TinyUSB库时遇到的问题
前言:
最近想使用 esp32 系列的芯片实现 HID 设备(如键盘、鼠标)的模拟,但是使用 PlatformIO 平台进行开发的过程中遇到了一些问题,下面对其进行记录和总结。
环境配置
硬件
- esp32 devkit 开发板,芯片型号 ESP32-D0WD-V3
Platform IO 配置
1 | [env:esp32dev] |
添加 TinyUSB 库后编译 TinyUSB 例程报错
1 | src/main.cpp:23:5: error: 'TUD_HID_REPORT_DESC_KEYBOARD' was not declared in this scope |
原因
ESP32 Devkit 开发板板载芯片为 esp32-D0WD 系列芯片,不支持 USB 模拟 HID 设备,只能支持蓝牙模拟 HID 设备,ESP32-S2 和 ESP32-S3 支持 USB 模拟 HID 设备
因此 ESP32 Devkit 开发板不支持直接模拟 USB 的 HID 设备,所以该开发板相关头文件中没有定义CONFIG_USB_OTG_SUPPORTED
,导致在 TinyUSB 库的头文件 tusb_config_esp32.h 中只能定义CFG_TUD_ENABLED
宏为 0,这就导致在 Adafruit_TinyUSB.h 中无法包含 HID 相关头文件,从而报错
解决办法
修改 esp32dev 开发板为支持直接通过 USB 模拟 HID 设备的ESP32-S2或S3开发板后,相关的宏 CFG_TUD_ENABLE 为 1,编译就没问题了,如下面图片所示(但是这样需要使用与之匹配的开发板才行,否则会存在问题;不然只能额外采用类似 CH9329 之类的串口转 HID 设备的芯片模块实现 USB 模拟 HID 设备,再不然只能采用蓝牙连接模拟实现 HID 设备)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Thee!
评论