有时候i2C总线死掉

[复制链接]
1144|16
 楼主| wangzsa 发表于 2019-3-14 17:01 | 显示全部楼层 |阅读模式
用单片机与E2PROM通信的时候,读写e2prom操作的时候,如果中途单片机硬件复位(/RST引脚外来信号复位),再进入程序的时候,则有时候i2C总线死掉(表现为SDA始终为低电平),I2C无法再通信
guoyt 发表于 2019-3-14 17:05 | 显示全部楼层


单片机拉死?
 楼主| wangzsa 发表于 2019-3-14 17:07 | 显示全部楼层
应该不是单片机拉死,因为单片机复位了,I2C总线应该会复位
 楼主| wangzsa 发表于 2019-3-14 17:12 | 显示全部楼层
我用的是硬件i2C,不是用io口模拟的
hanwe 发表于 2019-3-14 17:15 | 显示全部楼层

这个有可能,因为EEPROM没有复位
yufe 发表于 2019-3-14 17:17 | 显示全部楼层

有些EEPROM有超时功能,可以自动退出死锁状态,可以通过MCU控制EEPROM供电解决
llia 发表于 2019-3-14 17:21 | 显示全部楼层
是的,这样可以MCU控制EEPROM是电复位
wangpe 发表于 2019-3-14 17:24 | 显示全部楼层

应该是I2C总线乱掉了。
单片机给个STOP信号试试看。
 楼主| wangzsa 发表于 2019-3-14 17:27 | 显示全部楼层
谢谢了,后经过测试分析,确实是E2pROM将i2C拉死。
langgq 发表于 2019-3-14 17:30 | 显示全部楼层
网上查看说发9个clk可以激活,试试检验这种方法
zhuww 发表于 2019-3-14 17:34 | 显示全部楼层

9个clk可以激活,在NXP的文档里面谈到过,NXP(Philips)作为I2C总线的鼻祖,这样的说法是可信的。
zhanglli 发表于 2019-3-14 17:38 | 显示全部楼层
楼主用IO口模拟试试看,用硬件I2C有可能哪些寄存器的设置没注意到引起问题
 楼主| wangzsa 发表于 2019-3-14 17:42 | 显示全部楼层

弱弱的问一句    LPC1114的ROM bootloader 中的向量表  在复位后 是自动出现在flash中的0x0000地址处吗?
hanwe 发表于 2019-3-14 17:47 | 显示全部楼层


经过验证确实可以激活
 楼主| wangzsa 发表于 2019-3-14 17:50 | 显示全部楼层
呵呵,可以结贴了,多谢大家
chuntian2016 发表于 2019-3-22 23:53 | 显示全部楼层
这个看MCU的总线机制的
smilingangel 发表于 2019-3-23 23:29 | 显示全部楼层
这就整一个容错机制的呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

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