24C02改为24c08,check()函数一直读出0xFF

2019-07-21 01:46发布

24c02读写正常,将24c02芯片换为24C08,check()返回一直是0xFF?代码如下:
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{                                  
        u8 temp=0;                                                                                                                                                               
        IIC_Start();  
        ///Devices Addr
        if(EE_TYPE>AT24C16)
        {
                IIC_Send_Byte(0XA0);          
                IIC_Wait_Ack();
                IIC_Send_Byte(ReadAddr>>8);
                IIC_Wait_Ack();                 
        }
        else{
                IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   
        }
        IIC_Wait_Ack();
       
        ///data Addr
        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;
}


void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{                                                                                                                                                                                          
    IIC_Start();
        ///Devices Addr
        if(EE_TYPE>AT24C16)
        {
                IIC_Send_Byte(0XA0);          
                IIC_Wait_Ack();
                IIC_Send_Byte(WriteAddr>>8);
        }else
        {
                IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));  
        }         
        IIC_Wait_Ack();
       
        ///Data Addr:
        IIC_Send_Byte(WriteAddr%256);   
        IIC_Wait_Ack();        
       
        ///Data:
        IIC_Send_Byte(DataToWrite);                                                     
        IIC_Wait_Ack();                                
        IIC_Stop();
        //delay_ms(10);       
        delay_ms(20);                
}

u8 AT24CXX_Check(void)
{
        u8 temp;
        temp=AT24CXX_ReadOneByte(55);          
        if(temp==0X55) return 0;                  
        else
        {
                AT24CXX_WriteOneByte(55,0X55);
                delay_ms(2);///
                temp=AT24CXX_ReadOneByte(55);          
                if(temp==0X55) return 0;
        }
        return 1;                                                                                          
}

引脚配置:
无标题.jpg
按大家说的方法,将SDA改为推完输出或开漏输出,初始check均返回0xFF(check中的位置,我用的是55,0~1023其他地址也试了,均返回0xFF);
24c08应该没有问题,换过一片,仍然不好用。
原来板上用的是24c02没有问题,现在改为24C08就不好用了,大家帮忙看看哪用问题,万分感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-21 01:55
自然谷 发表于 2018-11-20 11:29
原子哥,我是按你的电路自己焊的一个实验板,引脚配置是正确的。现在可以正常访问24c08了。但有个问题不 ...

可以安妮的改
正点原子
2楼-- · 2019-07-21 07:03
 精彩回答 2  元偷偷看……
自然谷
3楼-- · 2019-07-21 12:59
 精彩回答 2  元偷偷看……
13780387317wna
4楼-- · 2019-07-21 13:31
24c02改为24c08 程序哪地方改了呀  

一周热门 更多>