【问题标题】:Virtual COM port or using raw endpoints?虚拟 COM 端口或使用原始端点?
【发布时间】:2016-07-04 19:13:13
【问题描述】:

我正在使用 USB 控制器和代码示例在微控制器中开发软件,以实现虚拟 COM 端口。

实现它是一个来回传输数据的设备,我正在考虑使用 2 个批量端点,在我的计算机中使用 libusb 来读取和写入它们。

虚拟 COM 的优势在于不需要 libusb,因为它已经存在驱动程序,并且可以通过与 com 端口的接口来完成通信(在这种情况下仅适用于 Linux)。

在数据传输方面,什么速度最快?我知道两者都是使用 2 个批量端点的实现(虚拟 com 也使用中断,不确定我现在是否需要它)。是否有可能,即使使用虚拟 com 端口有效负载,该传输速率也与使用 2 个批量端点(没有 USB 类)实现某些东西相同?

您认为我在做出此决定时还缺少其他任何一点吗?

【问题讨论】:

  • 额外的仿真层没有什么能变得更快。但是,您注意到差异的可能性相当低。串行端口仿真的明显优势是您可以使用几乎任何语言和任何库与设备通信。明显的缺点是您必须发现端口号并且不能很好地处理意外设备移除。选择你的毒药。

标签: serial-port usb


【解决方案1】:

要实现虚拟 COM 端口,您还必须使用 USB 类 USB CDC ACM

https://en.wikipedia.org/wiki/USB_communications_device_class

请参阅此处了解 UART 标准波特率https://electronics.stackexchange.com/questions/9264/what-standard-uart-rates-are-there

110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 230400, 460800, 921600,... 高波特率有时会出问题

当使用 USB CDC ACM 时,设备将被识别为(虚拟)COM 端口并且可以通过终端访问

批量传输是以最大速度传输数据的最简单方法,可与大容量存储设备类

一起使用

https://en.wikipedia.org/wiki/USB_mass_storage_device_class

设备将被识别为大容量存储(普通驱动器,如 U 盘)

看到这个http://www.beyondlogic.org/usbnutshell/usb4.shtml#Bulk

如果您需要 Atmel MCU 的示例和源代码,请参阅 LUFA 库 (http://www.fourwalledcubicle.com/LUFA.php) 或查看嵌入式操作系统,例如 Contiki OS。其中包括其他 MCU 的 USB 源代码,如 MSP430,... 也

【讨论】:

  • 波特率可以远高于 115200,因为它只是从计算机传输到 USB CDC ACM 设备的任意数字。设备可以使用该号码做任何事情,例如忽略它。 CDC ACM 波特率对 USB 数据传输的速度没有影响,对于全速 USB 设备,该速度始终为 12 Mbps。
猜你喜欢
  • 1970-01-01
  • 2021-01-28
  • 2012-07-27
  • 2011-09-05
  • 2015-03-12
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 2013-02-21
相关资源
最近更新 更多