使用 USB 批量传输进行数据采集

Using USB bulk transfer for data acquisition

下面我包含了有关我用于微控制器的特定微控制器和库的信息,只是为了提供一些背景信息,以防有人有使用它们的经验。我真的在寻找关于 USB 批量通信与其他 USB 通信方式的一些广泛的答案。

我正在开发一个基于 UWP 的应用程序来与基于 TI TM4C 的微控制器进行通信。微控制器有几个模拟和数字传感器,需要在应用程序中传输和logged/displayed。

我想使用 WinUSB.sys 驱动程序与设备进行 USB 通信,因为我已经阅读了很多关于 usbser.sys 驱动程序的问题,我想避免使用 System.IO.Ports 命名空间,因为有据可查的事件可靠性问题。 WinUSB 驱动程序允许我改用 Windows.Devices.USB 命名空间。

我设想的应用程序和设备之间的通信结构是应用程序对数据的简单请求,设备发送其数据寄存器的内容(<50 字节)。来自应用程序的其他命令将手动设置某些输出值,并期望设备确认已成功完成或发生任何错误。

TI 为名为 TivaWare USB Library

的微控制器提供了一个捆绑库

1) 是否有人预见到在应用程序和设备之间使用批量传输进行通信会出现任何问题?特别是,我很关心 Windows 文档 "Therefore, when the bus is busy with other transfers, bulk data can wait indefinitely."

中对批量传输的描述

2) 批量传输被描述为内置错误检测和重试。这是否意味着我需要使用其他方法对像 CRC 一样传输的数据实施某种错误检测?

3) This page 描述将 WinUSB 与 UWP 应用程序一起使用似乎暗示 WinUSB 驱动程序可以与 CDC 设备一起使用 class,这是否意味着我可以与 CDC 通信 class 设备与 Windows.Devices.USB 命名空间,还是我仍然坚持使用 System.IO.Ports 因为 CDC 设备公开了虚拟 com 端口? (至少在使用 USBser.sys 驱动程序时是这样。它与 WinUSB 驱动程序的工作方式相同吗?)

我们最终使用 TivaWare 库键盘示例来帮助我们构建自己的 HID 设备并编写自定义 HID 报告描述符。 C# UWP 确实对 HID 设备提供了出色的支持,我们使用了 humaninterfacedevice 库。如果有人正在考虑沿着相同的路径走下去,那么 TivaWare 库将很难使用。