【问题标题】:How to write firmware for a custom USB keyboard?如何为自定义 USB 键盘编写固件?
【发布时间】:2015-11-02 14:49:59
【问题描述】:

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

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

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

【问题讨论】:

  • 高度依赖于您选择的 MCU 变体。供应商在其微控制器中使用许多不同的 USB 实现。

标签: usb hid custom-keyboard


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2019-12-29
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多