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/TM4C123GH6PM:usblib 复合器件

Guru**** 2480775 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/701026/ccs-tm4c123gh6pm-usblib-composite-device

器件型号:TM4C123GH6PM

工具/软件:Code Composer Studio

你(们)好。

我同样需要您在使用 TIVaWare 2.1.4.178进行复合器件开发方面的帮助。

我使用了 usblib 一段时间、应用了此处的 Windows 兼容性更改:

现在、这个项目正在发展、我需要另外几个连接到微控制器的管道、主要用于将 USB/串行连接到 UART (以及其他 UCS)。

因此、有效的是:

将4个器件用于微控制器

不起作用的内容:

将6个器件用于微控制器(在某处、它说最多8个器件应该可以吗?)

器件 为2个散装器件和2/4x CDC 器件

问题是:

当使用6设备设置时、在一个 USB 数据包中发送8个以上的字节、这个单个设备不再响应。 而其他的则是。 无错误/故障/_error__上升。

我针对所有串行器件验证了这一点(使用另一个 TivaC Launchpad 作为 UART->USB 转换器)。 以及将在微控制器内处理的器件、

这仅适用于 USB OUT 端点、从 uC 向 PC 发送更长的消息将按预期工作。

在 usbdenum_Mod3.c 中、当使用较长的消息时、MAP_USBIntStatusEndpoint (USB0_BASE)始终返回0、而不是在使用较短的消息时返回0。

所以... 为什么会发生这种情况? 近况如何? 如何解决这个问题?

感谢您的帮助!

(为什么粘贴的 URL 会解析为大图片?!)

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

    好的、抱歉、我的错。

    usblib.h 中的 MAX_USB_DEVICES 表示5个器件。

    因此、我将设置更改为仅包含5个设备、但问题仍然存在。

    再次将其减少到4 (仅初始化4个 Rx/Tx 缓冲区并将设备连接到复合实例)会使所有这些操作再次生效。

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

    您好 Oliver、

    我认为 MAX_USB_DEVICES 定义5的名称有点误导、因为注释描述了以下内容:

    //
    //
    //这是在主机模式和
    //使用集线器时可以支持的最大设备数。 默认情况下、我们最多支持4个器件(对于
    //集线器本身、在内部加1个器件)。
    ////
    ***************** 

    基于此、您只能支持4个外部器件、因此您必须执行2x 批量和2x CDC 等操作。

    除此之外、usblib 只支持8个端点、这也是需要记住的另一点(不清楚您正在使用多少个端点)。