wangzsa 发表于 2022-9-4 10:45

I2C无法再通信

用单片机与E2PROM通信的时候,读写e2prom操作的时候,如果中途单片机硬件复位(/RST引脚外来信号复位),再进入程序的时候,则有时候i2C总线死掉(表现为SDA始终为低电平),I2C无法再通信

dingy 发表于 2022-9-4 10:47

单片机拉死?

wangzsa 发表于 2022-9-4 10:49

应该不是单片机拉死,因为单片机复位了,I2C总线应该会复位

wangzsa 发表于 2022-9-4 10:52

我用的是硬件i2C,不是用io口模拟的

zhenykun 发表于 2022-9-4 10:54

这个有可能,因为EEPROM没有复位

renyaq 发表于 2022-9-4 10:57


有些EEPROM有超时功能,可以自动退出死锁状态,可以通过MCU控制EEPROM供电解决

wangzsa 发表于 2022-9-4 11:05

是的,这样可以MCU控制EEPROM是电复位

dingy 发表于 2022-9-4 11:08


应该是I2C总线乱掉了。
单片机给个STOP信号试试看。

wangzsa 发表于 2022-9-4 11:11

谢谢了,后经过测试分析,确实是E2pROM将i2C拉死。

zhanghqi 发表于 2022-9-4 11:13

网上查看说发9个clk可以激活,试试检验这种方法

wyjie 发表于 2022-9-4 11:16

9个clk可以激活,在NXP的文档里面谈到过,NXP(Philips)作为I2C总线的鼻祖,这样的说法是可信的。

pengf 发表于 2022-9-4 11:18

楼主用IO口模拟试试看,用硬件I2C有可能哪些寄存器的设置没注意到引起问题

pengf 发表于 2022-9-4 11:20

弱弱的问一句    LPC1114的ROM bootloader 中的向量表在复位后 是自动出现在flash中的0x0000地址处吗?

huangchui 发表于 2022-9-4 11:22

经过验证确实可以激活

stly 发表于 2022-9-4 11:24

这个看MCU的总线机制的

pengf 发表于 2022-9-4 11:27


这就整一个容错机制的呗
页: [1]
查看完整版本: I2C无法再通信