最近在做几个项目,都需要用到eeprom存储芯片。在使用周立功提供的硬件I2C读写AT24CX X系列芯片程序时,对以下一段程序存在一些困惑:
if (suba_type == 3)
{ /* 子地址结构为8+X */
I2C_sla = sla + ((suba >> 7 )& 0x0e); /* 读器件的从地址 */
I2C_suba = suba & 0x0ff; /* 器件子地址 */
I2C_suba_num = 1; /* 器件子地址为8+X */
}
因为用的是AT24C08,一直不明白上面的代码为什么从地址与子地址有关联?
后来在网友的帮助下才了解到原来24C08内部是由4片24C02级联组成的,需要通过内部A0、A1来对页进行选择。
图一
图二
以上只是简单写了一下,估计自己也没有描述清楚。希望有人可以相互探讨,共同进步!