AT24CXX的问题

2019-07-21 00:03发布



1、用原子哥的IIC程序,读24c02是没有问题的,但是把芯片改成24c06,为什么只能读写0~255地址的数据,其他地址的都写不进去。

把型号改成了24c16
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
笨鸟先飞鱼
2019-07-21 10:01

//ÔúAT24CXXÖ¸¶¨μØÖ·D′èëò»¸öêy¾Y
//WriteAddr  ′èëêy¾YμÄÄ¿μÄμØÖ·   
//DataToWrite:òaD′èëμÄêy¾Y
void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{                                                                                                                                                                                          
   E2prom_Start();
   Delay(1000);       
        if(EE_TYPE>AT24C16)
        {
                E2prom_Send_Byte(0XA0);
    Delay(500);
                //·¢ËíD′Ãüáî
                E2prom_Wait_Ack();
                Delay(500);
                E2prom_Send_Byte(WriteAddr>>8);//·¢Ëí¸ßμØÖ·          
                Delay(500);
        }
        else
        {               
                  Delay(500);
                  E2prom_Send_Byte(0XA0+((WriteAddr/256)<<1));   //·¢&#203;í&#198;÷&#188;tμ&#216;&#214;·0XA0,D′êy&#190;Y          
                       
                  Delay(500);
        }
           Delay(500);
                E2prom_Wait_Ack();
    Delay(500);       
    E2prom_Send_Byte(WriteAddr%256);   //·¢&#203;íμíμ&#216;&#214;·
          Delay(500);
                E2prom_Wait_Ack();                 
    Delay(500);       
                E2prom_Send_Byte(DataToWrite);     //·¢&#203;í×&#214;&#189;ú               
    Delay(500);       
                E2prom_Wait_Ack();  
    Delay(500);       
                E2prom_Stop();//2úéúò&#187;&#184;&#246;í£&#214;1ì&#245;&#188;t
                Delay(500);         
}

一周热门 更多>