EEPROM(FRAM) 偶发性读取数据错误的原因

工作中遇到偶发性的EEPROM的数据全部恢复到默认的情况,原因是客户从设备上获取24V电源电流过大,导致开机的时候上电速度变慢。

STM32的默认复位电压是1.7V左右,FRAM或者EEPROM是2.7V,电压从1.7V到2.7V的时间太长,导致STM32复位并运行程序到需要读取EEPROM时,由于上电速度太慢,电压不到2.7V,导致读取的数据错误。

我的程序中开机会判断数据是否正确,如果不合理就会恢复默认重新初始化EEPROM,导致了问题。

修改STM32的BOR复位电压到超过2.7V或者对工作电压进行监控,确保正确的电压再读取EEPROM,再简单点就是给足够的上电延迟时间。

 

/*******************************************************************************·
/// @brief 修改复位电压到2.85V
*******************************************************************************/
void Set_BOR_Level(void)
{
  static FLASH_OBProgramInitTypeDef 	OptionsBytesStruct;

  HAL_FLASH_Unlock();
  HAL_FLASH_OB_Unlock();
  OptionsBytesStruct.OptionType = OPTIONBYTE_USER;
  OptionsBytesStruct.USERType = OB_USER_BOR_LEV;
  OptionsBytesStruct.USERConfig = OB_BOR_LEVEL_4; //2.85V
  HAL_FLASHEx_OBProgram(&OptionsBytesStruct);
  HAL_FLASH_OB_Launch();
  HAL_FLASH_OB_Lock();
  HAL_FLASH_Lock();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值