当前位置: 首页 > news >正文

示波器抓 I2C 时序:如何一眼看出 ACK 没拉低?

摘要:I2C 通信失败,逻辑分析仪看着“有波形”,但示波器一看全是破绽。很多时候,问题不在“有没有波形”,而在ACK 信号的“坡度”和“幅值”。本文将教你识别那些“看起来像 0,实际是 1”的假低电平。


一、真实波形长什么样?(视觉对标)

为了让你能对着示波器调,我们先描述一下教科书级的正常波形

1. 正常的 START 信号(干净利落)

SCL: ──────┐ ┌─────── │ │ └───────┘ SDA: ──────┐ └─────────────── ↑ SDA 快速下坠(< 20ns)

视觉特征:SDA 的下降沿几乎是垂直的,没有圆角,没有回勾。

2. 正常的 ACK 信号(扎实的深槽)

这是本文的重点。在第 9 个时钟脉冲期间,SDA 应该被从设备狠狠地拉低

好问题,这一点很多工程师工作了几年都说不清楚 😄

我分“文字描述(你写文章用)”​ 和“示波器真实长相(你对照看 / 配图用)”​ 两部分说。


一、I2C 的 ACK 波形到底是什么?

1. 基本规则(复习)

  • ACK:从设备在第9 个 SCL 脉冲期间,把SDA 拉低(Low)

  • NACK:从设备不拉低 SDA,SDA 保持高电平。


二、✅ 正确的 ACK 波形(示波器看到的)

假设 7 位地址 + W = 已发完,接下来是 ACK 位:

时间轴 → SCL: ────┐ ┌───┐ ┌───┐ ┌───────┐ ┌─── │ │ │ │ │ │ │ └───┘ └───┘ └───┘ └───┘ ↑ 第 9 个脉冲(ACK 时隙) SDA: ────────┐ ┌─────────────── │ 低电平 │ └───────────────┘ 0.1V ~ 0.3V

视觉特征

  • SCL 高电平期间,SDA 被牢牢地按在 0V 附近(0.1V ~ 0.3V)。

  • 波形像被凿子凿出来的深槽,而不是平缓的斜坡。

  • 槽底平坦,没有抖动。


二、异常波形:90% 的坑都在这(重点)

这才是你刚才吐槽的点——那些“似是而非”的危险波形

1. 坑位一:ACK 拉不深(最隐蔽,也是最经典的坑)

波形描述

SCL: ────┐ ┌─── │ │ └───┘ SDA: ───────┐ ─────── │ 1.5V └───────┘

视觉特征

  • SDA 确实下去了,但下不去

  • 它像是一个缓坡,停在 1.5V 左右,而不是一条直线趴在 0V。

  • 本质:从设备的 MOS 管导通电阻太大,或者上拉电阻太小(电流太大拉不动)。

  • 后果:主机(MCU)认为“这不是低电平”,判定通信失败。

2. 坑位二:上升沿太圆(容性负载)

波形描述

SCL: ──────┐ ┌─────── │ (圆弧) │ └─────────┘ SDA: ──────┐ ┌─────── │ (圆弧) │ └─────────┘

视觉特征

  • 波形不是直角,而是像山坡一样圆滑。

  • 在 400kHz 下,这种圆角会导致采样点错过。

  • 本质:总线电容太大(线太长、分支太多、上拉太弱)。

3. 坑位三:毛刺干扰(静电/电源)

波形描述

SDA: ──────┐ ┌─────── │ /\/\ │ └──┘ └─┘ ↑ 毛刺 (Spikes)

视觉特征:在 SDA 应该平稳的时候,突然冒出尖刺。

本质:电源噪声串入,或者静电干扰。


三、示波器上的“金标准”参数(直接读数值)

别光看形状,看右下角的测量值:

参数

正常值

异常值

含义

V_low (ACK)

< 0.3V

> 0.7V

低电平不合格

V_high

> 2.97V (3.3V*0.9)

< 2.97V

高电平不合格

Rise Time

< 1us (100kHz)

> 2us

上拉太弱或电容太大

Fall Time

< 300ns

> 1us

驱动能力不足


四、工程级“排雷”步骤(对着波形改)

1. 看到 ACK 停在 1.5V?

动作:换大阻值的上拉电阻(4.7k -> 10k),或者换驱动能力强的从设备。

2. 看到上升沿像山坡?

动作:减小上拉电阻(10k -> 4.7k),或者缩短 SDA/SCL 走线,减少分支。

3. 看到毛刺?

动作:在 SDA/SCL 靠近 MCU 引脚处并联 100pF ~ 220pF 的小电容(会牺牲一点速度,但抗干扰)。


五、写给读者的“看图说话”口诀

口诀一低不平,就是零;高不硬,就是病。

口诀二直角快,圆角慢;毛刺多,电源乱。


六、写在最后(关注我,少走弯路)

我是 gqqsherry666,一个拒绝调包、专注底层逻辑的嵌入式工程师。

逻辑分析仪告诉你“发生了什么”,示波器告诉你“为什么发生”。

学会看 ACK 的“坡度”,你就从“调库工程师”进阶为“信号分析师”。

关注我,下一篇我们聊《RTOS 栈溢出压力测试:如何故意把系统搞崩来证明其稳定》。

http://www.jsqmd.com/news/1094068/

相关文章:

  • Sentinel 微服务学习笔记
  • Windows 局域网文件共享实战:解决“账户被禁用“与“网络访问拒绝“问题
  • React Fiber 调度架构解析
  • 工业计算机类型、功能应用及选型指南
  • 华为交换机 SNMPv3 Trap 配置与验证指南
  • CasaOS:基于Docker的个人云操作系统安装与实战指南
  • Claude Code 2026 安装指南 并改调用DeepSeek模型
  • 吉阳区正宗椰子鸡推荐|符合海南本土特色的宝藏门店
  • Linux:进程
  • ZW3D二次开发_工程图_获取/设置参考是否隐藏消隐线
  • SpringBoot 整合 MinIO 实现文件存储——私有化 OSS 方案
  • Java synchronized 与 ReentrantLock 对比分析
  • 《AI抢产能致车规存储缺货?欣芯半导体给出eMMC/UFS“供应韧性”破局与选型指南》
  • Solo DSP数据集成模块的架构设计
  • MCP协议与Playwright结合:实现零代码浏览器自动化
  • 商用级云PACS源码,云影像源码,B/S 架构 DICOM 标准,HIS 双向对接、Redis 缓存开箱即用
  • Versal GTM(1):收发器概览
  • 2026去水印不破坏原图的方法!电脑手机在线无痕去水印工具+PS教程
  • 如何甄选靠谱展厅设计公司:从效果到落地的实战指南
  • 实测拆解!Paperxie智能写作,解锁毕业论文标准化高效创作方式
  • 【system-architect】:一个让 AI 做架构建议时“说得清依据“的 Skill
  • Java计算机毕设之基于 Java 的部门通知与任务一体化管理系统 团队协作型任务分配管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • TI BOOSTXL-RS232 BoosterPack硬件解析与RS-232通信实战指南
  • 2026美容院会员管理系统选型攻略:功能对比+避坑指南
  • 查询优化-提升子查询-UNION类型
  • 怎么查看招标信息?新手找标入门指南
  • 2026奶茶店收银系统维护商推荐解析:凤梨收银系统适配茶饮业态的专业参考
  • 专业的杭州Geo哪家有实力
  • UV诱导黑化模型下的化妆品防晒黑功效评价方法
  • 【学习笔记】垂直领域大模型:行业微调实战指南(9/35)