目录

[搬运] 常见硬件协议解析

提示

本文整理的所有内容都来自 YouTube 频道“Techs Explained”发布的视频《Every Hardware Protocol Explained in 6 Minutes》。 Link: Every Hardware Protocol Explained in 6 Minutes


常见硬件协议解析

你的电脑、手机、汽车,你拥有的每一个电子设备内部都有数十个微小组件,所有这些组件都需要一种互相通信的方式,这就是硬件协议的作用——让芯片、传感器和控制器可靠交换数据的规则。某些协议使用四根线,某些使用两根,其中一种仅用单根线就完成所有通信。每个协议都是为解决不同问题而设计的。

UART

UART,全称 Universal Asynchronous Receiver/Transmitter(通用异步收发器),是设备间最古老、最简单的通信方式之一。它只用两根线:一根发送,一根接收。

关键在于“异步”(asynchronous)——两个设备之间没有共享时钟。作为替代,双方在开始对话前要约定一个速度,即波特率(baud rate)。就像两个人先说好同样的语速,再开始交谈。

UART 常见于 Arduino 开发板、GPS 模块和蓝牙适配器。它不是最快的协议,但搭建起来极其简单,所以工程师至今仍到处使用它。

SPI

SPI,全称 Serial Peripheral Interface(串行外设接口),比 UART 更快,工作方式也不同。它使用四根线:时钟、MOSI、MISO 和片选(chip select)。

时钟线使 SPI 成为同步(synchronous)通信——两个设备共享同一时序信号,从而保持完全同步。这就像指挥家指挥乐团,所有人都跟随同一个节拍。系统中总有一个主设备控制时钟,其余从设备响应它。

SPI 常见于 SD 卡、显示屏和闪存芯片。它比 UART 和 I²C 都快,但用的线更多;连接很多设备时,布线会变得凌乱。

I²C

I²C,全称 Inter-Integrated Circuit(集成电路互连),是 UART 与 SPI 之间的聪明折中。它只用两根线:一根数据、一根时钟。

巧妙之处在于:同这两根线上可以挂接多达 127 个不同设备,每个设备都有自己唯一的地址,主设备因此清楚地知道在跟谁说话。这就像一场群聊,所有人都在同一条线上,但每个人只在自己名字被叫到时才应答。

I²C 常见于温度传感器、OLED 显示屏和陀螺仪。它比 SPI 慢,但当你需要用很少的线连接很多设备时,I²C 是最佳选择。

CAN

CAN,全称 Controller Area Network(控制器局域网),由博世(Bosch)于 1983 年发明,专为一个特定环境设计——汽车。

想想你的车:里面就有数十台计算机——发动机控制单元、刹车、安全气囊、仪表盘、变速箱,它们都需要持续、可靠地互相通信。CAN 让它们全部共享两条线,称为 CAN High 和 CAN Low,每个设备在收发数据的同时也监听总线。

它的巧妙之处在于冲突处理:如果两个设备同时发言,CAN 有内建的优先级系统来决定谁先发,且不丢失任何数据。CAN 见于每一辆现代汽车、卡车、工业机器人,乃至医疗设备,是有史以来经受最多实战检验的协议之一。

RS-232

RS-232 是至今仍在使用的最古老通信标准之一,1960 年即已定义。它是一种串行通信协议,用电压电平表示数据,以点对点方式连接两个设备。

与 UART 使用 0 和 3.3 伏不同,RS-232 使用高得多的电压:逻辑 0 为最高 +15 伏,逻辑 1 为 -15 伏。这种更大的电压摆幅,正是为了在较长的电缆上对抗噪声。

你可能从那个旧式九针接口 DB9 认出 RS-232——它曾经出现在每台 PC 的背后。如今在消费设备上已很少见到,但它仍遍布工业机械、工厂设备、老旧科学仪器和 POS 终端。工程师至今常用 USB 转 RS-232 适配器,去和几十年前造出来、从未被替换的老设备对话。

One-Wire

One-Wire,名字已经说明了一切:它只用一根单线通信,而同一根线还同时为所连接的设备供电。

它由 Dallas Semiconductor 开发,工作原理是每个设备在出厂时就被烧录一个唯一的 64 位 ID。因此,即使你在这同一根线上连接多个设备,主设备也明确知道它在跟谁说话。总线默认处于高电平,设备通过在非常精确的时间点把线拉低来通信。

它很慢,远慢于 SPI 或 I²C;但当你只需要读取一个简单传感器、又想要最少的布线时,没有比它更好的选择。最著名的 One-Wire 器件是 DS18B20 温度传感器,此外它还见于 iButton 安全密钥、笔记本的电池电量计,以及 HVAC 温度监测系统。

One-Wire,一根线就足够了。