STM32L4 内部 Flash 写操作 ECCD 错误
STM32L4 内部 Flash 写操作 ECCD 错误使用的芯片型号 STM32L475VE,使用 HAL 库 `HAL_FLASH_Program` API 对 内部 Flash 进行编程,出现 ECCD 错误。
返回错误的代码摘要如下:(在 __HAL_FLASH_GET_FLAG(FLASH_FLAG_ECCD) 时返回错误)
HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
{
if ((__HAL_FLASH_GET_FLAG(FLASH_FLAG_ECCD)))
{
/*Save the error code*/
FLASH_SetErrorCode();
return HAL_ERROR;
}
}求助相关经验的开发者,请问如何失能 ECCD 检查,或者出现 ECCD 错误如何处理让程序继续运行?(在不注释上面代码的情况下)
非常感谢
找了很多帖子,不解,不知异常捕捉处理,只能给你2个帖子参考参考。另外要说,你也可以先简化代码,从中找到可能性问题。
stm32l476 内部flash HAL库操作方法
http://blog.csdn.net/nicholaszao/article/details/79734480
STM32CubeMX Hal库的一些坑
http://blog.csdn.net/u010217338/article/details/70139672 在 ST 论坛找到相似问题,但未能解决 ECCD 问题。请教论坛内的大牛,谢谢。
引用 ST 论坛相似的问题:
ST 论坛 ECCD 问题 feixiang20 发表于 2018-8-31 01:11
找了很多帖子,不解,不知异常捕捉处理,只能给你2个帖子参考参考。另外要说,你也可以先简化代码,从中找 ...
感谢 feixiang20,这两个帖子给了很大的起启示。
Flash ECCD 问题已经确定,在对 flash 连续写的过程,ECC 纠错检查会开启,如果这个时候,你往已经写过的区块更新数据(不擦除,再次写),就会触发ECC错误。
我是这么理解的,因为 ECC 想帮你纠错,但这又是你主观上的操作,且ECC 监测到错误超过了2个,无法完成纠错,就上报了异常。
要想避免 ECCD 错误,就严格遵守 先擦后写 的原则。
页:
[1]