eeprom读写数据不一致问题分析
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
问题描述
在进行嵌入式开发时,一位从事嵌入式工作的小伙伴在群里提出了一个问题:通过IIC向EEPROM写入8字节数据成功,但是读出的数据最后两个字节不一致。使用逻辑分析仪检测发现,写入操作没有问题,但读取的数据显示最后两字节为0xFF,而非预期的0x07和0x08。
逻辑分析和芯片手册阅读
问题分析首先涉及到芯片手册的阅读,了解EEPROM芯片AT24C02的功能和存储结构。AT24C02支持页写功能,并且其存储结构表明一个页可以存储8个字节,共有32页。在连续写入多个字节时,如果写入的地址达到页边界,则会循环到当前页的首地址继续写入。而连续读取数据时,地址会顺序递增,不受页边界的限制。
问题分析
通过阅读手册,可以推断出问题的原因。由于页写入的规则,从地址0x02开始连续写入8个字节时,最后两个字节会写入到页首地址0x00和0x01。因此,实际写入的数据分布是0x07和0x08写入到了0x00和0x01地址。读取从0x02开始的8个字节数据时,地址0x08和0x09处的数据默认为0xFF,所以读出的最后两个字节显示为0xFF。如果将读写地址改为0x00,则因为从页首开始,不会发生地址回转,因而能够正常读写。
相关阅读
文末还提供了相关阅读材料,包括I2C通信协议的解析和I2C信号线加上拉电阻的说明,以及如何快速阅读Datasheet的技巧。
文章最后呼吁读者关注“一起学嵌入式”,加入嵌入式交流群,共同学习和成长,并鼓励读者分享和点赞文章。
想要了解更多内容?