1. FT24C16芯片介绍

‌FT24C16芯片是一款2线双向串行接口的EEPROM(Electrically Erasable Programmable Read-Only Memory),由Fremont Micro Devices(现更名为辉芒微电子)生产。‌

基本参数和特性
‌存储容量‌:128页,每页16字节,共128*16 = 2048 Byte 即2048字节,2K
‌工作电压‌:1.8V~5.5V,支持低电压操作。
‌待机电流‌:待机电流典型值为1μA。
‌读写速度‌:写周期最大为5ms,I2C时钟频率为1MHz(5V),400kHz(1.8V、2.5V、2.7V)。
‌接口类型‌:I2C总线。
‌数据保护‌:具有硬件数据写保护功能。
‌可靠性‌:高可靠性,擦写寿命可达100万次,数据保持时间长达100年

2. 芯片封装介绍

图1 芯片封装
图1 芯片封装
查datasheet,芯片有8pin和5pin的封装,如图1所示。笔者使用的是SOT-23的5pin封装。

pin 功能描述
1 SCL, IIC总线-时钟线
2 GND, 芯片供电地
3 SDA, IIC总线-数据线
4 VCC, 芯片供电正极 1.8V~5.5V
5 WP, 芯片写保护引脚,高电平有效

8pin封装与5pin封装引脚功能描述一致,其中,NC表示不连接NC(Not Connected)表示该引脚不进行连接,没有实际功能。

2.1 芯片设备地址

IIC总线协议规定,芯片通信需要有设备地址,而从芯片封装我们得知,此芯片没有IIC地址配置引脚,故不能像其他EEPROM芯片一样通过硬件配置IIC地址。如图2所示,为AT24C02芯片应用电路图。A0,A1,A2为设备地址配置引脚。
图2 AT24C02应用电路
图2 AT24C02应用电路

图3 24C02地址位图3 24C02地址位

那问题来了!
芯片地址无法用硬件配置,FT24C16的设备地址到底是多少呢???
芯片地址无法用硬件配置,FT24C16的设备地址到底是多少呢??
芯片地址无法用硬件配置,FT24C16的设备地址到底是多少呢???

大部分EEPROM设备的高4位地址都是1010,FT24C16也不例外,也固定为1010。即0xA
但是设备地址是7位+读写位,那低3位地址是多少?
首先,该芯片容量是2048字节,对应的数据地址也就是0~2047,即0x7ff,最大占据2个字节。而设备地址是不是刚好有3位空着,数据地址中的高字节,就存放在设备地址的低3位中,故我们就只需要发送设备地址+1字节的数据地址就可读取芯片的所有数据。

在前255字节设备地址和数据看不出问题,读取命令为例,读取第242个字节数据,发送设备地址0xA0, 数据地址 0xF1
但是读取256字节时,读取命令就变成:设备地址0xA2, 数据地址0x01;
但是实际的设备地址还是0xA0, 数据地址为0x101
在这里插入图片描述
即!设备地址的低3位,实际是数据地址的高字节。发送的数据地址就为数据地址的低字节

3. FT24C16读写测试

// 1.定义2K数组
uint8_t rwBuf[2048];

// 2.初始化数据,16字节为一组,填入数据1~128
uint16_t i = 0, j = 0;

for(i = 0; i < 128; i++)
{
    memset(&rwBuf[j], i+1, 16);
    j += 16;
}

// 3.写入FT24C16数据后,把buffer清空
eeprom_write( 0, rwBuf, sizeof( rwBuf ) );
memset( rwBuf, 0, sizeof(rwBuf) );

// 4.读取FT24C16数据,并存入buffer中
eeprom_read( 0, rwBuf, sizeof( rwBuf ) );

// 5.观察读取到的数据是否和刚开始写入的数据一致。

4.实验结果

4.1 初始化数据, 16字节为一组,填入数据1~128,将芯片内存全部写满。

在这里插入图片描述
初始化数据,头部

在这里插入图片描述
初始化数据,尾部,右下角的0x80地址为 0x20000F99, 头部数据的左上角第一个0x01地址为0x2000079A
0x20000F99 - 0x2000079A = 7FF 即2047个数据 +1 共2048个数据

4.2 数据写入芯片后,buffer清零

在这里插入图片描述
在这里插入图片描述

4.3 重新读取FT24C16芯片数据

在这里插入图片描述

在这里插入图片描述
读取出的所有数据,与写入数据一致!

小结

  • FT24C16有2048字节的数据,数据地址对应0~2047,地址位最大0x7FF,2字节
  • EEPROM的地址一般为7位,FT24C16没有地址配置,而高4位为固定值1010(b),低3位与数据地址(1字节)共同组成了实际发送的数据地址3+8=11位
  • 仅测试FT24C16,其他型号未测试。

第一次写文章,难免有疏漏,有疑问、建议欢迎评论区讨论!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐