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

[其他ST产品] STM32 IIC总线死锁问题总结

简介我们这个项目是一款移动电源设备,该设备在不工作的时候,在调试过程中发现,在设备休眠时不断的唤醒设备,会偶发设备死机现象,怎么操作设备都没有反应。

问题点:
现象:当设备死机时,我们发现这时候IIC死锁了,也就是SDA, SCL电平都为低电平,无法通信。

问题:偶发唤醒的时候,IIC通信挂掉,MCU出现死机现象?
案例中设备是低功耗设备,设备休眠时会关闭IIC上拉电源,以降低功耗,外部从机有2个。

一、先分析软件层面
当IIC死锁复现时,首先确认两个问题:
1.用STM32CubeProgrammer读取寄存器状态数据,IIC配置时要把故障中断使能,TCIE和ERRIE标志为1,则表示故障中断已配置。



I2C_CR1的寄存器TCIE和ERRIE


配置IIC故障[color=rgb(78, 161, 219) !important]中断,可以手动加入程序中:



2.PE标志位置1就是说明IIC已经使能,等效于__HAL_I2C_ENABLE(&hi2c1);BUSY标志位置1说明硬件已经开始,没有问题。




IIC寄存器数据没有问题,说明软件是OK的,那么,再从硬件角度分析。

二、分析硬件
1.IIC上拉电源是否稳定?
2.IIC上拉电阻阻值是否合适?一般1~10K。
3.IIC电源的电容是否过大?
4.一主多从通信,是否都为读数据?如果有一路有写数据,要分时去通信,避免数据交叉通信。
5.主机、从机是否都为硬件IIC?
经过以上排查,基本问题可以解决。
最终经过和供应商技术支持沟通,问题出在STM32的IIC是硬件IIC,而充电管理IC的IIC是软件模拟IIC,这就是硬件IIC和模拟IIC通信,时序无法保证一致,当软件模拟的IIC应答超时,硬件IIC就会进入死锁状态,现象就是死机。

重要提示:IIC总线通信时,如果设计为一主多从时,主机为硬件IIC,从机也得是硬件IIC,从机是软件模拟IIC时,那么主机最好也设计为模拟IIC,否则,在写数据时有可能会出现总线死锁。
另外,一主多从通信时,最好都是只读数据,如果有一个从机有写数据,要单独一路IIC通信。因为两个从机在一个总线上,当一个从机被写的时候,同样另一路从机也在总线上,虽然从机地址不同,但是也有一定风险。



---------------------
作者:liao6
链接:https://bbs.21ic.com/icview-3492538-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

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

相关文章:

  • 斐讯N1刷F大62+o固件后如何用亚信AX88179网卡实现双网口?保姆级教程
  • AI建站工具避坑指南:10个高频问题与解答,让你安心建站
  • Word2Vec实战:从预训练模型到自训练模型的工程化应用与避坑指南
  • Qwen3-ASR-0.6B低代码实践:Node.js快速集成方案
  • python微信小程序的ai体育馆场地预约提醒系统
  • 2026年成都装修公司排名前五权威发布!照着选,装修不踩雷 - 深度智识库
  • 智能音箱远场语音交互的秘密:多麦克风阵列的波束成形技术详解
  • 控制体脂率:早上做对这3件事,晚上避免这3个习惯,亲测有效
  • 从零到一:ROS2机械臂硬件在环实战配置
  • 2026年Python爬虫框架终极选型指南:Scrapy/Playwright/BeautifulSoup全维度深度评测
  • ArcGIS新手必看:5分钟搞定景区专题地图制作(附B站同款数据)
  • 2026年南宁玻璃胶优质供应商推荐: 南宁玻璃胶厂家精选推荐助力装修选材 - 海棠依旧大
  • 超详细对比:Dell iDRAC vs 超微IPMI vs 华为iBMC 的日常运维体验与ipmitool适配指南
  • 3/18
  • 分库分表下的分页查询,到底怎么搞?
  • 有效推动组织变革必读的两本管理书籍推荐
  • 用Python+Flask给树莓派监控加人脸识别:Picamera2实战教程
  • 管理者必读的三本创新书籍推荐
  • 实战复盘:我是如何用GraphSAGE+Neo4j在信也杯金融反欺诈比赛中拿到成绩的
  • 导数与三角函数相结合题型
  • 深信服零信任实战:从“永不信任”到“持续验证”的架构演进
  • Ubuntu 20.04.2.0 离线环境下的科学计算栈:从GCC到MKL的完整部署指南
  • 40:要素2完美化:消除滑坡的硬编码判断标准与权重矩阵
  • Leather Dress Collection 在边缘计算场景的轻量化部署探索
  • 美通卡回收速看这份宝藏攻略 - 京顺回收
  • 直播数据抓取功能修复全记录:从故障排查到技术重构
  • SiameseUIE实战教程:基于SiameseUIE构建微信公众号文章标签生成系统
  • pybind11进阶技巧:如何高效处理C++与Python间的数据转换(2024最新版)
  • yysScript:阴阳师自动挂机脚本的技术实现与应用指南
  • DeerFlow效果展示:AI自动生成的比特币分析报告,效果惊艳