I2C子系统之at24c02简介


AT24C02存储规格



总共32个page,每个page为8byte。总共256KB(2Kb),地址的长度需要使用8bit(刚好可以用来表示256个字节的地址)来表示。

AT24CC02的地址





设备的地址由8bit组成,前4 bit是固定的(1010);接着的3 bit是和A2 A1 A0的硬件连接相关,通过指定这3 bit可以在统一个I2C系统里面最多连接8个AT24C02设备;第8bit用来表示读/写选择,1表示读/0表示写。AT24C02会和总线上的设备地址进行比较,假如一直则AT24C02输出一个0,不一致则返回的是standby状态。

TQ2440开发板的A2 A1 A0地址线全接地,所以此处AT24C02的读写地址格式为:

读AT24C02:1010 0001

写AT24C02:1010 0000

AT24C02写操作

1.1byte write




Byte write的操作时序如上图所示。主机在发送完毕device address,并且接受到确定信息后再接着发送需要写的地址(把这个数据写到哪个地址上),然后再发送数据。当AT24C02接受到这个数据时,会输出一个0,此时主机必须发送一个停止信号。然后AT24C02进入写时序,将刚才接受到的数据写到存储单元中,并且在此期间不响应任何输入,知道写操作完成。

1.2 Pagewrite:




Page write前面几步的操作和byteqrite操作类似,只是在成功发送第一个数据之后,主机在收到AT24C02发送的确认信息后,不会发送停止信号,而是接着发送剩余的数据,对AT24C02来说就再接着发送剩余的7个字节,直到1个page的数据发送完毕之后才发送停止信号。

在页操作的时候dataword address用于表示业内的地址的低3bits会每收到一个数据就自动增长,页地址维持不变。所以,当业内地址到顶端时,此时假如还有数据,则数据将会被放到页的起始地址处,页其实地址中之前存放的数据将被覆盖。即AT24C02页操作时,写入的数据大于8 byte,则大于8 byte的数据将重新从此页起始处存放,覆盖掉之前写入的数据。

AT24C02读操作

2.1 从当前地址读





AT24C02内部的data word address计数器会一直保存着最后一次读/写操作后自动变化的dataword address地址。此计数器中保存的地址值一直有效,直到AT24C02断电。并且这个地址值在读/写过程中的roll over方式不一样。读操作时候,会从最后一页的最后一个字节跳到第一页的第一个字节然;写操作时,会从当前页的最后一个字节跳到当前页的第一个字节。

所以从当前地址读的意思,就是从当前data word address中保存的地址中读取一个字节的数据。

2.2 从随机地址读




随机读写的操作就是先用一个写操作来骗过AT24C02器件,使其内部的data word address中的地址值修改,然后再通过current address reas操作来读取所需地址上的数据。

如图所示,先发送一个写操作,但是发送完毕word address之并不发送数据,而是发送一个停止信号,此时at24c02中的data word address中的地址值就被修改了,然后通过current address read去读取此地址上的数据。

2.3 连续读



 

相关阅读:

I2C子系统之at24c02读写测试
I2C子系统之ioctl() 
I2C子系统之at24c02简介
I2C子系统之总结
I2C子系统之内核中I2C子系统的结构
I2C子系统之I2C bus初始化——I2C_init()
I2C子系统之platfor_device初始化——smdk2440_machine_init()
I2C子系统之platform_driver初始化——I2C_adap_s3c_init()
I2C子系统之I2C总线时钟频率设置
I2C子系统之adapter device和client device注册——I2C_add_number_adapter()
I2C子系统之__I2C_first_dynamic_bus_num变量的相关分析
I2C子系统之 adapter driver注册——I2C_dev_init()
I2C子系统之write()

相关内容