在 ESp32C3 上使用 USB Host

2023-05-278305
AI 快速预览详细 收起
本文介绍了如何在 Beetle ESP32 C3 上使用 USB Host 读取鼠标信息。首先,推荐使用 Pin21 输出 Debug 信息,以方便调试。如果遇到无法刷新的问题,可以通过按下 Boot 和 Reset 按钮的特定顺序来解决。通过这些步骤,用户可以轻松实现 USB Host 功能,并读取 USB 鼠标的信息。
最近入手了BeetleESP32 C3SKU:DFR0868),整体非常小巧。这次尝试用它搭配之前的Micro USB Host 【参考1】读取USB 鼠标信息。
第一次使用 ESP32 C3,有如下需要注意的地方:
1.     推荐使用Pin21 输出 Debug 信息。就是说在使用的时候最好外部连接一个串口转USBDongle接收信息
在 ESp32C3 上使用 USB Host图1


1.     在使用中出现过无法刷新的情况,恢复方法是:先按下Boot按钮,然后再按下 Reset按钮,最后松开Reset按钮,再松开 Boot按钮,再次刷新即可;
硬件连接如下:

  

  名称
  
  
  
Beetle ESP32 C3
  
Beetle ESP32 C3
名称
INT
IO0
IO6
MOSI
GND
GND
IO5
MISO
MD-
USB 母头 D-
IO7
SS
MD+
USB 母头 D+
IO4
SCLK
VBCOMP
N/A
3.3V
RESET
GND
GND
3.3V
3.3V


之后需要对USBHost 库进行修改,修改位置如下:
1.     \USB_Host_Shield_Library\UsbCore.h

  1. <div><p class="MsoNormal">#elif defined(ESP32)<o:p></o:p></p>
  2. <p class="MsoNormal">#ifdef CONFIG_IDF_TARGET_ESP32C3<o:p></o:p></p>
  3. <p class="MsoNormal">typedef MAX3421e<P7, P0> MAX3421E; // ESP32C3 boards
  4. SS INT<o:p></o:p></p>
  5. <p class="MsoNormal">#else<o:p></o:p></p>
  6. <p class="MsoNormal">typedef MAX3421e<P5, P17> MAX3421E; // ESP32 boards<o:p></o:p></p>
  7. <p class="MsoNormal">#endif<o:p></o:p></p>
  8. <p class="MsoNormal">#elif (defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__))<o:p></o:p></p></div><div></div>
复制代码
2. \USB_Host_Shield_Library\avrpins.h
  1. // Pinout for ESP32 dev module
  2. MAKE_PIN(P0, 0);
  3. MAKE_PIN(P7, 7);        //LABZDebug
  4. MAKE_PIN(P1, 1); // TX0
  5. MAKE_PIN(P10, 10); // TX1
  6. MAKE_PIN(P3, 3); // RX0
  7. MAKE_PIN(P21, 21); // SDA
  8. MAKE_PIN(P22, 22); // SCL
复制代码
之后,可以运行库自带的测试例子 \USB_Host_Shield_Library\examples\HID\USBHIDBootMouse

最终的测试板子:
在 ESp32C3 上使用 USB Host图2

运行结果如下,可以看到正常得到了鼠标数据:
在 ESp32C3 上使用 USB Host图3

参考:







创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(5)
花生编程
花生编程
赞赞赞赞赞!泰裤辣!
花生编程
花生编程
厉害厉害
三春牛-创客
三春牛-创客
赞赞赞赞赞!!主板也可以接鼠标了!
三春牛-创客
三春牛-创客
厉害厉害
Eason_QAQ
Eason_QAQ
你好,我使用esp32s3 编译 USB_Host_Shield_Library的例程 提示 Compilation error: 'USB' does not name a type 请问怎么解决
zoologist
zoologist
作者
回复Eason_QAQ
你切换到 uno 再编译一次看看?
感觉是你usb host 库有问题
- 没有更多了 -