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
尊敬的 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
Dyon、
计算机现在只有 USB,似乎是正确的选择,但即使我们也无法实现 12 Mbps 的全速。 我们已经能够实现7-8 Mbps。 在这种情况下、限制因素不是器件上的 CPU 利用率或 USB 模块、而是来自 PC 的请求中的数据。
您可以尝试将 Windows 任务管理器中的进程优先级设置为"realtime"吗?
此致
Siddharth
Siddharth、
是否未将优先级设置为实时风险? 我将首先尝试将优先级设置为高优先级、如果不起作用、我将尝试实时优先级。 我将提供有关这种情况的最新情况。
Dyon
Dyon、
请尝试一下、并告诉我您的观察结果。
此致
Siddharth
Siddharth、
我试过它,运气不好。 不具有"高优先级"或"实时优先级"。 它可能与微控制器一起使用。 我需要以某种方式更改该代码。 USB 数据包是否有缓冲区、当我有新数据时、可以添加缓冲区、USB 将以尽可能快的速度逐一发送? 因为现在、如果一次传输比我的采样时间长、那么我将丢失该样本集。 但是、如果我可以将它们存储在缓冲区中、USB 可以在完成后立即发送、那么它可能能够在样本之间发送多个数据包? (使用样本、我是指64字节/1个数据包的值)。
Dyon