手把手教你用MDO34示波器抓IIC波形:从触发设置到数据解析的保姆级教程
手把手教你用MDO34示波器抓IIC波形:从触发设置到数据解析的保姆级教程
第一次用示波器抓IIC波形时,我盯着屏幕上跳动的线条完全摸不着头脑——明明按照教程接了探头,为什么抓到的信号总是一团乱麻?直到后来才发现,示波器的触发设置才是稳定捕获IIC信号的关键。本文将基于泰克MDO34示波器,带你从硬件连接到数据解析,一步步掌握IIC波形捕获的核心技巧。
1. 硬件连接与基础设置
1.1 探头连接要点
IIC总线由SCL(时钟线)和SDA(数据线)组成,建议使用示波器的两个通道分别捕获:
- 通道1(CH1):连接SCL,建议使用10X衰减探头
- 通道2(CH2):连接SDA,同样使用10X衰减模式
注意:确保探头接地夹与被测电路共地,否则可能引入噪声或信号失真。
1.2 初始参数配置
在MDO34上按以下步骤设置基础参数:
# 基础设置步骤 1. 按 [Default Setup] 恢复默认设置 2. 选择 [Acquire] → 采样模式设为"峰值检测" 3. 调整时基(Time/Div)至50μs/div 4. 设置垂直灵敏度(Volts/Div): - SCL: 1V/div - SDA: 1V/div常见问题排查表:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 信号幅度过小 | 探头衰减比设置错误 | 检查通道设置是否为10X |
| 波形毛刺多 | 接地不良 | 缩短接地线长度 |
| 信号截顶 | 垂直档位过小 | 增大Volts/div值 |
2. IIC触发配置实战
2.1 边沿触发设置
IIC通信的开始条件定义为:SCL高电平时SDA出现下降沿。在MDO34上配置触发:
- 按下 [Trigger] 菜单键
- 选择"边沿触发"模式
- 触发源设为SDA通道(通常CH2)
- 触发类型选择"下降沿"
- 触发电平设为总线电压的50%(如3.3V系统设为1.65V)
# 伪代码演示触发逻辑 if (SCL == HIGH) and (SDA_falling_edge): start_trigger()2.2 高级触发技巧
对于特定地址的抓取,可以使用MDO34的序列触发:
- 进入 [Trigger] → [Advanced] → [Serial]
- 协议选择"I2C"
- 设置目标地址(如0xA1)
- 选择读/写方向位
触发模式对比:
| 触发类型 | 适用场景 | 优缺点 |
|---|---|---|
| 边沿触发 | 通用捕获 | 简单但可能误触发 |
| 序列触发 | 特定地址 | 精准但设置复杂 |
| 脉冲触发 | 异常检测 | 适合排查干扰 |
3. 波形捕获与优化
3.1 时基调整策略
根据IIC时钟频率调整时基:
- 标准模式(100kHz):建议100μs/div
- 快速模式(400kHz):建议20μs/div
- 高速模式(3.4MHz):建议2μs/div
提示:按下 [Run/Stop] 后,使用水平缩放旋钮微调时基,使一个完整传输周期占据屏幕约3/4宽度。
3.2 存储深度配置
MDO34支持最大10M点的存储深度,对于低速IIC:
- 按 [Acquire] → [Mem Depth]
- 选择"1M"或更高
- 启用"FastFrame"模式捕获突发信号
不同存储深度效果对比:
4. 数据解析实战
4.1 解码基础帧结构
典型IIC帧包含:
- 开始条件:SCL高时SDA下降沿
- 地址字节:
- 7位地址 + R/W位(0:写,1:读)
- 示例:0xA1 = 1010001(地址) + 1(读)
- 应答位:第9个时钟周期的低电平
- 数据字节:每次传输8位
- 停止条件:SCL高时SDA上升沿
4.2 使用MDO34的解码功能
- 按 [Decode] → [I2C]
- 指定SCL和SDA通道
- 设置阈值电压(与触发电平一致)
- 启用"Hex"显示格式
典型读写波形对比:
| 特征 | 写操作波形 | 读操作波形 |
|---|---|---|
| 方向位 | 第8位=0 | 第8位=1 |
| 数据流 | 主机→从机 | 从机→主机 |
| 应答位 | 从机ACK | 主机ACK |
4.3 实际案例分析
假设捕获到以下写入序列:
START | 0xA0 | ACK | 0x11 | ACK | STOP表示:
- 向地址0x50(0xA0>>1)写入数据
- 写入值为0x11
- 从机正确应答
在调试EEPROM时,曾遇到一个典型问题:连续写入时第二个字节丢失。通过示波器发现是SCL信号上升时间过长导致从机采样失败,最终通过降低上拉电阻值解决。
