本帖最后由 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,时间也太浪费在里面了吧,请大神指教!!!!!!!!!!在线等 。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
从规格书到看到是5MS,相当于每写一个字节就需要延时最多5MS时间后,再写下一个字节,对吧。这样就讲通
一周热门 更多>