24C64为I2C总线的E2PROM。SCL为400kHz时钟线,SDA为双向数据线,A2、A1、A0三位为片选地址,即I2C总线上最多可并联8个串行E2PROM芯片。对E2PROM的 *** 作方式由读写控制命令字决定,如图4所示。其中"1010"为4位读写控制码,R/W为读写控制位:"0"为写 *** 作,"1"为读 *** 作。所以结合图1可知A2H为写控制命令字,A3H为读控制命令字。
对存储器写 *** 作,首先,单片机向24C64发一个START命令,产生开始条件。然后,发写命令控制字(如A2H)。当24C64接到命令后,进入一个写周期,再由单片机发送存储地址,即确定数据写入到存储器的哪个地址,随后,单片机将要存储的数据送入到SDA数据线上。写周期结束时,单片机再发一停止位(STOP)。
对存储器读 *** 作,首先,单片机向24C64发一个START命令,产生开始条件。然后发写命令控制字(如A2H)。当24C64接到命令后,进入一个写周期,再由单片机发送存储地址。存储地址发送成功后,单片机又向24C64发一个START命令,产生开始条件,然后发读命令控制字(A3H)。当24C64接到命令后,进入一个读周期,单片机从SDA数据线上读出指定存储地址中的数据。读周期结束时,单片机再发一停止位(STOP)。(程序略)
值得注意的是,对存储器 *** 作时,每读写一个字节,单片机必须送一个应答位(ACK),释放一下SDA数据线,以便存储器能继续接收数据。
mcu_address是指你要传送的数据在单片机中的存放地址,比如一个数组,它就是指这个数组的首地址;at24c64_add是指你传送过来的数据在EEPROM中的存放地址,可以是0x0000~0x0fff中的任意地址;count就是指你传送过去的数据个数。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)