EEPROM 24LC256問題請教

2019-08-17 05:23发布

目前拿到一顆EEPROM 256K
使用原子的碼修改#define EE_TYPE AT24C256
AT24CXX_WriteOneByte(511,0x55); 但讀到的temp=AT24CXX_ReadOneByte(511); temp=0xFF;
下列是原子的代碼,找了論坛很多版本看起來都沒問題,之前在用24LC02時也沒問題。
請問還需要修改那裡才OK。

void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{                               
    IIC_Start(); 
 if(EE_TYPE>AT24C16)
 {
  IIC_Send_Byte(0XA0);     //發送寫命令
  IIC_Wait_Ack();
  IIC_Send_Byte(WriteAddr>>8);//發送高地址
  }else
 {
  IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //發送器地址0XA0,寫數據
 } 
 IIC_Wait_Ack();   
    IIC_Send_Byte(WriteAddr%256);   //發送低地址
 IIC_Wait_Ack();                   
 IIC_Send_Byte(DataToWrite);     //發送Data         
 IIC_Wait_Ack();           
    IIC_Stop();                   //產生一個停止指令
 delay_ms(10); 
} 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);//發送高位址
  //IIC_Wait_Ack();     
 }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+((ReadAddr/256)<<1));  //進入接收模式   
  IIC_Send_Byte(0xA1);  
 IIC_Wait_Ack(); 
  temp=IIC_Read_Byte(0);    
  IIC_Stop();             //產生一個停止條件 
 return temp; 
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。