I2C接口的EEPROM操作

虽然这个器件很老了,但是简单好用,也是I2C操作的一个经典例子。

首先确认地址。24C01/02/04/08/16/32等等器件,后缀的数字是比特数。比如08,是8K bit,1024个字节。所以容量不同,他们的寻址地址范围也是不一样的。

 参考上面的图。对芯片的操作,一般是先发送8位的器件的I2C地址,再发送8位的内部字节地址。8位的字节地址,智能寻找256个字节,那么容量超过256个字节怎么办呢?比如24WC08,他有1024个字节的存储空间,即10位字节寻址地址,那么其中两位就要分配到器件地址中,即A1和A0被忽略掉了。

如果字节寻址空间大于16K,即使占用了3位器件地址也没用了。那就只能发送两次字节的地址了,他也就不需要占用器件的A2/A1/A0了。

所以有下面的寻址代码

    if(EE_TYPE>AT24C16)
    {
        IIC_Send_Byte(0XA0);       //纯器件地址
        IIC_Wait_Ack();
        IIC_Send_Byte(ReadAddr>>8);//字节寻址的高位
    }
    else
    {
        IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //器件地址+字节寻址的高位,类似page寻址
    }        
         
    IIC_Wait_Ack(); 
    IIC_Send_Byte(ReadAddr%256);   //发送字节寻址的低位
    IIC_Wait_Ack();        

 

转载于:https://www.cnblogs.com/nasduc/p/8214682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值