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:如何控制慢速 USB 1.1器件

Guru**** 2463330 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/658458/ccs-tm4c1294ncpdt-how-to-control-a-slow-usb-1-1-device

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

工具/软件:Code Composer Studio

尊敬的 TI:

我将 EK-tm4c1294xl 编程为 USB 主机批量模式、以便与老化的 USB 1.1器件通信。 我从/opt/ti/tivaware/usblib/host 中的 usbhmsc.c 借用了静态空* USBHMSCOpen (tUSBHostDevice * psDevice)来枚举端点、

               //
               //为此批量输出端点分配 USB 管道。
               //
               G_sUSBHMSCDevice.ui32BulkOutPipe =
                   USBHCPIPeAllocSize (0、USBHCD_PIPE_BULK_OUT、
                                       psDevice、
                                       psEndpointDescriptor->wMaxPacketSize、
                                       0);
               //
               //将 USB 管道配置为批量输出端点。
               //
               USBHCPIPeConfig (g_sUSBHMSCDevice.ui32BulkOutPipe、
                                psEndpointDescriptor->wMaxPacketSize、
                                0、
                                (psEndpointDescriptor->bEndpointAddress &
                                 USB_EP_DESC_NUM_M);

枚举如下所示、


Bulkout bEndpointAddress = 2、wMaxPacketSize = 64
Bulkin bEndpointAddress = 132、wMaxPacketSize = 64
中断 bEndpointAddress = 129、wMaxPacketSize = 16

有80个字节要批量传输到器件。 但是、器件似乎无法跟上 EK-tm4c1294xl 批量传输速度。

我的问题分为两部分、

1.如何将 EK-tm4c1294xl 批量端点配置为较低的速度?

由于80字节超过了大容量缓冲区的大小64、这可能会导致问题吗?

请提前告知、谢谢

Mike

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

    尊敬的 Mike:

    对于问题1、TivaWare usblib 不支持 USB 的低速模式。 因此、您需要自行修改库以使用低速模式。 其中包括修改端点。

    对于问题2、缓冲区大小肯定会导致问题。 如果缓冲区无法存储所有数据、则可能会覆盖内存的其他部分或数据丢失。 我不建议让缓冲区像您描述的那样受到数据溢出的影响。

    最终、鉴于器件的使用年限、您必须对 usblib 进行相当多的修改才能使其适用于您的应用。

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

    问题已解决、64字节缓冲区实际上导致了问题。

    请访问 www.keil.com/.../

    "您可以发送任何大小的缓冲区、甚至可以使用单个 USBHCPDPipeWrite()调用发送大于64字节的缓冲区。"

    Mike