24c16写地址超过256,又开始从0地址写数据了!求解决办法

2019-07-20 17:46发布

使用原子哥的IIC驱动写24c16,0-255地址数据读写都是正常的,但是当写到第256个地址的时候数据又从地址0开始写了!各位有没有遇到过这个问题!写的代码
[mw_shl_code=c,true]void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{       
        u8 eepaddr;
    IIC_Start();  
        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();          
        eepaddr = (u8)WriteAddr&0x00ff;
    IIC_Send_Byte(eepaddr);   //发送低地址
        IIC_Wait_Ack();                                                                                                              
        IIC_Send_Byte(DataToWrite);     //发送字节                                                          
        IIC_Wait_Ack();                                
    IIC_Stop();//产生一个停止条件
        delay_ms(10);         
}[/mw_shl_code]




读的代码

[mw_shl_code=c,true]u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{                                  
        u8 temp=0;                                                                                                                                                               
    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(ReadAddr%256);   //发送低地址
        IIC_Wait_Ack();            
        IIC_Start();                     
        IIC_Send_Byte(0XA1);           //进入接收模式                          
        IIC_Wait_Ack();         
    temp=IIC_Read_Byte(0);                  
    IIC_Stop();//产生一个停止条件            
        return temp;
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
龙之谷
1楼-- · 2019-07-20 21:49
 精彩回答 2  元偷偷看……
shaozp
2楼-- · 2019-07-21 00:34
龙之谷 发表于 2016-11-1 13:25
对写入地址进行判断限制

没明白 ?能在解释一下吗?
龙之谷
3楼-- · 2019-07-21 04:58
 精彩回答 2  元偷偷看……
shaozp
4楼-- · 2019-07-21 07:05
龙之谷 发表于 2016-11-1 13:55
EE_TYPE>AT24C16改成大于等于试试

完全不知道写哪去了,数据读写全部都是错误!
xmcjq
5楼-- · 2019-07-21 09:09
是不是写完后,要地址换页?到255时,再重新写一下,下一个地址。让它跳过来?
正点原子
6楼-- · 2019-07-21 12:59
 精彩回答 2  元偷偷看……

一周热门 更多>