STM32 I2C通信怎么调试?ACK位与时序怎么抓?嵌入式面试

浏览量:256
时间: 2026-09-18 09:03:17
一句话答案

I2C 调试看逻辑分析仪:起始位→地址+ACK→数据+ACK→停止位;最常见问题是 NACK(从机没应答),先查地址、上拉电阻、时序;STM32 硬件 I2C 有 bug,很多人用 GPIO 模拟。

本文概述

I2C 是常用但容易出问题的总线,面试常考:I2C 时序、ACK/NACK、上拉电阻、STM32 硬件 I2C bug。回答要讲清调试方法和常见坑。

核心要点

  • I2C 用 SCL(时钟)+SDA(数据)两根线,开漏输出,必须接上拉电阻(通常 4.7k)

  • 时序:起始→7位地址+R/W→从机 ACK→8位数据+ACK→...→停止

  • NACK 常见原因:地址错、从机没上电、上拉不够、总线被拉死

  • STM32 硬件 I2C(F1)有已知 bug,复杂项目常用 GPIO 模拟 I2C

  • 调试工具:逻辑分析仪抓 SCL/SDA,看 ACK 位和地址

逻辑分析仪显示 I2C 波形,SCL/SDA 信号,ACK 位标注,STM32 开发板连接传感器

面试官:STM32 读 I2C 传感器,一直读不到数据,你怎么排查?

面试官考察点

面试官看你是否真调过 I2C、是否会用逻辑分析仪。重点听:上拉、地址、ACK、逻辑分析仪。

回答思路

按「硬件→时序→软件」排查,给具体步骤。

参考回答

第一步,看硬件。

  • SCL/SDA 有没有上拉电阻(4.7k~10k),没有上拉总线一直低;

  • 上拉到哪个电源(3.3V 还是 1.8V),和从机电平匹配;

  • 从机 VCC 有没有上电;

  • SDA/SCL 有没有接反。

第二步,抓时序。

用逻辑分析仪抓 SCL/SDA:

步骤看什么
起始位SCL 高时 SDA 从高拉低
地址字节7 位地址+R/W,和 datasheet 对
ACK 位第 9 个时钟 SDA 是否被从机拉低
数据字节8 位数据后 ACK
停止位SCL 高时 SDA 从低拉高

第三步,判断问题。

  • 地址错:7 位地址左移一位+R/W,注意有些 datasheet 给 8 位地址(含 R/W);

  • NACK:从机没应答,查从机地址、上电、复位;

  • 总线被拉死:SDA 一直低,复位从机或主机重新发起始;

  • 上拉不够:上升沿慢,加大上拉电阻或换 4.7k。

STM32 硬件 I2C 的坑。

  • F1 硬件 I2C 有已知 bug,繁忙标志 BUSY 卡死;

  • 解决:软件复位 I2C、超时重试,或直接用 GPIO 模拟 I2C;

  • 模拟 I2C 简单可控,速度不高(100k/400k)完全够用。

常见参数。

模式速度上拉电阻(4.7k)
Standard100kHzOK
Fast400kHz4.7k 或 2.2k
Fast+1MHz需更弱上拉+短走线

面试官可能追问

追问 1:I2C 为什么要上拉电阻?
I2C 是开漏输出,只能拉低不能拉高,必须靠上拉电阻拉高。没有上拉总线一直低。
追问 2:7 位地址和 8 位地址区别?
7 位是设备地址,主机发时左移一位加 R/W 位变 8 位。有些 datasheet 直接给 8 位值(含 R/W),要换算。
追问 3:ACK 和 NACK 区别?
第 9 个时钟 SDA 被拉低=ACK(从机应答);SDA 高=NACK(从机没应答或读结束)。
追问 4:I2C 和 SPI 区别?
I2C 两线、地址寻址、低速;SPI 四线(MOSI/MISO/SCK/CS)、片选、高速。I2C 省线但慢。
追问 5:总线被拉死怎么办?
SDA 被从机拉低时,主机手动发 9 个时钟让从机释放 SDA,再发起始位复位总线。

常见失分表达

✗ I2C 不上拉 — 开漏总线没有上拉,SDA/SCL 一直低,通信不了。
✗ 地址直接抄 datasheet — 有些 datasheet 给 7 位,有些给 8 位,要换算左移一位。
✗ 硬用 STM32 硬件 I2C — F1 硬件 I2C 有 bug,卡死时不如模拟。

准备动作

1
用逻辑分析仪抓一次 I2C 波形,找 ACK 位
2
在 STM32 上模拟 I2C 读一个传感器
3
准备一个 I2C NACK 的排查案例
4
了解 I2C/SMBus/PMBus 区别

核心关键词

I2CACK上拉电阻逻辑分析仪NACKSTM32


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。侵权投诉
相关推荐HOT
面试官问“你空窗期在做什么”,电子工程师怎么回答?求职面试策略

其他类面试基础求职策略题本文概述空窗期是面试官几乎必问的敏感问题,回答得好是加分项,回答不好容易被误判稳定性或能力。面试官想听的不是“家里有事”敷衍,而是你在这... 详情>>

2026-09-05 09:52:53
PCB IBIS模型怎么获取与质量验证

分类:PCB仿真经验级别:中级难度:中等题型:技术论述题在高速PCB设计面试中,IBIS模型是信号完整性分析绕不开的话题。很多候选人能说出"IBIS是行为级模型... 详情>>

2026-08-20 10:13:02
PCB发板前DFM检查清单有哪些?PCB工程师面试必考题

分类:PCB设计工程师面试经验级别:中级难度:★★★☆题型:发板前设计检查PCB设计工程师面试:发板前DFM检查本文概述PCB发板前DFM检查是保证板子可制造、... 详情>>

2026-08-08 15:14:59
ESD测试打接口设备就复位怎么办?EMC工程师面试整改思路

分类:EMC电磁兼容经验级别:1-3年难度:中级题型:故障分析+整改方案本文概述:ESD测试打接口导致设备复位,是EMC测试中最常见的故障现象之一。根本原因是静... 详情>>

2026-08-14 11:25:16
BOM查错助力元器件采购

华秋DFM软件最新版→下载地址电子产品的Bill of Materials是一简单而又繁琐的工作,零件繁多,稍有不慎就可能会导致采购错误的元器件, 人工匹配,出... 详情>>

2024-03-29 09:41:17
开班信息