# 一线通电路原理（Single-Wire Bus）

一线通（Single-Wire / 1-Wire / LIN）是用单根数据线 + 地实现双向通信的协议族。没有独立时钟线，需解决同步、仲裁、供电三个核心问题。

作为对照，用独立时钟线的 [[i2c-bus-protocol|I2C]] 把这些问题换成了「多一根线」，同步和仲裁的实现都简单得多。

### 同步方式（无时钟线如何对齐）

| 方案 | 代表协议 | 原理 |
| --- | --- | --- |
|------|---------|------|
| 异步 UART 单总线 | LIN Bus | 双方约定波特率，起始位下降沿对齐，靠过采样（通常 16x）在 bit 中心采样 |
| 脉冲时序编码 | Maxim 1-Wire | 主机拉低总线产生时隙（time slot），从机检测脉冲宽度区分 0/1 |
| 脉宽调制 | HDQ（TI BQ 芯片） | 主机用低电平持续时间编码 bit：短→1，长→0 |

### 总线冲突与主从仲裁

- **1-Wire / LIN**：严格主从，主机控制所有时隙，从机只能应答。无总线仲裁——一次只允许一个从机响应。
- **多从机寻址**：1-Wire 每个器件有 64-bit ROM ID，主机发 SKIP ROM / MATCH ROM 选择目标。
- **LIN 报文 ID**：由主机发 Header（同步间隔 + 同步场 + 标识符），从机判断是否响应。

### 供电方式（电源和数据走一根线）

寄生供电（Parasitic Power）：总线高电平时器件内部电容充电，低电平传输数据时电容放电维持工作。

```text
       ┌───┐   ┌───┐   ┌───┐   ┌───┐
Vbus   │   │   │   │   │   │   │   │
       │   │   │   │   │   │   │   │
─┐     ┘   └───┘   └───┘   └───┘   └────
 │ 充电    泄放    充电    泄放
```

典型限制：
- 寄生供电拉不动长线——1-Wire 寄生模式推荐 < 3m，外接 Vcc 可达 100m+
- 驱动能力：强上拉（strong pull-up）在数据阶段后主动拉高给电容充电

### 电平标准与上拉

| 协议 | 空闲电平 | 上拉电阻 | 电平范围 |
| --- | --- | --- | --- |
|------|---------|---------|---------|
| 1-Wire | 高 (5V) | 4.7kΩ | 2.8V-5.5V |
| LIN | 高 (Vbat) | 1kΩ | 12V 汽车电平 |
| HDQ | 高 (1.8V/3.3V) | 内部上拉 | VCC 同域 |

### 时序实例 — 1-Wire 读一个 bit

```text
主机拉低 1-15µs → 释放 → 在 15µs 窗口内采样

写 1: 主机拉低 < 15µs 后释放
写 0: 主机拉低 60-120µs
读 1: 主机拉低 1-15µs → 释放 → 从机拉低 = 0 / 高阻 = 1
```

### 在 BMS 中的常见应用

- **HDQ** — TI BQ 系列单线通信，常用于电池包校准和生产烧录。波特率固定 5kbps，时序比 1-Wire 宽松。
- **1-Wire EEPROM** — DS28EC20 / DS2432 用于电池 ID 识别。寄生供电，典型电路只需一个 4.7kΩ 上拉到 3.3V。
- **LIN** — 汽车 BMS 的从控通信，ISO 17987，速率 20kbps，12V 电平，需 transceiver（如 TJA1021）。
