管理员
  
- 积分
- 165540
- 金钱
- 165540
- 注册时间
- 2010-12-1
- 在线时间
- 2117 小时
|
发表于 2012-3-14 10:23:06
|
显示全部楼层
一下图片来自24CXX中文资料.pdf的第
注意图片的第二点,a8,a9,a10对应的意义.
24c02容量是256字节,故只需要用8位地址即可表示.
24c04容量为512字节,需要9位地址.
24c08容量为1024字节,需要10位地址.
24c16容量为2048字节,需要11位地址.
而大于24c16的,无法用11位地址表示了,故需要2个字节的地址.
那么这里的a8,a9,a10,就是对应这几个的容量的最高位/数位.
再看代码:
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//发送高地址
}else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr%256); //发送低地址
现在你问(ReadAddr/256)<<1怎么来的,你说怎么来的?
|
|