以前一个想法,上电读取几个位置数据,如果不是设定的参数则写入新的覆盖。
uint8_t EEPROM_Vail[4] = {0}; // 用于上电验证是不是新写入的芯片,用于设置默认密码
// 读eeprom保存的数据
void Read_EEPSetPassword()
{
I2C_EE_BufferRead(EEPROM_Vail, 0, 4); // 读取0~3地址的四个字节
// 如果4个校验码为1 ff aa 55,,则直接读取eeprom中保存的修改密码,否则写入默认密码111,并且写入校验码。
if (EEPROM_Vail[0] == 0x01 && EEPROM_Vail[1] == 0xff && EEPROM_Vail[2] == 0xaa && EEPROM_Vail[3] == 0x55)
{
// 读取eeprom中存储的密码
I2C_EE_BufferRead(&SetPassword.Save_passwordBit0, 5, 1);
I2C_EE_BufferRead(&SetPassword.Save_passwordBit1, 6, 1);
I2C_EE_BufferRead(&SetPassword.Save_passwordBit2, 7, 1);
}
else
{
// 设置默认密码
SetPassword.Save_passwordBit0 = 1;
SetPassword.Save_passwordBit1 = 1;
SetPassword.Save_passwordBit2 = 1;
// 写入eeprom
EEPROM_Vail[0] = 0x01;
EEPROM_Vail[1] = 0xff;
EEPROM_Vail[2] = 0xaa;
EEPROM_Vail[3] = 0x55;
I2C_EE_BufferWrite(EEPROM_Vail, 0, 4);
I2C_EE_BufferWrite(&SetPassword.Save_passwordBit0, 5, 1);
I2C_EE_BufferWrite(&SetPassword.Save_passwordBit1, 6, 1);
I2C_EE_BufferWrite(&SetPassword.Save_passwordBit2, 7, 1);
}
}