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.

[参考译文] TMS320F28377D:USB 批量传输优先级

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1011106/tms320f28377d-usb-bulk-transfer-priority

器件型号:TMS320F28377D

您好!

我正在使用 TMS320F28377D、并已将 USB 电缆连接到它。 我使用了 USB_bulk_examples 并修改了微控制器上的代码以及 Visual Studio 代码。 我当前正在对 ADC 采样并将数据传输到计算机。 使用示波器、我看到采样率非常一致、但 USB 数据传输不一致。 大多数情况下、它能够足够快地传输数据(其中数据是64字节的数据包、即64x8位、这意味着32个16位 ADC 样本)、但有时数据传输时间太长、样本丢失。 是否有办法在 Visual Studio 中将 USB 优先级设置为优先级? 或者、为了使 USB 传输更加可靠、我可以对微控制器代码进行任何更改?

谢谢、

Dyon  

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

    尊敬的 Dyon:

    您如何将 ADC 样本写入 USB 缓冲器+ TX 处理? 此过程的执行时间是否始终一致? 可以在 CCS 中使用分析时钟进行检查(CPU 周期数)。

    我将请我们的 USB 软件专家提供进一步的意见。

    最棒的

    Kevin

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

    尊敬的 Kevin:

    基本上 、我使用以下代码:

    void sendData(){
    执行{
    ui32Space = USBDBulkTxPacketAvailable (&g_sBulkDevice);
    }while (ui32Space!= buffer_size);

    USBDBulkPacketWrite (&g_sBulkDevice、resultBuffer、ui32Space、true);

    我在这里要做的是在总线清零时写入一个数据包。 我认为,这是不一致的部分。 我认为这与总线在想写入新数据包时的忙状态有关。 因此、我认为问题在于计算机。 我需要在某种程度上设置计算机的优先级、以便它能够足够快地读取总线。  

    在 Visual Studio 中、我正在使用以下行: dwError = ReadUSBPacket (husb、szBuffer、USB_buffer_LEN、&ulRead、5000、 null);

    整个通信正常、但在使总线数据足够快方面并不一致。 当我在计算机上打开其他程序时、它甚至会变得更糟糕、这是可以预料的。 这就是我认为它与优先级有关的原因。  

    - Dyon

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

    Dyon、  

    是否尝试为运行 VC++应用程序的 Windows 进程设置更高的优先级?  

    USB 实际上并不是一种良好的实时通信外设/协议。  

    看到这个线程  

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/586463/tms320f28377d-usb-bulk-transfer-max-rate

    此致

    Siddharth

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

    Siddharth、

    我正在尝试确定如何设置更高的优先级、但我不确定如何设置。  

    至于 USB 不是一种良好的实时通信外设/协议、您是否有其他协议建议可实现至少5Mbps 的速率并可轻松连接到任何笔记本电脑? 现在大多数计算机都只有 USB。  

    - Dyon

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

    Dyon、  

    计算机现在只有 USB,似乎是正确的选择,但即使我们也无法实现 12 Mbps 的全速。  我们已经能够实现7-8 Mbps。 在这种情况下、限制因素不是器件上的 CPU 利用率或 USB 模块、而是来自 PC 的请求中的数据。

    您可以尝试将 Windows 任务管理器中的进程优先级设置为"realtime"吗?

    此致

    Siddharth

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

    Siddharth、

    是否未将优先级设置为实时风险? 我将首先尝试将优先级设置为高优先级、如果不起作用、我将尝试实时优先级。 我将提供有关这种情况的最新情况。

    Dyon

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

    Dyon、  

    请尝试一下、并告诉我您的观察结果。

    此致

    Siddharth

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

    Siddharth、

    我试过它,运气不好。 不具有"高优先级"或"实时优先级"。 它可能与微控制器一起使用。 我需要以某种方式更改该代码。 USB 数据包是否有缓冲区、当我有新数据时、可以添加缓冲区、USB 将以尽可能快的速度逐一发送? 因为现在、如果一次传输比我的采样时间长、那么我将丢失该样本集。 但是、如果我可以将它们存储在缓冲区中、USB 可以在完成后立即发送、那么它可能能够在样本之间发送多个数据包? (使用样本、我是指64字节/1个数据包的值)。

    Dyon  

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

    Dyon、  

    我想您可以尝试增大缓冲区大小(Bulk_buffer_size)。

    此致

    Siddharth

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

    Siddharth、

    更改缓冲区大小(bulk_buffer_size)有什么作用? 据我了解、一次发送的字节数不能超过64字节。 我假设您所指的缓冲区是发送缓冲区吗?

    Dyon

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

    Siddharth、

    我现在认为它与计算机功能有关。 我使用的笔记本电脑具有2个内核和 Windows 10、因此无法足够快地传输数据包。 然后、我使用具有8个内核和 Windows 7的计算机进行了测试、几乎没有丢包。 我只是不知道它是操作系统还是处理器。 WinUSB 应该与所有 Windows 操作系统兼容、对吧?

    对此问题有任何建议?

    谢谢、

    Dyon  

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

    Dyon、  

    很高兴您能够将其缩小到 PC 端。

    我认为最好与 Windows/Microsoft 论坛联系、了解这方面的信息。 据我所知、WinUSB 应该与 Windows 版本兼容。

    此致

    Siddharth

x 出现错误。请重试或与管理员联系。