快捷搜索:  汽车  科技

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)4、应答与非应答:SDA=0为应答,SDA=1为非应答3、应答信号由谁产生:接收方(不按主从,只看数据收发方向)二、对应答ACK非应答NACK的几点理解1、 应答或非答的时钟,都由当前主器件发生。2、应答信号产生时刻:第9个时钟上(时钟信号有效之前)

最近又用到了EEPROM,EEPROM多采用IIC接口,抽时间总结了一下其驱动操作。

一、IIC的基本流程

只有当IIC总线处于空闲状态(SDA和SCL线均为高)时才可以启动数据传输。每次传输过程始于START条件,终于stop条件,二者之间的字节数没有限制。信息以字节(8bit)为单位传输,第9位由接收器产生应答ACK或非应答信号NACK。

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(1)

IIC的基本流程

二、对应答ACK非应答NACK的几点理解

1、 应答或非答的时钟,都由当前主器件发生。

2、应答信号产生时刻:第9个时钟上(时钟信号有效之前)

3、应答信号由谁产生:接收方(不按主从,只看数据收发方向)

4、应答与非应答:SDA=0为应答,SDA=1为非应答

5、未产生应答时的处理:被控器件不产生应答时(忙),必须释放总线将SDA置高,主控器产生一个stop信号终止数据传输。

6、接收完成的处理:主控器接收数据,接收到最后一个字节后,必须给被控器发送非应答位,是被控器释放数据总线,以便主控器发送停止信号从而终止数据传输。

三、EEPROM的读写

1. 字节写

字节写操作要求在器件地址和ACK应答之后,接收8字节地址,接收到这个地址后EEPROM应答ACK(0),然后发送要写入的8位数据,EEPROM接收到数据后,应答ACK(0),主器件发送stop终止写序列。

EEPROM接收到stop后进入内部写周期twr,数据写入非易失性存储器中,此期间所有输入无效,直到写周期完成,EEPROM才会有应答。

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(2)

字节写

2. 页写

通常24C02器件按8字节/页执行页写,24C04/08/16器件按16字节/页执行页写,24C32/64器件按32字节/页执行页写。

页写初始化与字节写相同,只是主器件不会在第一个数据后发送停止条件,而是在EEPROM收到每个数据后都应答"0"。最后仍需由主器件发送stop停止条件,终止写序列。

接收到每个数据后,字地址的低3位(24C02)或4位(24C04/08/16)或5位(24C32/64)内部自动加1,高位地址位不变,维持在当前页内。当内部产生的字地址达到该页边界地址时,随后的数据将写入该页的页首。通常如果超过8个(24C02)或16个(24C04/08/16)或32个(24C32/64)数据传送给了EEPROM,字地址将回转到该页的首字节,先前的字节将会被覆盖。

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(3)

页写

3. 应答查询

一旦内部写周期启动,EEPROM输入无效,此时级即可启动应答查询:发送start起始条件、器件地址。只有内部写周期完成,EEPROM才会应答ACK(0),之后才可以继续执行读/写操作。

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(4)

应答查询流程

4. 读数据

读操作与写操作初始化相同,需将器件地址为的RW位置为1。有当前地址读、随机读、顺序读三种方式。注意顺序读取时最后一个字节读取完毕后,主器件发送NACK(0)。

当前地址读:芯片不断电,访问地址就一直指向上次访问地址加1的位置。主器件发送start,等待EEPROM应答ACK后,当前地址的数据就随时钟送出,主器件无需应答0即NACK,发送stop,释放总线,完成当前地址数据的读取。

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(5)

当前地址读

随机读:初始化 发送访问的地址 当前读

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(6)

随机读

顺序读:随机读,变NACK位ACK,不停止,收数据第0个数据……收第n数据,NACK stop

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(7)

顺序读

四、其他

1.注意同一容量不同厂家的page大小可能不同

如ST的M24C02和贝岭BL24C02的page为16byte,而MICROCHIP的AT24C02的page为8byte。

2.写入完整1页后EEPROM接收到stop后进入内部写周期twr,不再接收任何数据,需延时5~10ms级别

eeprom芯片的驱动由哪个模块实现(IIC总线的EEPROM驱动总结)(8)

猜您喜欢: