zoukankan      html  css  js  c++  java
  • 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();        
  • 相关阅读:
    2.25家庭记账本小软件
    2.10简单体温记录小软件总结
    4.26PHP
    4.25Android
    4.24css
    4.23css
    4.22电梯演讲
    4.21python
    4.20python
    4.19python
  • 原文地址:https://www.cnblogs.com/nasduc/p/8214682.html
Copyright © 2011-2022 走看看