问答

汇集网友智慧,解决技术难题

21ic问答首页 - GD32F450ZGT6 擦写Flash bank1 sector11失败

嵌入式 国产芯片

GD32F450ZGT6 擦写Flash bank1 sector11失败

sanbeicha2023-05-23
如题所述,在使用GD32450Z-EVAL开发板时,应用程序需要擦除Flash bank1,调试发现调用固件fmc_sector_erase返回擦除成功,实际查看Flash空间并未擦除成功,擦除接口代码如下:

        fmc_unlock();
        for (sectorIdx = first_sector; sectorIdx <= last_sector; sectorIdx++)
        {       
            if(fmc_sector_erase(CTL_SN(sectorIdx)) != FMC_READY)
            {
                result = BLT_FALSE;
                break;
            }
        }
        fmc_lock();

请问这个问题该怎么解决呢?
回答 +关注 1
913人浏览 1人回答问题 分享 举报
1 个回答
  • 自己答复一下,原因是bank1的sector12,用CTL_SN转换为实际地址错误,正确配置应该如下:
    /* erase all sectors one by one */
    for (sectorIdx = first_sector; sectorIdx <= last_sector; sectorIdx++)
    {       
           if((sectorIdx >= 12)&&(sectorIdx <= 23))
            {
                  eraseIdx = sectorIdx + 4;
            }
            else if((sectorIdx >= 24)&&(sectorIdx <= 27))
            {
                  eraseIdx = sectorIdx - 12;
            }
                
            if(fmc_sector_erase(CTL_SN(eraseIdx)) != FMC_READY)
            {
                  /* could not perform erase operation */
                  result = BLT_FALSE;

                   /* error detected so don't bother continuing with the loop */
                   break;
            }
      }   

您需要登录后才可以回复 登录 | 注册