目录
I2C协议
I2C(Inter - Integrated Circuit总线是一种由PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。也可以简单地理解为I2C是微控制器与外围芯片的一种通讯协议。在不同的书籍中,可能会称为I2C,IIC,或者Ⅰ平方C,但是概念也是一样的,只是叫法不同。
24C02存储芯片
CT117E电路所用的EEPROM存储器24C02
24c02的使用
24c02的初始化
比赛会提供蓝桥杯官方库文件“i2c.c”和“i2c.h”,其初始化可以直接调用当中的库函数即可。初始化的库函数如下:
i2c_init();
24c02的基本控制方法(基于蓝桥杯官方库文件)
24c02的数据写入
void _24c02_Write(u8 address,u8 data)
{
I2CStart();
I2CSendByte(0xa0);//write
I2CWaitAck();
I2CSendByte(address);//
I2CWaitAck();
I2CSendByte(data);//
I2CWaitAck();
I2CStop();
}
24c02的数据读取
u8 _24c02_Read(u8 address)
{
u8 temp;
I2CStart();
I2CSendByte(0xa0);//write
I2CWaitAck();
I2CSendByte(address);
I2CStop();
I2CStart();
I2CSendByte(0xa1);//read
I2CWaitAck();
temp = I2CReceiveByte();
I2CWaitAck();
I2CStop();
return temp;
}
根据以上代码为基础实现24c02的多组数据保存
void Save_All(u8 *data)
{
_24c02_Write(0x11,*(data+0));
_24c02_Delay(5);
_24c02_Write(0x11+1,*(data+1));
_24c02_Delay(5);
_24c02_Write(0x11+2,*(data+2));
_24c02_Delay(5);
}
根据以上代码为基础实现24c02的多组数据的读取
threshold[0]=_24c02_Read(0x11+0);
_24c02_Delay(5);
threshold[1]=_24c02_Read(0x11+1);
_24c02_Delay(5);
threshold[2]=_24c02_Read(0x11+2);
_24c02_Delay(5);
注意在每次读取和保存操作后都要进行等待(一段时间的延时),以防上一次读取与保存操作未完成。
参考文献
[1] I2C总线介绍与24CO2芯片 https://wenku.baidu.com/view/e3c1e6806529647d272852d1.html