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


> [!IMPORTANT]
> 本文整理的所有内容都来自 YouTube 频道“Techs Explained”发布的视频《Every Hardware Protocol Explained in 6 Minutes》。
> Link: [Every Hardware Protocol Explained in 6 Minutes](https://www.youtube.com/watch?v=0rlpwVNyBO8)

---

# 常见硬件协议解析

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

## 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，一根线就足够了。

