这里我们使用软件IIC
把PB6、PB7的GPIO配置成输出模式即可
然后导入官方资料包给的IIC文件
然后需要分别写一个IIC与EEPROM的发送和接收函数
发送:
void eeprom_write(uchar arr,uchar dat)
{
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(arr);
I2CWaitAck();
I2CSendByte(dat);
I2CWaitAck();
I2CStop();
}
接收:
uchar eeprom_read(uchar dat)
{
uchar datt;
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(dat);
I2CWaitAck();
I2CStop();
I2CStart();
I2CSendByte(0xa1);
I2CWaitAck();
datt = I2CReceiveByte();
I2CWaitAck();
I2CStop();
return datt;
}
我们的EEPROM一个数据存放单元只能存放一个字节的数据
如果需要存入一个int(两个字节)类型的数据,需要分开存放进行写入,注意写入需要一定的时间,因此需要进行一个10ms的延时
读的时候需要进行位操作,把第一个字节的数据移到高八位,再与上我们的低八位即可
写:
read_count1 = eeprom_count >> 8;
read_count2 = eeprom_count&0xff;
eeprom_write(1,read_count1);
HAL_Delay(10);
eeprom_write(2,read_count2);
读:
eeprom_count = (eeprom_read(1)<<8) + eeprom_read(2);
以上就是我们的EEPROM读写操作。