eeprom 说明
eeprom介绍
- AT24C01A,1K串行EEPROM:内部组织16页8字节,1K需要一个7位数据字地址进行随机字寻址。
- AT24C02,2K串行EEPROM:内部组织32页8字节,2K需要一个8位数据字地址进行随机字寻址。
- AT24C04,4K串行EEPROM:内部组织32页,每个16字节,4K需要一个9位的数据字地址进行随机字寻址。
- AT24C08A,8K串行EEPROM:内部组织64页,每个16字节,8K需要一个10位的数据字地址进行随机字寻址。
- AT24C16A,16K串行EEPROM:内部组织128页,每个16字节,16K需要一个11位的数据字地址进行随机字寻址。
设备寻址
1K、2K、4K、8K和16K EEPROM设备都需要一个启动条件下的8位设备地址字,以使芯片能够进行读取或写操作
设备地址字由前四个最重要位的强制性零序列组成,如图所示。这是所有EEPROM设备所共有的情况。
接下来的3位是1K/2K EEPROM的A2、A1和A0设备地址位。这3位必须与它们对应的硬线输入引脚进行比较。
4K EEPROM仅使用A2和A1设备地址位,而第三位是内存页地址位。这两个设备地址位必须与它们对应的硬线输入引脚进行比较。A0引脚没有连接。
8K EEPROM只使用A2设备地址位,接下来的2位用于内存页面寻址。A2位必须与它相应的硬线输入引脚进行比较。A1和A0引脚没有连接。
16K不使用任何设备地址位,而是将3位用于内存页面寻址。这些在4K、8K和16K设备上的页面寻址位应该被认为是下面的数据字地址中最重要的位。A0、A1和A2的大头针并不一致
rtt配置
硬件连接
iic配置
at24c02的驱动配置使能
编写eeprom测试源码
测试代码
at24cxx_device_t dev = at24cxx_init("i2c1",0); //这里的地址写零,应为我的a2 a1 a0 接了gnd
uint8_t buff[100];
uint8_t buff1[100];
for(int i=0; i<100; i++)
buff[i]=i+'a';
at24cxx_page_write(dev,0,buff,50);
rt_thread_mdelay(10);
at24cxx_page_read(dev,0,buff1,50);
rt_kprintf("\r\nread:");
for(int i=0; i<50; i++)
{
rt_kprintf("%d ",buff1[i]);
}
rt_kprintf("\r\n");