Skip to content

I2C Over HID、USB HID

Barryblueice edited this page Dec 31, 2025 · 2 revisions

根据Windows精确式触摸板——设备总线连接定义,如果设备通过I2C连接到Host,至少需要5个引脚:

  • 数据(SDA)
  • 时钟(SCL)
  • 中断(INT)
  • 电源(VCC)
  • 接地(GND)

同时手册中建议至少使用400KHz的I2C始终速度且应独享一个I2C控制器,不然可能会导致I2C总线端超量。。

另外手册中也提到了Touchpad I2C Over USB这一情况:

如果决定使用某个 USB 桥将 I²C Windows 精确式触摸板连接到其 Windows 主机,则该桥应使用设备的独特属性(wVendorID、wProductID、wVersionID)将触摸板公开为独特的设备节点。

所以最后开发的时候,我们需要在USB描述符中声明HID TouchPad和Multi-Touch。

要注意的是不要尝试去伪装原有的ELAN触摸板,不然的话可能会加载错误的驱动,最后进入错误的设备路径导致设备无法被识别。

我们需要让Windows相信,这是一个USB HID Touchpad,不是笔记本内建的触摸板,以此来防止驱动栈误判。

而我们ESP32需要把ELAN的I2C Over HID转为USBHID通信,简要概括就是把ELAN的多指状态转为USB HID Touchpad中的多指状态。

Clone this wiki locally