STM32
直播中

李志静

7年用户 1319经验值
私信 关注
[问答]

STM32L475VE内部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 错误如何处理让程序继续运行?(在不注释上面代码的情况下)

回帖(1)

王尚岱

2024-4-26 17:26:03
STM32L475VE内部Flash编程出现ECCD错误的原因可能有以下几点:

1. Flash写入数据不匹配:在STM32L475VE中,内部Flash具有纠错码(ECC)功能,用于检测和纠正单比特错误。如果写入的数据与ECC校验码不匹配,将触发ECCD错误。

2. Flash写入操作超时:在进行Flash编程时,如果操作时间超过了预设的超时时间,也可能导致ECCD错误。

3. Flash保护锁定:如果Flash的某些区域被锁定,将无法对其进行编程,从而导致ECCD错误。

4. Flash损坏:如果Flash本身存在物理损坏,也可能导致ECCD错误。

要解决这个问题,可以尝试以下方法:

1. 确保写入的数据与ECC校验码匹配。在编程Flash之前,可以先计算数据的ECC校验码,并将其与Flash中的ECC校验码进行比较,确保它们匹配。

2. 调整超时时间:检查并调整Flash编程操作的超时时间,确保在超时时间内完成编程操作。

3. 解锁Flash保护:检查Flash是否被锁定,并尝试解锁以允许编程操作。

4. 检查Flash是否损坏:如果以上方法都无法解决问题,可能需要检查Flash是否存在物理损坏。如果损坏,可能需要更换芯片。

5. 禁用ECC功能:如果问题仍然存在,可以考虑暂时禁用ECC功能,但这将降低Flash数据的可靠性。

请注意,禁用ECC功能可能会影响数据的可靠性,因此在禁用之前,请确保已经尝试了其他解决方案。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分