请选择 进入手机版 | 继续访问电脑版

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

STM32G031K8T6,大伙有没有碰到过,flash问题?

Hans.he 提问时间:2021-9-23 09:19 / 未解决
主要问题:STM32G031K8程序打断点在STARTUP.S文件中,停在断点处就出现FLASH_CR寄存中的CFGBSY置位为1,导致操作flash错误。而且按照手册说明该位的置位和复位均由硬件决定。所以外部完全无法操作。导致G系列的flash是无法操作的。本人认为是芯片的设计问题,已经排除芯片坏掉,除非整个批次均有问题因为已经换过5片MCU以验证问题。(按照断点处的情况 即整个代码只执行了一句话)。
主要情况如下:IDE为MDK-KEIL-V5.36,工具是STM32G031-Nucleo-32。参考例程是官方例程STM32Cube_FW_G0_V1.5.0\Projects\NUCLEO-G031K8\Examples_LL\GPIO\GPIO_InfiniteLedToggling_Init中的例程MDk例程(当然也做过自己的工程测试,结局一样)(为啥采用GPIO工程例程而不是操作flash工程来说明芯片有情况,是因为用flash工程一样出现该情况)。具体测试情况如下面图片,毕竟有图有真相。
不知道大家是否有碰到过,请远离深坑! 微信图片_20210922163242.png
收藏 评论7 发布时间:2021-9-23 09:19

举报

7个回答
Hans.he 回答时间:2021-9-23 09:21:48
有人碰到过吗
xmshao 回答时间:2021-9-23 11:53:33
我用g031基于IAR IDE做了反复测试,结果是这样的:


如果用Mdk,那个CFGBSY位似乎有点不稳定,感觉跟IDE有点关系。
xmshao 回答时间:2021-9-23 11:54:51
xmshao 发表于 2021-9-23 11:53
我用g031基于IAR IDE做了反复测试,结果是这样的:

uuu.png
Hans.he 回答时间:2021-9-23 14:22:27

您好,如果用IAR,在显示上面的确如您贴图所示CFCGSY不会为1,但是照样操作不了Flash,原因是一致的,只是CFCGSY不是为1,没在IDE上显示,但是操作flash那一步需要判断时条件达到了 如下代码进入了:
  /* Wait for control register to be written */
  timeout = HAL_GetTick() + Timeout;

  while ((FLASH->SR & FLASH_SR_CFGBSY) != 0x00U)
  {
    if (HAL_GetTick() >= timeout)
    {
      return HAL_TIMEOUT;
    }
  }

Hans.he 回答时间:2021-9-23 14:25:57
xmshao 发表于 2021-9-23 11:53
我用g031基于IAR IDE做了反复测试,结果是这样的:

MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不过G4没有这个CFGBSY位,则会导致PGAERR,PGSERR两位置1,同样是打断点,没有执行与flash任何相关的代码,我个人怀疑是断点所导致,不过暂时没有定位明白。
xmshao 回答时间:2021-9-23 15:04:58
Hans.he 发表于 2021-9-23 14:25
MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不 ...

是的,怀疑跟MDK处理端点这个地方有关。
Hans.he 回答时间:2021-9-23 15:31:12
xmshao 发表于 2021-9-23 15:04
是的,怀疑跟MDK处理端点这个地方有关。

不过只是怀疑,没有证明现在
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版