2015-11-02 97 views
0

我有一个自定义的PS2键盘(8×8矩阵)接口与AT89C51ED2微控制器,现在我需要将其更改为USB接口。我一直在研究USB HID类通信的基础知识(USB HID类规范,USB完整版,超越逻辑),并且对它背后的理论有了一点了解。如何编写自定义USB键盘的固件?

但是我无法理解固件部分,我读过Microchip提供的示例源代码的演示小键盘应用程序,但是我无法在代码中理解如何将数据(按键)发送到IN端点以及主机如何通过轮询来读取。 我知道端点是从其中发送数据到主机的缓冲区,但是它是微控制器的寄存器之一,我如何在我的代码中使用它?

而且我一直在寻找合适的微控制器,USB支持,但不支持演示的是可用的,任何建议将有助于

+0

取决于您选择的MCU型号*高度*。供应商在其微控制器中使用许多不同的USB实施。 –

回答

1

AT89C51ED2 datasheet没有提到对USB硬件的支持,所以答案是否定的:一个端点不对应一个硬件寄存器。相反,端点将引用芯片RAM中的一些软件缓冲区,以及一些数据来跟踪端点的状态。每个USB数据包的每一位必须由设备的固件来处理,并且端点是一种完全存在于设备固件中的抽象。

注:我假定键盘没有某种USB接口芯片,并且USB电缆的数据线或多或少直接连接到单片机。

如果找不到键盘的源代码,可以使用开源AVR软件USB实现进行研究。下面是一些有用的链接:

请注意,您正在从事一个先进的项目,如果你不熟悉的AVR,USB,微控制器,逆向工程,和嵌入式开发/调试,首先从简单的开始就可能会有用。