一、模块原理图
二、模块性能讲解
根据上方表格说明,可以看出24C0x 最后一个数表示的是RRPROM的存储大小,例如24C02 他的大小就是2K(2048)个bit ,因为一字节等于8bit 所以总共有256个字节存储空间(也就是256个地址),芯片每个地址只有8bit(一字节)数据空间。
从上方图片可以看到每个引脚对应的功能,我们的24C02可以从硬件电路上来进行地址区别,可以使用两个数据线读写8个24c02设备。根据的就是A0/A1/12这三个引脚来设置设备地址
进行读写步骤:
-
IIC开始
-
发送设备器件地址
-
发送数据地址
-
......
部分主要代码-单设备读取
//初始化AT24c02 来判断是否读取数值
void Init_Read_24C02()
{
unsigned char Check_Dat;
Check_Dat = AT24C02_read_date(0);//从0地址读取检查值
if(Check_Dat != CHECK_DATA)//判断是否等于 CHECK_DATA
{
Clean_24c02();//不等于则清除所有数据
}
else
{ //监测到等于CHECK_DATA则读取出上次保存数据
Dat_1 = AT24C02_read_date(255);
Dat_2 = (AT24C02_read_date(2)<<8 | AT24C02_read_date(3));
}
}
部分主要代码-多设备读取
//初始化AT24c02 来判断是否读取数值
void Init_Read_24C02()
{
unsigned char Dat;
Dat = AT24C02_read_date(0,AT24C02_DEV_1);//从0地址读取检查值
if(Dat != CHECK_DATA)//判断是否等于 CHECK_DATA
{
Clean_24c02(AT24C02_DEV_1);//不等于则清除所有数据
}
else
{ //监测到等于CHECK_DATA则读取出上次保存数据
Dat_1 = AT24C02_read_date(255,AT24C02_DEV_1);
Dat_2 = (AT24C02_read_date(2,AT24C02_DEV_1)<<8 | AT24C02_read_date(3,AT24C02_DEV_1));
}
Dat = AT24C02_read_date(0,AT24C02_DEV_2);//从0地址读取检查值
if(Dat != CHECK_DATA)//判断是否等于 CHECK_DATA
{
Clean_24c02(AT24C02_DEV_2);//不等于则清除所有数据
}
else
{ //监测到等于CHECK_DATA则读取出上次保存数据
Dat_3 = AT24C02_read_date(255,AT24C02_DEV_2);
Dat_4 = (AT24C02_read_date(2,AT24C02_DEV_2)<<8 | AT24C02_read_date(3,AT24C02_DEV_2));
}
}
提供资料图示:
更详细代码视频讲解及代码下载请看: