写EEPROM 24C16一个字节为什么要延时4MS以上的时间?

2019-07-20 15:41发布

本帖最后由 action99 于 2016-10-26 17:08 编辑

//AT24CXX指定地址写入一个数据//WriteAddr :写入数据的目的地址//DataToWrite:要写入的数据

voidAT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite){     u16ju;     IIC_Start();    if(EE_TYPE>AT24C16)        {               IIC_Send_Byte(0XA0);           //发送写命令               IIC_Wait_Ack();              IIC_Send_Byte(WriteAddr>>8);//发送高地址    }else        {                     ju=WriteAddr/256;          IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));  //发送器件地址0XA0,写数据    }
     IIC_Wait_Ack();        ju=WriteAddr%256;              IIC_Send_Byte(WriteAddr%256);        //发送低地址              IIC_Wait_Ack();     IIC_Send_Byte(DataToWrite);             //发送字节                                                        IIC_Wait_Ack();               IIC_Stop();                             //产生一个停止条件     delay_ms(4);   }

每写一个字节都需要延时一个4MS的时间,如果少于4MS数据就会出错,这是为什么?如果需要同时写入100个字节就需要400MS,时间也太浪费在里面了吧,请大神指教!!!!!!!!!!在线等 。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。