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 电缆连接到它。 我使用了 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 实际上并不是一种良好的实时通信外设/协议。
看到这个线程
此致
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