AT24CXX的问题

2019-07-21 00:03发布



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

把型号改成了24c16
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
FantaSy_
1楼-- · 2019-07-21 03:26
估计是代码问题了、
Llinuxu
2楼-- · 2019-07-21 06:44
 精彩回答 2  元偷偷看……
笨鸟先飞鱼
3楼-- · 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);         
}
笨鸟先飞鱼
4楼-- · 2019-07-21 14:23
,用这个函数写其他地址的数据是不成功的。1~255是可以的
笨鸟先飞鱼
5楼-- · 2019-07-21 17:12
Llinuxu 发表于 2016-1-22 14:57
你看看所用的宏是否修改完了!

#define EE_TYPE AT24C16

这个位置还是改了的啊
笨鸟先飞鱼
6楼-- · 2019-07-21 20:28
 精彩回答 2  元偷偷看……