请教一下,目前我们有用STM32G0B1VE系列的芯片,由于应用需求,在机器开机时,会有大约2个page的flash操作。但是在做上下电测试时,经常会发现,在测试的过程中,会造成整台机器变成砖头,断电重启无法恢复。 经过一系列的排查,应该是由于在上下电的过程中,Flash数据更新的过程中,造成ECC未写入,造成最终读Flash时,ECC错误,造成了NMI中断。。 由于G系列比较新,我们只是搜到了一片CSDN上的老兄有遇到过相同的情况。 https://blog.csdn.net/qq_29083043/article/details/107891658 发这个帖子,一来感谢下这位仁兄。。二来还是想确认下,除了将Flash擦除,重写之外,是否还有其他解决的方式? 另外,查看芯片手册,针对FLASH_ECCR的描述,似乎有误。。 在手册里,针对FLASH_ECCR->ADDR_ECC的描述,应该是该地址乘以8,应该就是Flash ECC错误的地方。但是ADDR_ECC只有14bit,乘以8也就17bit,总共为128KB。 但是我们用的G0B1VE是两个Bank, 每个Bank为256KB,所以,文档这里是否描述有误?个人觉得,手册是不是针对128KB/Bank的型号所做的? |
adc采集电压
关于使用STM32G030C8T6的串口收发过程中串口接收问题
STM32G0B1的CAN自动重发
用stm32cubeide生成的STM32G030F6P6代码只要一开中断,任何中断程序都会跑飞.
STM32G0B1CBT6 双Bank升级,运行Bank2上Flash不能写问题
有关STM32G0B1RET6芯片FLASH擦除问题
STM32G030烧录程序
Stm32G071 i2c slave配置问题
STM32G030 不能下载程序 0xFFFF0040
STM32G0是否支持trace?
至于你提到的第二个问题,你看得很仔细。认同你关于这点的分析,初步怀疑是手册在这个地方是基于128KB BANK的型号来描述的。
首先,STM32G0系列里面,1个BANK有128KB的,也有256KB的。具体到你现在的STM32G0B1,它的1个BANK是256KB.
其中,FLASH_ECCR和FLASH_ECCR2 分别 存放对应于BANK1和BANK2里ECC出错的双字地址。这样的话,FLASH_ECCR里存放地址偏移量的位宽为14的确
不满足256KB存储空间的用于记录ECC出错的偏移地址所需宽度了。关于这点,我们继续跟踪之。
感谢。。
假如有确认是文档错误的话,也请帮忙更新下帖子哦。。