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.

[参考译文] TM4C129XKCZAD:当与输出管道一起使用时、USBHCPIPPESchedule()在主机模式下调度事务

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/679755/tm4c129xkczad-usbhcdpipeschedule-schedules-in-transactions-in-host-mode-when-used-with-an-out-pipe

器件型号:TM4C129XKCZAD

此函数适用于主机模式读取/输入事务。

当您计划写入输出管道时、您将获得输入事务。

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

    您能否共享将哪个 ui32Pipe 参数传递到 USBHCPepeSchedule 函数中、甚至是我可以在 LaunchPad 或 DK-TM4C129X 上运行的代码示例? 我想跟大家一起看看 USBHCPDPipeSchedule 函数是如何根据输入进行流动的、看看我是否能够识别正在发生的情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 PIPE 0x01210000
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 更重要的是、输出事务不起作用。 在我的例子中,我的 MCU 正在与输出缓冲区中有数据的器件通信,因此当 USBHCPDPipeSchedule()运行时,有一个输入事务可以运行。

    现在我在使用 USBHCPepeSchedule()进行写入之前发出单独的 In 事务,我将遇到故障。

    现在我正在使用对齐缓冲器、DMA 传输工作正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、

    您是否检查了 DK-TM4C1294主机库文件、以查看它们是否可以更好地控制主机模式下的管道式 DMA 传输?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BTW:如果您遇到容错+5V 的 USB0 VBUS 引脚困扰  、无法将 GTO 器件切换至管道式 TXD 模式、则可能与随机引脚故障有关。 下面的工作原理是、Tivaware USB0库似乎对 FIFO 活动做出反应、并 针对 简单连接的器件端点自动相对切换 VBUS/ID 引脚。 了解这种方法在将主机与器件隔离方面的效果如何之后、+5V 破坏性反向电流流入 MCU VBUS 引脚、可实现良好的 WA。 看起来 是一个出色的条件、VBUS 引脚将在高兆欧姆范围内测量非常高的欧姆电阻。

    /* USB_GPCS_DEVMOD_DEVVBUS:
    *使用 USB0 VBUS PB1、强制 PB0 ID 为高电平(器件)。
    * USB_GPCS_DEVMOD_HOSTVBUS:
    *使用 USB0VBUS 并强制 USB0ID 为低电平(主机)
    * USB_GPCS_DEVMOD_DEV:
    *强制 USB0VBUS 和 USB0ID 为高电平*/
    HWREG (USB0_BASE + USB_O_GPC)|= USB_GPCS_DEVMOD_DEV;//USB_GPCS_DEVMOD_DEVVBUS 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要在公共论坛中结束此主题、Robert 只是 DMA 传输确实需要与此特定主题相关的对齐缓冲器的问题?

    对于所有其他问题、讨论都是脱机进行的、如果出现任何其他问题、最终与此特定查询相关、那么我将发布更多详细信息...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从未使用过 USBHCPepeSchedule()进行写入操作。

    我通过将 USBHostPipeWrite()拆分为两部分来解决这个问题:一个部分启动 DMA 传输,另一个部分旋转以等待完成。

    我能够以这种方式拆分交易、并在 USB 系统完成传输时执行网络操作。 奇怪的是、这并没有给我显著的性能提升。 我怀疑这是因为与 USB 相比、网络操作(lwIP)相对高效、并且可以与活动的 DMA 传输同时运行。

    我必须将有效负载复制到字对齐缓冲器中、以使 UDMA 正常工作。 与 USB 有效负载的传输时间相比、这种方法相对便宜、因此双缓冲等优化可能不会有太大帮助。