如何重置Giantec GT24C64A EEPROM内部地址计数器?
解决EEPROM内部地址计数器无法重置的读取问题
问题根源
你之前的命令把地址设置和数据读取拆成了两个独立的I2C事务(先执行写地址的完整起始-停止周期,再执行读数据的起始-停止周期),部分EEPROM在收到停止信号后不会保留设置的地址,或者第一次读取后地址计数器停留在最后一个读取位置,导致后续读取偏移错误。
正确的i2ctransfer用法
要确保地址设置和读取在同一个I2C事务中完成(用重复起始信号替代停止信号),命令格式如下:
i2ctransfer -y 0 w1r20@0x52 0x00
w1r20@0x52:表示对设备0x52先执行1字节写入,再执行20字节读取,整个过程是同一个I2C事务(无中间停止信号)0x00:写入的EEPROM起始偏移地址
执行该命令后,两次读取的结果会完全一致,因为每次都会从0x00位置开始读取。
用i2cget实现的方法
如果习惯用i2cget,可以先通过i2cset设置起始地址,再连续读取:
- 设置EEPROM读取起始偏移:
i2cset -y 0 0x52 0x00
- 连续读取20字节数据:
i2cget -y 0 0x52 0x00 w 20
注:
w表示按字读取,若你的EEPROM是单字节寻址,可替换为b;部分版本的i2cget支持-r参数实现连续读取,可根据实际情况调整。
内容的提问来源于stack exchange,提问作者Software_t
相关产品推荐
相关产品推荐

