This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C1294NCPDT:使用 TivaWare USB 库创建定制 HID 器件

Guru**** 2049300 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/914001/ccs-tm4c1294ncpdt-creating-custom-hid-device-using-tivaware-usb-library

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

我正在尝试使用 TivaWare USB 库编写定制 HID USB 器件。  

我将使用 HIDKeyboard 示例和 此论坛帖子作为起点。  

在帖子中、另一个用户为创建"通用"HID 设备提供了一些代码库:
https://gist.github.com/duanebester/068c87d84d8708603d6c
https://gist.github.com/duanebester/771d683e0c76f1fe2ca1

我已将这些内容整合到我的开放测试应用中(构建于 hello TivaWare 示例)。  目前、该应用程序在编译和运行时不会产生任何我可以看到的错误、但在设备管理器中看不到该设备、因此我怀疑 USB 设备初始化期间出现了中断。  我已经尝试过单步执行文件可以跟踪所有函数调用、但到目前为止我还没有运气。  是否有人有幸使用 TivaWare 库或任何其他库构建定制 HID 器件?

我已检查未修改的键盘示例是否正常工作、并在 Windows 中检测到。


我在下面添加了我的项目。

e2e.ti.com/.../1616.hello.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Erik、

    我要在对 MAP_IntMasterEnable()的调用中添加一个值;此外,我看不到被调用,并且有几个中断设置。

    您是否在 UART 上收到有关"主机已连接..."的消息? 这将指示器件是否正在连接到 Windows、只是没有枚举、或者代码是否甚至没有与 Windows 通信。

    根据所发生的情况、您可能需要使用 USB 分析仪来了解中断过程中的位置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    程序从不接收主机连接事件、因此在 UART 消息之前始终在 while 循环中挂起。  我不确定在哪里MAP_IntMasterEnable(); 使用、我已经浏览过键盘示例、我没有看到过调用此函数、是否应该在主循环开始附近调用它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Erik、

    我将在以下之后添加它:

    //
    //将系统节拍设置为每秒触发100次。
    //
    MAP_SysTickPeriodSet (ui32SysClock / SYSTICKS_PER_second);
    map_SysTickIntEnable();
    map_SysTickEnable(); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我添加了该行、但它仍然无法从主机接收到连接事件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Erik、

    在这种情况下、您需要获取 USB 分析器、以检查正在交换的信息以及枚举过程中自定义 HID 设备无法满足 Windows 对 USB 设备的期望。 遗憾的是、由于我只是一名器件专家、我对定制 HID 等接口的 USB 枚举要求没有深入的了解、因此我实际上无法提供太多指导。 也许另一个社区成员能够提供帮助...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Erik Kinstler"]

    好的、我添加了该行、但它仍然无法从主机接收到连接事件。

    [/报价]

    Erik、

    "键盘 HID"和"通用 HID"之间的唯一区别是报告描述符。 "使用页面"告诉主机报告 符合标准设备(如键盘或鼠标)或定制/供应商特定设备。 主机使用此信息来了解要加载的驱动程序。

    鉴于您对问题的描述方式、我怀疑您的报告描述符在某种程度上是固定的、或者描述符的大小被错误地报告。 总线分析器、甚至 Wireshark (具有 USB 分析功能)将告诉您描述符格式错误。

    正确获取描述符是 USB 产品开发过程中的一个难题!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Andy、

    感谢您的提示。  由于我没有 USB 分析器、而且我对用于"通用"器件的代码不是很自信、因此我决定从键盘示例返回、尝试构建符合 HID 标准的供应商定义器件、我能够实现这一目标。  通过查看通用器件源和 hid 键盘源、我不能完全确定故障的位置。  它必须是某种格式错误的描述符。

    对于希望使用此库构建 HID 器件的任何人、我都强烈建议在工作示例和所需配置之间进行反向操作、进行小幅更改并在操作过程中观察结果。  也就是说、该库的来源是指针和结构的兔窝藏、因此需要花费大量的时间进行读取和逐步了解、从而能够进行修改。

    感谢每个人的帮助!

    Erik