查看: 350|回复: 1

FM33A0610EV 页擦除失败

[复制链接]

1

主题

1

帖子

9

积分

初级工程师

Rank: 1

积分
9
发表于 2023-9-18 08:17:59 | 显示全部楼层 |阅读模式


      1.   CMU_PERCLK_SetableEx(FLASHCLK, ENABLE);
      2.   CMU_OPCCR2_NVMCKE_Setable(ENABLE);

      3.   FLS_EPCR_ERTYPE_Set(FLS_EPCR_ERTYPE_PAGE);

      4.   FLS_EPCR_EREQ_Set(FLS_EPCR_EREQ_Msk);
      5.   FLS_KEY_Write(FLS_PAGE_ERASE_KEY0);
      6.   FLS_KEY_Write(FLS_PAGE_ERASE_KEY1);
      7.   *(uint32_t *)address = FLS_PAGE_ERASE_DATA;
      复制代码
      1.   // 此处无法退出
      2.   while (SET != FLS_ISR_ERD_Chk()) {
      3.     __NOP();
      4.   }
      5.   FLS_ISR_ERD_Clr();

      6.   FLS_KEY_Write(0x00000000);

      7.   CMU_OPCCR2_NVMCKE_Setable(DISABLE);
      8.   CMU_PERCLK_SetableEx(FLASHCLK, DISABLE);
      复制代码




程序运行一段时间页擦除无法退出 while循环, 各位有没有针对性的分析或解决办法?

回复

使用道具 举报

151

主题

845

帖子

4401

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4401
发表于 2023-9-20 08:42:36 | 显示全部楼层
可能是程序中有直接对 flash 地址 做赋值的误操作,导致 KEYERR把flash擦写给锁掉了。出现问题时看下 KEYSTA  是不是 处于锁定状态。 可以在flash擦写函数前后加打开和关闭flash总线时钟的函数。在不使用擦写时关闭flash总线时钟。防止平时误操作 产生KERERR。 如果必现,可以看下哪个函数导致的KERERR。把出现问题的地方找到
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表