[STM32F4] STM32 I2C SDA、SCL 两根总线持续被拉低故障

[复制链接]
86|17
地瓜patch 发表于 2026-6-20 14:44 | 显示全部楼层 |阅读模式
做了一块 DSP 吉他效果器电路板,主控 STM32F405RGT7,搭配 TLV320AIC33 音频 Codec,通过 I2C 配置 Codec 寄存器。

一旦启动 I2C 通讯,逻辑分析仪观测 SDA、SCL 两条线永久保持低电平,总线锁死。

重新新建最简工程,仅写 I2C 地址扫描逻辑,故障完全一致;

将同一组引脚临时切换为普通推挽输出 GPIO,手动置高,SDA/SCL 可以稳定拉高,证明硬件不存在短路、对地漏电;

反复核对 PCB 走线、焊接、上拉电阻,硬件线路无问题。

基本判定是软件代码配置问题,但找不到出错点,求排查思路。

EmmaTT 发表于 2026-6-20 18:32 | 显示全部楼层
先检查 I2C 时钟配置,可能时钟源或预分频设置错误导致时钟不产生。检查 I2C 状态寄存器,看是否有仲裁中断或总线错误。同时,确认你的 I2C 代码没有在主循环中意外阻塞。
茉璃夏 发表于 2026-7-3 16:16 | 显示全部楼层
I2C总线锁死在低电平,最常见的原因是STM32的I2C外设输出了时钟延展信号,但主机未正确响应,导致从机拉住SCL等待数据。
classroom 发表于 2026-7-3 16:48 | 显示全部楼层
将GPIO设为推挽输出能拉高,说明硬件通路没问题,但I2C外设开漏模式下,输出驱动器配置可能错误地设为了推挽输出,导致高电平无法正常释放。
cr315 发表于 2026-7-3 17:18 | 显示全部楼层
检查GPIO复用功能配置是否选择了正确的AF,对于F4系列,I2C的AF通常为AF4,若误配为AF0或其它功能,输出行为可能异常。
duo点 发表于 2026-7-3 17:59 | 显示全部楼层
复位后I2C外设的CR1寄存器中PE位需要先置1,但如果SWRST位未正确清除,外设可能处于复位状态,输出被强制拉低。
flycamelaaa 发表于 2026-7-3 18:30 | 显示全部楼层
逻辑分析仪显示两线同时低电平,可能在起始条件之后立即进入了总线错误状态,硬件将总线状态机卡在仲裁丢失或错误检测状态。
jcky001 发表于 2026-7-3 19:00 | 显示全部楼层
检查STM32的I2C时钟源配置,若使用的HSI或HSE时钟频率与I2C时序寄存器计算值不匹配,可能导致信号边沿过缓或过冲,被从机识别为低电平。
onlycook 发表于 2026-7-3 19:35 | 显示全部楼层
示波器查看SDA/SCL波形的边沿斜率,若上升时间过长,从机可能将高电平误判为低电平,导致总线持续被识别为忙。
powerantone 发表于 2026-7-3 20:12 | 显示全部楼层
代码在发送START条件后如果未正确检测SB标志就继续操作,可能导致外设发送了不完整的数据序列,总线状态机死锁。
probedog 发表于 2026-7-3 20:45 | 显示全部楼层
若使用DMA方式发送数据,但DMA传输完成中断未及时清除,I2C外设可能处于等待DMA重载状态,一直拉低SCL。
solty 发表于 2026-7-3 21:21 | 显示全部楼层
检查I2C_CR2寄存器中的NBYTES和RELOAD位配置,如果设置了自动重载但未在传输结束时正确更新,外设会持续等待新的数据。
spicy 发表于 2026-7-3 21:58 | 显示全部楼层
从机TLV320AIC33的I2C地址若包含读/写位,在发送地址时如果地址字节中的R/W位错误,从机可能未回应ACK,主机进入无应答状态后未发送STOP,导致总线悬停。
stormwind123 发表于 2026-7-3 22:32 | 显示全部楼层
I2C的CR1寄存器中的STOP或START位在写入后需要硬件自动清零,若因软件重复写入或未等待清零就执行后续操作,可能产生非法总线序列。
七毛钱 发表于 2026-7-4 10:22 | 显示全部楼层
检查是否启用了I2C的模拟滤波器或数字滤波器,滤波器的延迟在某些时钟配置下可能累积到超过半个周期,导致边沿检测错误。
今天会画卧蚕吗 发表于 2026-7-4 11:12 | 显示全部楼层
复位后从机可能处于低功耗模式或未上电就绪,此时主机发起通讯,从机会将SCL拉低直到内部初始化完成,若初始化耗时过长则总线锁死。
内政奇才 发表于 2026-7-4 12:48 | 显示全部楼层
建议在I2C初始化前先发送9个SCL时钟脉冲来复位总线上的从机状态机,释放被拉低的SDA线,然后再配置硬件外设启动通讯。
Jacquetry 发表于 2026-7-4 18:16 | 显示全部楼层
检查I2C控制寄存器,确保I2CEN和PE位都正确配置,同时检查时钟源和预分频设置,看是否有时钟错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

3039

主题

18148

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部
0