Linux 下 USB 转 I2C、SPI、GPIO

在没有原生gpio等外设的Linux设备上,如PC,各种电视盒子,手机甚至随身WIFI等,想驱动各种外设会略微麻烦,并且但部分单片机外设都不是USB接口的,无法直接驱动。

好在市面上有现成的方案,如CH341A,CH347,他们可以通过驱动,虚拟一个硬件spi\i2c\gpio外设出来,然后像树莓派那样直接访问/dev/i2c-0之类的,直接访问各种外设(官方的驱动:WCHSoftGroup/ch34x_mphsi_master_linux

但这些芯片其实不便宜,限制也多,比如引脚不够多等。

 

网上有其他开源方案:

比如经典的harbaum/I2C-Tiny-USB: Cheap and simple I²C to USB interface,可以USB单片机作为桥接,为PC(WIN/LINUX/MAC等)实现在PC上控制I2C设备

另一个方案:I2C-MP-USB - USB to I2C Interface - fischl.de

以及:dquadros/I2C-Pico-USB: An RP2040 based clone of the i2c-tiny-usb,它参考上面的i2c-tiny-usb,在树莓派pico上实现该功能

立创的开源项目:UK534-USB4I2C:单芯片Tiny-I2C-USB转换器 - 立创开源硬件平台

 

 

我自己让AI实现的方案:
让Py32f002a这种4毛钱的国产32位单片机,通过gpio模拟usb低速设备(xobs/grainuum: Software USB stack),并且作为桥接让Win系统里的WSL直接访问i2c、spi设备等

 MCU_Project/32/Py32/PY32F002A_VSCode_USB_GPIO_I2C_SPI/README.md at main · jeason1997/MCU_Project

 

posted @ 2026-08-12 16:08  JeasonBoy  阅读(2)  评论(0)    收藏  举报