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.

[参考译文] TM4C1231H6PM:USB 批量端点数据传输速度。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/690786/tm4c1231h6pm-usb-bulk-endpoints-data-transfer-speed

器件型号:TM4C1231H6PM

大家好、

我不熟悉 USB 开发、一段时间以来、我一直在尝试进行 USB 批量通信、以便在微控制器和 PC 之间实现4兆字节/秒的数据传输。 我建立了通信网桥、 并通过句柄( 使用 lib-USB 进行批量传输)成功地通过 USB 传递数据。 在硬件方面、我使用了演示批量回波代码。 在演示代码中、它仅通过一个输出端点和一个输入端点(批量)传递数据、我的问题是-

1: 一对批量端点是否足以传输4~8 MB 的数据(考虑到它是一个高速 USB 2.0器件)?

2.数据缓冲区被定义为255。 它是否可更改为512字节? 如何实现?

3、使用多个端点是什么?

谢谢你。

e2e.ti.com/.../6138.usb_5F00_dev_5F00_bulk.zip

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

    您好 Arindam、

    您是否正在使用 USB 高速模式? 否则、您将无法获得4Mbyte/sec 数据传输。 USB 全速最大为12兆位/秒、即1.5兆字节/秒

    我没有尝试更改数据缓冲区大小、但它看起来是可以更改的、因为 tUSBBuffer 结构将缓冲区大小变量配置为 uint32_t、这表示 USBlib 应该能够处理更大的缓冲区。 但这不会从第1点解决速度问题。

    关于问题3:这实际上并不是特定于器件的、因此我建议在 USB 上进行读取。 我知道的最有用的资源之一是 :www.beyondlogic.org/.../usb3.shtml

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

    TM4C 芯片支持 USB 主机和 USB 设备模式以及 OTG。 第一步是确定是写入设备、主机还是 OTG 固件。 我从您的消息中假设 PC 是主机、您的 UC 是设备、但我认为您可能需要设置 OTG 功能。 USB 标准的一个不幸副作用是、您的设备由主机驱动程序控制-如果 PC 没有安排足够的批量传输、那么您将无法满足您的带宽要求。

    需要考虑的一点是、如果您的应用实际上需要4Mb/s 的稳定流、那么您应该使用的是 USB 等时端点、而不是 USB 批量端点。 USB 规范旨在通过使用批量提供不损坏的数据传输保证、批量传输将重试、直到成功但不保证带宽、或者通过使用等时传输提供数据带宽保证、 这会强制主机计划足够的数据包以满足带宽要求、但在发生总线错误的情况下不会有任何机会重新传输数据。 USB 不能保证带宽和数据完整性。 您必须选择一个或另一个并进行调整。

    虽然 Ralph 推荐第三方资源、但我倾向于推荐官方 USB 规范。 这些标准在 USB.org 上是免费的、它们代表了最终标准。 文档可能会让人望而生畏、但如果您想生产专业产品、则需要阅读文档。 "制造商"提供的开源项目太多、在技术上滥用了 USB 标准、尽管这些业余产品的消费者似乎愿意接受不完整的性能。 如果您想避免系统之间出现不一致的结果、我建议您熟悉 USB 官方规范。 使用 Ralph 建议的第三方文档补充此资源没有什么问题、但我建议不要使用随机开源项目作为示例、因为它们可能无法正确使用 USB。 实际上、市场上有一些非常流行的 USB 器件存在性能问题、因为它们不使用 USB 等时端点来保证带宽。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请注意、一旦您熟悉了 USB 规范、您就会发现每种速度和端点类型都能支持的具体限制。 考虑到 USB 的限制、我发现德州仪器(TI)的 usblib 能够被配置用于 USB 规范内的任何合法内容。

    换言之、首先了解哪些 USB 支持可满足您的需求、然后了解如何调整 TI 参考文献以实现这些特定参数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Brian、

    感谢您添加宝贵的意见!

    我建议使用第三方网站、因为它简化了解释、并且对 USB 开发新手很好。 我确实同意、这些规格也很重要、需要了解。 我认为、"服从"网站有助于奠定基础、使我认为规格更容易理解、这就是我带头提出建议的原因。

    您好 Arindam、

    此外、在发布时、我意识到我错过了您发布的"考虑这是一款高速 USB 2.0器件"的评论... 在这种情况下、您可以忽略我的第一个问题。 不过、如果您使用高速模式、则需要从 TivaWare USBlib 更新几个文件、因为高速方面存在已确定的问题。 请参阅此帖子以获取最新文件: e2e.ti.com/.../2543999
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    感谢您的建议。 我开始在 TM4C123GXL launchpad 上练习代码、但它支持高达全速 USB  2.0。我有另一个支持 USB 2.0高速的 TM4C129GXl。 这就是我提到考虑高速的原因:)。 此外、就我的高速 USB 2.0总线读取数据帧速率而言    、这里的数据帧速率高达8帧(批量)/微帧。 现在、正如 Tiva c 系列 中记录的示例代码 USB_bulk_example 中有一个端点输出和一个端点、这就是我想是否需要多对端点才能达到该速度的原因。 如果是、我找不到一 种在代码中配置端点的简单方法、因为它包含许多库。 我正在寻找一种简单的方法来配置端点、例如 PSoC 具有端点 配置工具、MSP430板也具有。

    非常感谢您的帮助。

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

    您好 Arindam、

    在器件主题上、您需要使用 TM4C129x 器件才能执行高速模式。 TM4C123x 器件不支持该功能(此外、为了记录在案、您为帖子标题选择的器件根本没有 USB。。)

    Brian 还提到、使用等时端点而非批量端点会更好、我同意他的意见、尽管我认为我们实际上没有这方面的任何例子。

    同样对于高速、我建议您查看此处介绍的高速软件: http://www.ti.com/tool/TIDM-TM4C129USBHS

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Brian、
    我需要数据完整性、这就是我选择批量传输而非等时传输的原因。 我正在寻找一种方法来配置端点、还想知道我是否需要许多端点才能达到该速度。 我认为读取 USB 规范可能会有所帮助。
    感谢您的建议。 )
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ralph、
    我认为 Tiva C seris launchpad 具有本机 USB 支持。 您对 TM4c129的建议很好。 我还将根据我在 CCS 中的需求来确定如何配置点。 如果您能提及、那将会很有帮助。

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

    [引用用户="Ralph Jacobi"]…… 使用等时端点来批量传输会更好,我同意...尽管我认为我们没有这方面的实例。[/引述]

    有 USB_HOST_AUDIO 和 USB_HOST_AUDIO_IN 示例、但我看不到任何 USB_DEV_AUDIO 示例。 您可能会从主机示例了解如何使用等时 API、尽管输入和输出的方向会相反。 但是、由于您需要批量数据完整性、因此您可能会跳过等时数据。 此外、虽然 Apple 对用户应用程序中的 USB 等时支持非常重要、但 Windows 几乎需要驱动程序开发(或最新的操作系统版本)。