|
34095| 0
|
[ESP8266/ESP32] 在 ESP32 S2上使用 USB Host 模块 |

|
这次实验在 ESP32 S2 Saola 开发板上使用前面设计的MicroUSB Host【参考1】。 首先遇到的问题是:ESP32S2 的 SPI 在 Arduino 环境下工作不正常(对于这个问题的分析请参阅【参考2】)。为此,我们需要直接修改 位于 C:\Users\用户名\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.1\libraries\SPI\src\SPI.cpp文件中的如下内容:
接下来修改 USB Host Shield 库文件: 1. USB_Host_Shield_Library_2.0\usbhost.h 这个文件有下面3个地方需要修改: 1.1 这里给出用到的 SCK/MISO/MOSI/SS Pin的编号 1.2 给出SPI需要引脚编号才能正确的进行SPI初始化: 1.3 降低速度(Max3421e最高支持26Mhz,但是因为 ESP32无法分频出26M,所以实际上SPI会以是20M速度工作。但是因为这次实验都是排线,所以频率高了之后会出现通讯错误的问题,为此需要进行降频)到4Mhz。 将文件中 2 USB_Host_Shield_Library_2.0\UsbCore.h 这里给出用到的SS和 INT Pin编号 3.USB_Host_Shield_Library_2.0\avrpins.h 这里主要是声明前面用到的PXX 的定义否则编译会出错 之后使用 USBHIDBootMouse.ino 进行测试: ![]() 运行结果如下: ![]() 关于 USB Host Shield 调试建议如下: 1. 首先跑 board_qc.ino 确定SPI连接是否正确。如果一直有问题,那么是 SPI 不通,需要研究MOSI信号是否正常发送;如果 MOSI/SCLK 都正常但是没有 MOISO 回复,那么请检查 RESET 是否为高; 2. 接下来跑USBHIDBootMouse.ino代码测试,如果有问题,应该是 INT Pin 设置的错误; 3. 如果有线鼠标无法使用,那么可以实验无线鼠标,因为前者要求的功耗比较高,可能你从开发板中拉出来的5V供电不足。 参考: 1. https://mc.dfrobot.com.cn/thread-312057-1-1.html做一个MicroUSB Host 2. https://www.arduino.cn/thread-106240-1-1.htmlESP32 S2 的 SPI |
创客造
编辑选择奖
编辑选择奖
沪公网安备31011502402448© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed