如何为自定义USB键盘编写固件?

时间:2015-11-02 14:49:59

标签: usb hid custom-keyboard

我有自定义ps2键盘(8x8矩阵) AT89C51ED2 微控制器接口,现在我需要将其更改为USB接口。我一直在研究USB HID类通信的基础知识(USB HID类规范,USB完整版,超越逻辑版),并且已经对它背后的理论有所了解。

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

我一直在寻找具有USB支持的合适微控制器,但没有支持的演示版,任何建议都会有所帮助

1 个答案:

答案 0 :(得分:1)

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

注意:我假设键盘没有某种USB接口芯片,并且USB线的数据线或多或少直接连接到微控制器。

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

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