在I2C总线上传输操作是以8位+ACK/NoACK共计9位为单位进行的。发送是从位7(MSB)开始进行的,虽然一般的串口(PC机的COM端口等)是由位0(LSB)开始发送的,但I2C总线是相反的,这一点需要注意。接收8位数据或者指令的接收方在下一个时钟输出ACK/NoACK位,如果是低电平则表示ACK;如果是高电平则表示NoACK。
写操作包括字节写及页面写两种。字节写是只置换特定的1个地址;而页面写可置换汇总了16字节界限内的连续的地址范围(页)。各种写操作的流程图如图所示。

图 I2C存储器的字节写与页面写
1. 字节写
这是指定任意的地址(8位)写人数据的方式。
起始字节的DEVSEL按照前面描述的起始数据的格式,位7~4是“1010”的固定模式,位操作(“1”)还是写操作(“0”)。
如果存储器处于写保护状态(WC引脚为高电平等),则在接收地址之前一直返回ACK信号,对于之后传输的数据,则返回No-ACK信号。
数据发送完毕后,如果检测出来自主机的结束条件,则EEP-ROM内部开始进行写入操作。根据数据手册可查出完成写入操作所需要的时间。+5V的产品需要5ms,其他的产品大约需要10ms左右的时间。
EEPROM内部的替换周期在进行过程中,即使发送下一个指令也将返回NoACK信号。因此,利用该NoACK信号就可判断内部的操作是否完成。
2. 页面写
页面写操作本身与字节写是相同的。由于在存取后地址自动进位,因而可以按序发送1页(16字节)以内的数据。实际上向存储器单元的写人操作,与字节写相同,都是在检测出结束条件后进行的,所以需要等待,直到操作结束,然后再进行下一个操作。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。