标题: 关于24c02存储器停止条件的时序问题 [打印本页]

作者: nicexiaowei    时间: 2022-9-22 23:03
标题: 关于24c02存储器停止条件的时序问题
在向24c02写入数据时,发现只能写入偶数,不能写入奇数。在论坛搜索时发现有人也遇到了同样的问题。EEPROM 24C02 不能写入奇数,请高手解答。然后我按照回答,将终止条件的时序由SDA=0;SCL=1;delay;SDA=1;delay;改为了SDA=0;delay;SCL=1;delay;SDA=1;delay后,便可以正常写入了。
到这我不明白,为什么都是在SCL为高电平时,SDA由低变高,但结果却不一样。还有明明偶数能写进去,但是奇数写不进去

作者: cnos    时间: 2022-9-22 23:52
SDA=0;SCL=1;中间没有延时,超过I2C最大允许速率了。
作者: 188610329    时间: 2022-9-23 01:55
通常, 只要不是 布线不合理, 并且有足够的上拉。
SDA=0;
SCL=1;delay();    只需要 这里有个 延时就可以了,
SDA=1;

而你参考的那个帖子, 原主是这个顺序,所以才发生问题。
SCL=1;
SDA=0;delay();
SDA=1;delay();

所以,你最好确认一下, 你之前到底是  操作顺序错,还是delay的问题?


作者: wufa1986    时间: 2022-9-23 08:02
直接复制STC官方例程,不要自己的理解去写
作者: hhxx23    时间: 2022-9-23 09:08
cnos 发表于 2022-9-22 23:52
SDA=0;SCL=1;中间没有延时,超过I2C最大允许速率了。

哦,原来如此,明白了
作者: coody_sz    时间: 2022-9-23 11:33
I2C是简单的时序,只要严格按照时序写,都不会有问题,24C系列,注意最高速度、数据时钟间的时间、页写入间隔时间。示波器看一下就明白了,大部分访问有问题都是因为用了更快速的MCU而没有调慢速度。
作者: nicexiaowei    时间: 2022-9-23 15:07
感谢大佬们的回复,我明白为什么能写进偶数,但写不进去奇数的原因了。归根到底还是我对终止条件的时序没有理解透彻。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1