请教一下,目前我们有用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的型号所做的? |
stm32g030j6m6如何使用串口烧录程序?NRST引脚能否作为普通输入IO口用?
STM32G0B1adc+dma采样数据错位
STM32的H5/U5系列处理器内置运放支持负压运算吗?比如输入-1V,放大倍数为2时输出-2V
stm32G030C8T6 官方例程库
STM32G070 调用HAL_I2C_Mem_Read_IT测试疑问
STM32G030F6P6中的3种睡眠模式的功耗分别是多少
STM32G030F6 ADC+DMA多通道非连续采样无法正常工作?
STM32G0B1VE的CAN过滤器个数问题
有没有stm32g071 Discovery kit的micropython的固件
STM32G0B1CBT6 Flash 不能写擦除,更不要说写入?fal库示例代码哪里有,分享一下,谢谢
至于你提到的第二个问题,你看得很仔细。认同你关于这点的分析,初步怀疑是手册在这个地方是基于128KB BANK的型号来描述的。
首先,STM32G0系列里面,1个BANK有128KB的,也有256KB的。具体到你现在的STM32G0B1,它的1个BANK是256KB.
其中,FLASH_ECCR和FLASH_ECCR2 分别 存放对应于BANK1和BANK2里ECC出错的双字地址。这样的话,FLASH_ECCR里存放地址偏移量的位宽为14的确
不满足256KB存储空间的用于记录ECC出错的偏移地址所需宽度了。关于这点,我们继续跟踪之。
感谢。。
假如有确认是文档错误的话,也请帮忙更新下帖子哦。。