你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】关于STM32G0B1CCT6的flash内存使用注意事项

[复制链接]
STMCU小助手 发布时间:2021-11-8 15:15
STM32G0B1CCT6是相对比较新的MCU,属于G系列,不支持标准库,所以下文用的是hal库或者ll库。


首先STM32G0B1CCT6是有256kflash的,每页2k,而规格书里面只提到0-63page,相当于128kflash。
对于后128k的flash其实需要切换bank2才能使用。
下图为STM32G0B1CCT6的flash构成
9e9d9cd5e964425dbe9403edb8b70e89.png


然后我们先看正常如果要擦除第一页的代码
  1. FLASH_EraseInitTypeDef My_Flash; //声明 FLASH_EraseInitTypeDef 结构体为 My_Flash
  2. uint32_t PageError = 0; //设置PageError,如果出现错误这个变量会被设置为出错的FLASH地址

  3. HAL_FLASH_Unlock();

  4. My_Flash.TypeErase = FLASH_TYPEERASE_PAGES; //标明Flash执行页面只做擦除操作
  5. My_Flash.Page = 0; //声明要擦除的页
  6. My_Flash.NbPages = 1; //说明要擦除的页数,此参数必须是Min_Data = 1和Max_Data =(最大页数-初始页的值)之间的值
  7. My_Flash.Banks = FLASH_BANK_1;

  8. //调用擦除函数
  9. if(HAL_FLASHEx_Erase(&My_Flash, &PageError) == HAL_OK)
  10. {
  11. //3、对FLASH烧写
  12. //MEM_WRITE(FLASH_SYSTEM_DATA_ADDR, buf, 5);
  13. }
  14. //4、锁住FLASH
  15. HAL_FLASH_Lock();
复制代码

当我们要擦除后128k的第一页的时候,即第64页时,需要把FLASH_BANK_1切换到FLASH_BANK_2
不能直接在FLASH_BANK_1声明擦除第64页,切换到FLASH_BANK_2后,相应的页数为总页数减64页。
  1. FLASH_EraseInitTypeDef My_Flash; //声明 FLASH_EraseInitTypeDef 结构体为 My_Flash
  2. uint32_t PageError = 0; //设置PageError,如果出现错误这个变量会被设置为出错的FLASH地址

  3. HAL_FLASH_Unlock();

  4. My_Flash.TypeErase = FLASH_TYPEERASE_PAGES; //标明Flash执行页面只做擦除操作
  5. My_Flash.Page = 0; //声明要擦除的页
  6. My_Flash.NbPages = 1; //说明要擦除的页数,此参数必须是Min_Data = 1和Max_Data =(最大页数-初始页的值)之间的值
  7. My_Flash.Banks = FLASH_BANK_2;

  8. //调用擦除函数
  9. if(HAL_FLASHEx_Erase(&My_Flash, &PageError) == HAL_OK)
  10. {
  11. //3、对FLASH烧写
  12. //MEM_WRITE(FLASH_SYSTEM_DATA_ADDR, buf, 5);
  13. }
  14. //4、锁住FLASH
  15. HAL_FLASH_Lock();
复制代码


最后再附上一个ST-programmer和iar的一个小bug。我将这些问题均已反馈到原厂了。
1、如果ST-programmer要单独擦除后128k是擦除失败的,因为软件本身没有切换bank2
2、IAR烧录时该次使用到了后128k,则也是擦除失败导致烧录失败。第一次烧录成功,但是从第二次开始需要擦除到相应flash时,擦除失败就无法下载了(keil应该也是一样)



收藏 评论0 发布时间:2021-11-8 15:15

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版