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

这是STM32F4 Flash的read disturb现象吗?

[复制链接]
youjiang 提问时间:2021-5-1 15:55 / 未解决
我在使用STM32F4中发现另一个奇怪的现象。
我用STM32F407VGT6 作为数字控制电源的处理器。将ADC转换系数存在Flash中。例如:
VolCoeff1 = ( *(s32*)VOL1_COEFF_ADDR),VOL1_COEFF_ADDR为Flash地址。则真实的电压为
the real voltage=VolCoeff1 * ADC digital value

在TIM2定时器中断(15kHz,66.7us)中读取系数,用于真实电压/电流的换算。因为有十几个ADC转换系数,因此每小时读Flash的次数超过7亿次。
后来发现:
(1)存在用户Flash区域中的ADC转换系数有的变为0(转换的真实采样值变为0,并且在Keil 内存Watch窗口可以看到)。
(2)此外,有的系数在读的过程中是不断变化的,这个在Keil 内存Watch窗口中也可以观察到(写flash的指令都被屏蔽了)。
在重新刷写相应的Flash数据扇区后,系数都能恢复正常。

上述现象与很多文献所说的read disturb(就是过量读操作可能导致Flash数据改变)比较吻合。但我现在也不能完全确定。

内核在程序存储区取指令应该也是一种“读”操作吧,这与访问用户自定义的Flash数据区有什么区别吗?

希望有大神能给于解释,不甚感激!!!
收藏 评论2 发布时间:2021-5-1 15:55

举报

2个回答
奇迹 回答时间:2021-5-7 13:59:38
确实很奇怪,没有碰见过这种问题。你可以尝试把这些参数定义到内部ram里面,这样还快一点。


xmshao 回答时间:2021-5-8 16:05:01
怀疑还是你代码方面的问题。 你似乎在程序运行过程中有做flash编程,你如果不做flash编程动作,再比较测试下。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版