📚 I2C 技术系列 · 持续更新中
本系列从 OD 开漏物理层一路打到 Linux i2c子系统,把"两根线"背后那套电气/协议/仲裁/恢复/驱动全拧成一根线。
👉 想系统追更,戳这里查看完整目录:
本篇定位 :I2C 一切的源头在物理层------OD 开漏 + 上拉电阻。理解了为什么是 OD、为什么需要上拉、线与逻辑怎么实现,后面的协议、仲裁、恢复全都有了根基。本篇把 SDA/SCL 两根线的电气本质讲透,是你做硬件设计和排查总线问题的第一块基石。
I2C 的"简单"是假象,物理层是最大坑源你裸机调 I2C,代码写对了但就是不通------十有六七是物理层:上拉没加 / 阻值错 / 电容超 / 跨电压域没转换。本篇不是"科普",是让你拿到示波器波形能判断电气对不对的工程文档。
目录
- [一、I2C 物理层总览](#一、I2C 物理层总览)
- [二、OD 开漏输出结构](#二、OD 开漏输出结构)
-
- [2.1 为什么不能推挽](#2.1 为什么不能推挽)
- [2.2 总线上多设备为什么必须 OD](#2.2 总线上多设备为什么必须 OD)
- [2.3 OD 输出的电气参数](#2.3 OD 输出的电气参数)
- 三、线与逻辑(wired-AND)
-
- [3.1 线与的本质](#3.1 线与的本质)
- [3.2 线与的两个关键应用](#3.2 线与的两个关键应用)
- [3.3 线与的副作用:上升沿慢](#3.3 线与的副作用:上升沿慢)
- 四、上拉电阻的物理作用
-
- [4.1 上拉电阻做什么](#4.1 上拉电阻做什么)
- [4.2 上拉电阻的两个约束](#4.2 上拉电阻的两个约束)
- [4.3 典型取值速查](#4.3 典型取值速查)
- 五、电平标准与容限
-
- [5.1 输入电平阈值(NXP/原飞利浦规范)](#5.1 输入电平阈值(NXP/原飞利浦规范))
- [5.2 实际芯片的差异](#5.2 实际芯片的差异)
- [5.3 输入滞回(Schmitt)](#5.3 输入滞回(Schmitt))
- [六、总线电容 400pF 限制](#六、总线电容 400pF 限制)
-
- [6.1 400pF 从哪来](#6.1 400pF 从哪来)
- [6.2 超过 400pF 会怎样](#6.2 超过 400pF 会怎样)
- [6.3 电容超标的解决办法](#6.3 电容超标的解决办法)
- [七、典型电路与 ASCII 图](#七、典型电路与 ASCII 图)
-
- [7.1 标准单 VDD 域电路](#7.1 标准单 VDD 域电路)
- [7.2 跨电压域(3.3V MCU ↔ 5V 传感器)](#7.2 跨电压域(3.3V MCU ↔ 5V 传感器))
- [7.3 PCA9306 集成电平转换](#7.3 PCA9306 集成电平转换)
- [八、关键问题 Q&A](#八、关键问题 Q&A)
-
-
- [Q1:为什么 I2C 必须是 OD 开漏,不能推挽?](#Q1:为什么 I2C 必须是 OD 开漏,不能推挽?)
- [Q2:I2C 上拉电阻不接会怎样?](#Q2:I2C 上拉电阻不接会怎样?)
- [Q3:上拉电阻接 3.3V 还是 5V?](#Q3:上拉电阻接 3.3V 还是 5V?)
- Q4:总线上每个设备都要上拉吗?
- [Q5:OD 开漏的 GPIO 配置要注意什么?](#Q5:OD 开漏的 GPIO 配置要注意什么?)
- [Q6:为什么 I2C 上升沿比下降沿慢这么多?](#Q6:为什么 I2C 上升沿比下降沿慢这么多?)
-
- 九、实战案例
-
- [案例 1:总线一直 BUSY,排查发现上拉接错域](#案例 1:总线一直 BUSY,排查发现上拉接错域)
- [案例 2:5V EEPROM 和 3.3V MCU 直连,偶尔读错](#案例 2:5V EEPROM 和 3.3V MCU 直连,偶尔读错)
- [案例 3:总线挂 12 个器件,400k 跑不稳](#案例 3:总线挂 12 个器件,400k 跑不稳)
- 十、本篇小结与速查
一、I2C 物理层总览
I2C(Inter-Integrated Circuit)是飞利浦(NXP)1982 年设计的两线制串行总线:
VDD
│
┌┴┐ Rp(上拉)
└┬┘
│
──────┼────────── SCL (时钟线)
│
┌─────┴─────┐
│ Master │ OD
│ │──┐
└─────┬─────┘ │
│ │
┌─────┴─────┐ │
│ Slave1 │ OD
│ │──┤
└─────┬─────┘ │
│ │
┌─────┴─────┐ │
│ Slave2 │ OD
│ │──┘
└───────────┘
| 特性 | 值 |
|---|---|
| 线数 | 2(SDA 数据 + SCL 时钟) |
| 输出结构 | OD 开漏(Open-Drain) / TTL 集电极开路 |
| 电平 | 依赖上拉拉高,低电平靠管子拉低 |
| 拓扑 | 多设备共线(总线) |
| 逻辑 | 线与(wired-AND) |
| 速度 | 100k / 400k / 1M / 3.4M / 5M |
| 距离 | 板级(电容限制,典型 < 1m) |
嵌入式视角:I2C 是"总线",UART 是"点对点"
串口是 TX/RX 两根线点对点收发。I2C 两根线是总线 ,多个设备挂在上面分时复用。这决定了:① 必须线与(不能两个推挽打架);② 必须有地址(分清谁说话);③ 必须有应答(确认收到)。三件事都源于"总线"这一拓扑。
二、OD 开漏输出结构
2.1 为什么不能推挽
对比推挽(Push-Pull)和开漏(Open-Drain):
推挽输出(如 GPIO 默认 / SPI):
VDD
│
┌──┴──┐
PMOS│ │ ← 拉高时 PMOS 导通,输出强高
└──┬──┘
├──→ OUT
┌──┴──┐
NMOS│ │ ← 拉低时 NMOS 导通,输出强低
└──┬──┘
│
GND
开漏输出(I2C):
VDD
│
×(无上管,PMOS 不接)
├──→ OUT(只有 NMOS 漏极)
┌──┴──┐
NMOS│ │ ← 只能拉低
└──┬──┘
│
GND
高电平?靠外部上拉电阻 Rp 拉到 VDD
关键差异:
- 推挽:内部能主动拉高也能拉低,输出阻抗低,驱动强
- 开漏:内部只能拉低,拉高靠外部上拉电阻
2.2 总线上多设备为什么必须 OD
假设两个设备都用推挽挂同一根线:
设备 A 输出高(PMOS 导通,强拉 VDD)
设备 B 输出低(NMOS 导通,强拉 GND)
↓
VDD ──[A的PMOS]──线──[B的NMOS]── GND
↓
直通电流!Ioad ≈ VDD / (Ron_p + Ron_n) ≈ 3.3V / (20+20Ω) ≈ 80mA
↓
① 线电平不确定(约 VDD/2)
② 器件发热甚至烧毁
③ 数据冲突
OD 开漏下,任何设备拉低都是"低",只有所有设备都不拉低才"高"------这就是线与,天然防冲突。
OD 开漏是 I2C 多主多从的物理前提
没有_OD_就没有线与,没有线与就没有多主仲裁,也没有 ACK(从机拉低 SDA 表示应答,主机读)。I2C 协议的每一层都建立在 OD 开漏这个物理特性上。这是 I2C 和 SPI 最本质的差异------SPI 用推挽,所以只能一主多从,从机不能主动发言。
2.3 OD 输出的电气参数
| 参数 | 含义 | 典型值 |
|---|---|---|
| VOL | 输出低电平(拉低时) | ≤ 0.4V(@ IOL=3mA,标准模式) |
| IOL | 拉低时吸收电流能力 | ≥ 3mA(标准/快速) |
| Ron | NMOS 导通电阻 | 几十 Ω |
| 漏电流 | 输出高(管子关断)时漏电流 | ≤ 10μA |
- VOL = 0.4V 是 I2C 规范硬指标,决定低电平能否被识别
- IOL = 3mA 决定上拉电阻下限(Rp_min = (VDD - VOL) / IOL)
三、线与逻辑(wired-AND)
3.1 线与的本质
OD 开漏 + 上拉,多设备挂同一根线,逻辑是**"任何一个拉低就是低,全不拉才高"**------这就是线与:
设备A输出 设备B输出 线上电平
1(放) 1(放) 1(被上拉拉高)
1(放) 0(拉) 0
0(拉) 1(放) 0
0(拉) 0(拉) 0
真值表就是 AND(全 1 才 1),所以叫"线与"。
3.2 线与的两个关键应用
应用 1:ACK 应答
主机发完 8 位数据,释放 SDA(输出 1),从机拉低 SDA(输出 0)表示应答。线与结果:SDA = 0,主机读到 ACK。
主机: 1 1 0 0 1 0 1 0 [1 放] ← 输出 8 位后释放
从机: [0 拉] ← 拉低 SDA
线与: 1 1 0 0 1 0 1 0 0 ← 第 9 拍 SCL 高时,主机读到 0 = ACK
应用 2:多主仲裁
多个主机同时发,谁输出 0 谁就"赢"------输出 1 但读到 0 的主机发现冲突,自动退出。详见 \[05-I2C多主仲裁与时钟同步]。
3.3 线与的副作用:上升沿慢
低电平靠管子拉(快,纳秒级),高电平靠上拉电阻 + 电容充(慢,RC 时间常数)。所以 I2C 上升沿天然比下降沿慢------这是速度瓶颈的核心来源。
下降沿(NMOS 拉低):快,~10ns
┌─────┐
│ │
│ ↘
│ ↘____
高→低 几纳秒
上升沿(Rp 充 Cb):慢,tr ≈ 0.8473 × Rp × Cb
_____↗
↗
↗
低→高 几十到几百纳秒(看 Rp 和 Cb)
I2C 速度上限的物理根源是上升沿
你想跑 1MHz 甚至 3.4MHz,卡的就是上升沿。上升沿 = 0.8473 × Rp × Cb,要快就要 Rp 小(上拉强)或 Cb 小(电容小)。但 Rp 小有限制(不能超过 IOL=3mA),Cb 小有限制(走线和器件电容)。这是 02 篇上拉电阻设计的核心矛盾。
四、上拉电阻的物理作用
4.1 上拉电阻做什么
OD 开漏内部拉不了高,必须靠外部上拉电阻 Rp接到 VDD,在所有设备都不拉低时把线拉到高电平:
VDD ──[Rp]── SDA ── 各设备 OD 输入输出
- 没人拉低:电流 VDD→Rp→(设备输入高阻)≈0,SDA = VDD(高)
- 有人拉低:电流 VDD→Rp→拉低设备的 NMOS→GND,SDA = VOL ≈ 0.4V(低)
4.2 上拉电阻的两个约束
约束 1:Rp_max(能拉到合格高电平)
上拉太大,高电平充得慢,上升时间超规范:
tr = 0.8473 × Rp × Cb (Cb = 总线电容)
要求 tr ≤ 规范值(标准模式 1000ns,快速模式 300ns,快速+ 120ns)
→ Rp ≤ tr / (0.8473 × Cb)
约束 2:Rp_min(低电平拉得下去)
上拉太小,拉低时灌入电流大,可能超过 IOL(低电平被抬高到 VOL 之上):
IOL = (VDD - VOL) / Rp ≤ 3mA(规范)
→ Rp ≥ (VDD - VOL) / IOL = (3.3 - 0.4) / 0.003 ≈ 967Ω
所以 Rp 的合法区间:
(VDD - VOL)/IOL ≤ Rp ≤ tr_max / (0.8473 × Cb)
Rp_min Rp_max
4.3 典型取值速查
| VDD | Cb | 速度模式 | tr_max | Rp_max | Rp_min | 常用 |
|---|---|---|---|---|---|---|
| 3.3V | 100pF | 标准 100k | 1000ns | 11.8kΩ | 967Ω | 4.7k~10k |
| 3.3V | 100pF | 快速 400k | 300ns | 3.5kΩ | 967Ω | 2.2k~4.7k |
| 3.3V | 100pF | 快速+ 1M | 120ns | 1.4kΩ | 967Ω | 1k~2.2k |
| 3.3V | 400pF | 标准 100k | 1000ns | 2.95kΩ | 967Ω | 2.2k~2.7k |
| 3.3V | 400pF | 快速 400k | 300ns | 884Ω | 967Ω | ❌ 跑不动! |
400kHz + 400pF 是跑不动的!
看最后一行:Rp_max(884Ω)< Rp_min(967Ω),无解。这就是为什么快速模式规范把总线电容限制在 400pF,实际工程还要留余量。你总线挂太多器件或走线太长,Cb 上去了,400k 就跑不稳。详见 \[02-I2C上拉电阻与总线电容设计]。
五、电平标准与容限
5.1 输入电平阈值(NXP/原飞利浦规范)
| 参数 | 标准模式 | 快速/快速+模式 |
|---|---|---|
| VIL(输入低阈值) | -0.5 ~ +0.3VDD | -0.5 ~ +0.3VDD |
| VIH(输入高阈值) | 0.7VDD ~ VDD+0.5 | 0.7VDD ~ VDD+0.5 |
| hysteresis(滞回) | 无要求 | 推荐 0.05VDD(抗噪) |
- VDD 可以是 3.3V / 5V / 1.8V,I2C 不规定固定 VDD,规定比例(0.3/0.7)
- 这让 I2C 能跨电压域(只要所有设备共 VDD 域,或经电平转换)
5.2 实际芯片的差异
| 器件类型 | VIL | VIH | 说明 |
|---|---|---|---|
| 严格按规范 | 0.3VDD | 0.7VDD | NXP 原厂器件 |
| CMOS 宽容 | 0.3VDD | 0.7VDD | 多数现代 |
| TTL 兼容输入 | 0.8V | 2.0V | 老器件(5V 系统) |
混用 5V 和 3.3V 器件会出问题
5V 器件 VIH = 0.7×5 = 3.5V,而 3.3V 器件输出高才 3.3V → 5V 器件识别不到高电平!必须电平转换(PCA9306 / MOSFET 桥)。这是 I2C 硬件设计高频坑。
5.3 输入滞回(Schmitt)
- 快速模式以上推荐输入加施密特触发器(滞回)
- 作用:上升沿慢的信号在阈值附近抖动时,滞回防多次翻转
- 你选 I2C 器件,高速模式一定确认输入有滞回
六、总线电容 400pF 限制
6.1 400pF 从哪来
I2C 规范标准/快速模式规定总线电容 Cb ≤ 400pF。来源:
Cb = Σ(每个器件引脚电容) + 走线电容 + 连接器/过孔电容
典型:
- 器件引脚:5~10pF/个
- PCB 走线:0.5~1pF/cm(看层叠)
- 连接器:2~5pF/针
- 过孔:0.5pF/个
例:8 个器件 × 10pF + 30cm 走线 × 1pF/cm + 2 连接器 × 5pF = 80 + 30 + 10 = 120pF(还行)
例:16 个器件 + 1m 走线 + 排线 = 容易超 400pF
6.2 超过 400pF 会怎样
- 上升时间超标:tr = 0.8473 × Rp × Cb,Cb 大 → tr 大 → SCL 高电平时间不够 → 时序错
- 信号变形:上升沿太缓,达不到 VIH,识别错误
- 速度上不去:被迫降速
6.3 电容超标的解决办法
| 方法 | 做法 |
|---|---|
| 降速 | 400k → 100k,tr 要求放宽 |
| 减小 Rp | 提高充电速度,但受 IOL 限制(下限 ~1kΩ) |
| 分段总线 | 用 I2C 多路复用器(TCA9548A)分多段,每段电容小 |
| 加缓冲器 | I2C 总线缓冲器(PCA9515 / LTC4311),隔离电容 |
| 减少器件/走线 | 硬件设计源头控制 |
| 换总线 | 实在不行,考虑 SPI(推挽,驱动强)/CAN(差分,距离远) |
七、典型电路与 ASCII 图
7.1 标准单 VDD 域电路
3.3V
│
┌┴┐ Rp_scl = 4.7k
└┬┘
│
MCU ─────────────┼────── SCL ────┬──── Slave1 SCL
(OD) │ ├──── Slave2 SCL
┌┴┐ Rp_sda = 4.7k └──── Slave3 SCL
└┬┘
│
MCU ─────────────┼────── SDA ────┬──── Slave1 SDA
(OD) ├──── Slave2 SDA
└──── Slave3 SDA
所有设备共地共 VDD(3.3V)
7.2 跨电压域(3.3V MCU ↔ 5V 传感器)
用 MOSFET 桥(经典电路,BSS138):
3.3V 5V
│ │
┌┴┐ Rp1=4.7k ┌┴┐ Rp2=4.7k
└┬┘ └┬┘
│ ┌─┐ │
├──────────────┤G│ ├──── 5V 侧 SDA
│ SDA(3.3) │ │ S │
│ └┬┘ │
│ │ D │
│ ┌┴┐ │
│ │ │ │
│ └─┘ │
│ BSS138 │
│ │
GND───────────────────────────GND
MOSFET 把两侧 OD 总线连起来:
- 任一侧拉低 → MOSFET 导通 → 两侧都低
- 都不拉 → 各自上拉拉到各自 VDD
- 两侧各自上拉到自己的 VDD
- MOSFET 体二极管方向:3.3V 侧 → 5V 侧(源接 3.3)
- 任一侧拉低都把另一侧拉低,双向
MOSFET 桥是 I2C 电平转换经典
这电路一定要会画会分析。原理:① 两侧都高时 MOSFET Vgs=0,关断,各自高;② 任一侧拉低,MOSFET 体二极管/沟道把另一侧也拉低。比专用电平转换芯片(PCA9306)便宜,但要注意 MOSFET 选型(Vgs 阈值 < 3.3V)。
7.3 PCA9306 集成电平转换
3.3V 侧 PCA9306 5V 侧
│ │
SCL1 ──────────── A1 A2 ────────── SCL2
SDA1 ──────────── B1 B2 ────────── SDA2
│
VREF1=3.3V
VREF2=5V
EN(使能,接 VREF2 经分压)
- 专用 I2C 电平转换,内部就是 MOSFET 桥集成 + 限流
- 支持标准/快速模式,部分支持快速+
- 比分离 MOSFET 可靠,占板面积小
八、关键问题 Q&A
Q1:为什么 I2C 必须是 OD 开漏,不能推挽?
A :I2C 是多主多从总线 ,多个设备共享 SDA/SCL。如果用推挽,两个设备同时输出一个高一个低,会形成 VDD→GND 直通,大电流烧器件,且线电平不确定。OD 开漏 + 线与天然解决:任何设备拉低就是低,全不拉才高,无冲突。OD 是多主多从的物理前提。SPI 用推挽是因为它严格一主多从,从机输出接 MISO,主从不会同时驱动同一根线。
Q2:I2C 上拉电阻不接会怎样?
A :SDA/SCL 永远是低(被某设备拉低后无人拉高)或浮空(都释放时电平不定)。总线完全无法工作。你调 I2C 第一步就是确认上拉接了、阻值对、上拉到正确的 VDD。
Q3:上拉电阻接 3.3V 还是 5V?
A :接哪个 VDD 取决于总线上器件的电平域 。所有器件同域,接该域 VDD。跨域(3.3V MCU + 5V 传感器)必须用 MOSFET 桥或 PCA9306,两侧各自上拉到各自 VDD。不能直接把 5V 上拉拉到 3.3V MCU 引脚(可能过压烧 MCU)。
Q4:总线上每个设备都要上拉吗?
A :不要!上拉电阻是总线级的,整条 SDA 一个 Rp,整条 SCL 一个 Rp。每个设备都加会导致 Rp 并联,等效阻值过小,低电平电流超 IOL,拉不下去。常见错误:模块化设计每个子板自带 4.7k 上拉,拼一起变成 1.2k,跑不动。
Q5:OD 开漏的 GPIO 配置要注意什么?
A :① 模式设为 OD 开漏输出(或开漏 + 输入);② 输出 1 时实际是"释放"(高阻),靠上拉拉高;③ 输出 0 时拉低;④ 读输入时要先输出 1(释放)再读 IDR。STM32 的 GPIO 复用开漏模式(AF_OD)专为 I2C 设计。
Q6:为什么 I2C 上升沿比下降沿慢这么多?
A :下降沿是 NMOS 主动导通拉低,输出阻抗低(~20Ω),快(纳秒级)。上升沿是 NMOS 关断后,靠上拉电阻 Rp 给总线电容 Cb 充电,是 RC 充电,tr ≈ 0.8473 × Rp × Cb。Rp 常几 kΩ,Cb 几十到几百 pF,tr 就几十到几百纳秒。这是 I2C 速度的物理天花板。
九、实战案例
案例 1:总线一直 BUSY,排查发现上拉接错域
现象:STM32 调 MPU6050,代码对,示波器看 SCL/SDA 都是直线低电平,控制器报 BUSY。
排查:
- 万用表测 SCL/SDA 对地电压:0V(应 3.3V)
- 检查上拉电阻:焊了 4.7k,但接到一个没上电的 5V 域(原理图标错)
- 上拉失效,总线浮空被某设备拉低后无法恢复
解决:上拉改接 3.3V 域,正常。
教训:上拉电阻接哪个 VDD 是 I2C 第一道关卡,设计评审必查。
案例 2:5V EEPROM 和 3.3V MCU 直连,偶尔读错
现象:24C04(5V)和 STM32(3.3V)直连,带 4.7k 上拉到 5V。偶尔读到 0xFF,概率 1%。
排查:
- 示波器看 SCL/SDA:高电平 5V(MCU 引脚过压但没烧,侥幸)
- MCU 的 VIH = 0.7×3.3 = 2.3V,5V 信号能识别,但MCU 输出高 3.3V,EEPROM 的 VIH = 0.7×5 = 3.5V,识别不到!
- MCU 释放 SDA 后,EEPROM 读到不确定 → 偶尔误判
解决:加 BSS138 MOSFET 桥 + 两侧各自 4.7k 上拉。误码消失。
教训:跨电压域必加电平转换,直连是定时炸弹。
案例 3:总线挂 12 个器件,400k 跑不稳
现象:工控板 I2C 挂 12 个传感器,100k 正常,400k 偶尔丢字节。
排查:
- 示波器看上升沿:300ns(400k 规范要求 ≤ 300ns,临界)
- 算总线电容:12 × 8pF + 40cm 走线 × 1pF/cm = 136pF
- Rp = 4.7k,tr = 0.8473 × 4700 × 136pF ≈ 541ns > 300ns ❌
解决:Rp 改 2.2k,tr = 0.8473 × 2200 × 136p ≈ 254ns ✓,400k 稳定。
教训:器件多要重算上拉,4.7k 不是万能值。
十、本篇小结与速查
核心要点
- I2C 物理层 = OD 开漏 + 上拉电阻 + 线与逻辑
- OD 开漏内部只能拉低,拉高靠上拉;多设备共享总线无冲突
- 线与:任一拉低即低,全不拉才高 → ACK / 仲裁的物理基础
- 上拉电阻受双约束:Rp_min(低电平拉下去,~1kΩ)、Rp_max(上升时间达标)
- 上升沿 tr = 0.8473 × Rp × Cb,是 I2C 速度的物理天花板
- 总线电容 ≤ 400pF(标准/快速模式),超了要分段/降速/加缓冲
- 跨电压域必加电平转换(MOSFET 桥 / PCA9306)
- 电平阈值是比例(0.3/0.7 VDD),不是固定值
速查表
| 想干啥 | 看哪 / 做啥 |
|---|---|
| 确认上拉对不对 | 万用表测 SCL/SDA 静态 = VDD;示波器看上升沿 |
| 上拉阻值算 | Rp ∈ (VDD-0.4)/3mA, tr_max/(0.8473×Cb) |
| 上升时间测 | 示波器抓 SCL 上升沿,0.3VDD→0.7VDD 时间 |
| 多设备共线电容 | Σ 器件 8pF + 走线 1pF/cm + 连接器 |
| 跨电压域 | BSS138 桥 / PCA9306,两侧各自上拉 |
| 电平识别阈值 | VIL=0.3VDD,VIH=0.7VDD |
| GPIO 配 I2C | AF_OD(复用开漏)+ 上拉 |
| 总线电容超 400pF | TCA9548A 分段 / 降速 / PCA9515 缓冲 |
| 上升沿太慢 | 减小 Rp 或减小 Cb(减器件/短走线) |
延伸阅读
- \[02-I2C上拉电阻与总线电容设计] ------ Rp 取值的完整工程推导
- \[03-I2C信号完整性与EMI] ------ 上升沿、串扰、走线拓扑
- \[04-I2C协议与时序详解] ------ 电气层之上的协议层
- \[05-I2C多主仲裁与时钟同步] ------ 线与逻辑的协议应用
- \[10-I2C错误处理与总线恢复] ------ 物理层失效怎么恢复
- \[00-串口技术系列总目录] ------ 对照异步总线(点对点)
参考资料
- NXP UM10204《I2C-bus Specification and User Manual》(官方规范,Rev 7)
- NXP AN25541(I2C / SMBus Applications)
- Texas Instruments《I2C Bus Pullup Resistor Calculation》(SLVA689)
- STM32 Reference Manual(GPIO AF_OD 配置)
- 《I2C总线规范》中文译本
\[00-I2C技术系列总目录] · 上一篇:无 · 下一篇:\[02-I2C上拉电阻与总线电容设计]
✨ 感谢你的阅读 ✨
技术之路漫漫,分享是为了更好地交流。
如果本文的内容对你有启发,希望能得到你的支持:
👍 点赞 | ⭐ 收藏 | 👀 关注
如果你在调试过程中遇到了其他问题,
欢迎在 评论区 💬 留言,我们一起探讨。
关注我,一起交流底层开发的那些事儿!🚀