FM24CL16 读写数据只能够操作0-255地址的,超出地址就会回到地址0开始!求原子哥帮忙!

2019-07-20 17:23发布

我使用的是原子哥的24CXXX的驱动程序,操作FM24CL16。0-255地址的数据读写操作都是正常的,但是只要地址超过255 就会返回到地址0开始读写。
下面是读写函数的。
[mw_shl_code=c,true]u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{                                  
        u8 temp=0;       
        u8 add_H;
        u8 add_L;
       
        add_L = ReadAddr;
        add_H = ReadAddr>>8;
       
    IIC_Start();  
        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(add_L);

        IIC_Wait_Ack();            
        IIC_Start();                     
        IIC_Send_Byte(0XA1);           //进入接收模式                          
        IIC_Wait_Ack();         
    temp=IIC_Read_Byte(0);                  
    IIC_Stop();//产生一个停止条件            
        return temp;
}

void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{       
        u8 eepaddr;
        u8 add_H;
        u8 add_L;
    IIC_Start();
        add_L = WriteAddr;
        add_H = WriteAddr>>8;
        if(EE_TYPE>AT24C16)
        {
                IIC_Send_Byte(0XA0);            //发送写命令
                IIC_Wait_Ack();
                eepaddr = (u8)WriteAddr>>8;
                IIC_Send_Byte(eepaddr);//发送高地址          
        }else
        {
                IIC_Send_Byte(0XA0 + ((WriteAddr / 256) << 1)); //发送器件地址0XA0,写数据
        }       
        IIC_Wait_Ack();
        IIC_Send_Byte(add_L);
        IIC_Wait_Ack();                                                                                                              
        IIC_Send_Byte(DataToWrite);     //发送字节                                                          
        IIC_Wait_Ack();                                
    IIC_Stop();//产生一个停止条件
        delay_ms(10);         
}
[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。