【问题标题】:What's the difference between "COM", "USB", "Serial Port"? [closed]“COM”、“USB”、“串口”有什么区别? [关闭]
【发布时间】:2015-03-12 08:09:39
【问题描述】:

我对这三个概念感到困惑。

我的理解是,Serial Port 通常表示 RS-232 兼容端口(RS = 推荐标准)。 USB 代表 Universal Serial Bus。所以它的名字包含串口,它支持RS-232吗? Universal 是什么意思?

COM 端口是什么意思?

加 1

汉斯回答的一些理解:

为了减少工作量,设备制造商通常使他们的设备也可以像串口设备一样工作。这依赖于许多操作系统和语言库已经包含串行端口通信支持的事实。虽然这样的支持比不上真正的匹配设备驱动程序。

添加 2

关于Serial Port HOW-TO 的一个很好的参考文档。

顺便说一句,the Linux Document Project 真的很有用。

【问题讨论】:

    标签: windows serial-port usb hardware


    【解决方案1】:

    Serial port 是一种使用 UART 芯片的设备,即通用异步收发器。在过去连接计算机的两种基本方式之一,并行端口是另一种方式。串口连接起来很简单,不需要很多电线。如果您想快速运行,并行非常有用,通常比串行快 8 倍,但电缆和连接器很昂贵。并行 I/O 已经从计算机设计中完全消失,赶上了总线收发器的巨大进步,这种芯片可以通过电线传输电信号。

    COM 来自 MS-Dos,它是一个设备名称。 “通讯端口”的缩写。 1980 年代的计算机通常有两个串行端口,在机器背面标有 COM1 和 COM2。这个名称被带到 Windows 中,大多数模拟串行端口的驱动程序都会创建一个名称中带有“COM”的设备。 LPT 是并行端口的设备名称,是“Line PrinTer”的缩写。

    RS-232 是串行端口的电气信号标准。它是最简单的一种,对设备的要求非常低,仅支持点对点连接。 RS-422 和 RS-485 并不少见,每个信号使用双绞线,提供更高的抗噪性并允许多个设备相互连接。

    USB 表示通用串行总线。能够将微处理器集成到尺寸仅为几毫米且成本仅为几角钱的设备中。它在 1990 年代后期取代了旧设备。它是通用的,因为它可以支持许多不同类型的设备,从咖啡壶加热器到磁盘驱动器到 wifi 适配器到音频播放。它是串行的,它只需要 4 根线。它是一个总线,您可以将 USB 设备插入任意端口。它与 FireWire 竞争,这是一种非常相似的方法,由 Apple 支持,但以压倒性优势获胜。

    如今,串行端口仍然适用于 Windows 的唯一原因是 USB 设备需要自定义设备驱动程序。设备制造商喜欢编写和支持驱动程序,他们经常在驱动程序中采取捷径,使其模拟传统的串行端口设备。因此,程序员可以使用对内置于操作系统和任何语言运行时库的串行端口的遗留支持。顺便说一句,相当不完善的支持,这些模拟器从不支持即插即用。发现要打开的特定串行端口非常困难。当您在程序使用 USB 设备时猛拉 USB 设备时,这些驱动程序通常会出现无法诊断的错误行为。

    【讨论】:

    • “如今串行端口仍然与计算相关的唯一原因...” -- 这听起来像是以 PC 为中心的观点,而不是准确的计算机行业-视野开阔。 SoC 几乎总是至少有一个用于串行控制台的 UART,因为 UART 在硬件和软件意义上都很容易用于接口。 “USB 设备需要设备驱动程序。” -- 所有 设备(无论总线如何)都需要驱动程序。您是否必须安装它或者它是否已经在操作系统中是另一个问题。 USB 需要协议栈(因为它是多设备总线)。
    • 当然,这听起来像是以嵌入式设备开发人员为中心的观点。 “COM”应该是一个很好的暗示,表明 OP 正在询问一个以 Windows 为中心的问题。
    • 我不会将 USB 咖啡壶加热器视为真正的 USB 设备的示例。此类设备通常只使用 USB 端口提供的 5V/500mA 电源,不使用数据通信线。
    • 叹息。当然,它是可编程的,在所需的时间间隔自动关闭,这样咖啡就不会烤到杯子里。看在皮特的份上,请发挥一些想象力。
    • @HansPassant :这可以通过简单的热切断来完成。白痴小工具不是很好的例子。你很难用 2.5 瓦的功率预算让你的杯子过热 - 为了皮特的缘故,使用一些物理;-)
    【解决方案2】:

    USB 代表通用串行总线而不是端口。术语“串行端口”仅表示数据通过单个信号路径一次一位地传输 - 从这个意义上说,即使以太网本质上也是串行serial 这个词在这两个术语中都意味着除了数据路径的宽度之外没有任何关系。

    您是对的,PC 上下文中的术语 serial-port 通常表示 RS-232 端口,但还有其他串行端口标准,例如 RS-422 和 RS-485常用于工业应用。它们的共同点是它们是使用 UART (Universal Asynchronous Receiver/Transmitter) 实现的。

    USB 中的通用 一词仅反映了它不是特定设备接口的事实,例如旧硬件上的专用鼠标或键盘端口。同样,基于 UART 的串行端口不是设备特定的,由 UART 中的 U 反映。

    USB 在许多方面与 RS-232 显着不同。它是主/从(或USB术语中的主机/设备),而不是点对点,USB设备无法发起通信,必须由主机轮询。 USB 包括一个低压电源,允许具有中等功率要求的设备由总线供电 - 这也是 USB 端口可用于为电池供电设备充电的原因。 USB 比仅定义物理(硬件)层的 RS-232 复杂得多,而 USB 需要完整的软件协议栈。

    COM 一词只是在 Windows(以及以前的 MS-DOS)中用于串行 (UART) 端口的设备名称前缀。 “通信”的缩写,例如,您可以使用FILE* port = fopen( "COM1", "wr" ) ; 将 COM 端口作为流 I/O 设备打开。

    【讨论】:

    • 如果 USB 设备无法启动通信,那么 USB 似乎不可能支持串行连接。
    • @user34660 :一点也不;主机在获取电源时检测到设备,并启动通信。连接时,主机不断轮询设备,设备可以在轮询响应数据包中发送数据。全双工通信和类UART通信的出现是一个门面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多