树莓派 RP2040 的规范只列出了一个 USB 1.1 主机或设备的硬件接口,因此开发者Sekigon Gonnoc就决定利用微控制器的可编程 I/O (PIO)给树莓派添加一个额外的 USB 端口,而且他添加的这个端口也可在主机或设备模式下工作。
虽然,目前该端口的 C 语言库仍然还在开发中,但 Sekigon 已经实现了全速 (12 Mbps) 和低速 (1.5Mbps) 主机、全速设备、USB 集线器和多端口支持了。Sekigon甚至还提供了一个演示,用三个“Pico Pico USB”键盘充当 USB 集线器和 HID ,再加一个无线鼠标来显示结果。
该项目使用了一个PIO用作 USB 发送器,使用的是22条指令和一个状态机;另一个 PIO 则用作 USB 接收器,使用的是 31 条指令和两个状态机;另外,该项目还使用了一个用于主机的 1ms 循环定时器和一个用于接收器的 PIO 中断。
如果你们打算尝试该项目,可以在Pico-PIO-USB Github代码仓库中找到通过 PIO 在 RP2040 MCU 上实现额外 USB 端口的代码,甚至还有两个示例,如下所示:
- c USB 主机示例程序,用于打印从设备接收到的 HID 报告
- c HID USB FS 设备示例,每 0.5 秒移动一次鼠标光标
该项目还有另一个进阶示例,即Pico Pico USB板的 QMK 固件。对了,它的硬件键盘似乎也是由 Sekigon Gonnoc 设计的,但我找不到任何有关硬件的信息。目前的情况就是这样,其实在此之前Sekigon Gonnoc也设计过 Pico Micro RP2040 板,并通过Booth.pm出售。Booth网站其实是日本市场上的一个“创作者市场”,其实就有点类似于专门做DIY硬件特卖网站的Tindie,比较不同的是Booth上也有一些艺术家们创作的作品。
本文消息来源于Hackster.io。
文章翻译者:Jacob,嵌入式系统测试工程师、RAK高级工程师,物联网行业多年工作经验,熟悉嵌入式开发、测试各个环节,对不同产品有自己专业的分析与评估。