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

STM32H7系列片内FLASH操作HAL库下只有256bits编程

[复制链接]
思行一 提问时间:2019-2-20 16:03 /
悬赏10ST金币已解决
       如题,我在使用STM32H7系列(H743和H750)的时候,会对片内FLASH进行操作,例如往flash里面写一些标志位和数据,有时候只需要往里面写8bits(1byte),然而HAL提供的flash操作只有256bits program,依据手册(en.DM00314099 page133)来看也只有256bits program支持,读操作倒是可以按8bits 16bits 32bits 64bits来读,所以我有点疑惑这是H7的特性么?能否有自己选择的按字节写入呢?
       多谢帮忙解答!

最佳答案

查看完整内容

因为有缓冲区的原因,缓冲区写flash一次写256bit,手册里说可以写少于32字节的数据,但是要在操作一下寄存器,让缓冲区里面剩余的字节由ARM自己填充,其实对于flash还是操作了256bit,而且写数据的地址要32字节对齐,还不如你自己写256bit,虽然只用了1个字节,芯片已经这样设计了,就按这样规则用就是了!! ...
收藏 1 评论8 发布时间:2019-2-20 16:03

举报

8个回答
oujisang 回答时间:2019-2-20 16:03:41
本帖最后由 oujisang 于 2019-2-20 18:05 编辑

因为有缓冲区的原因,缓冲区写flash一次写256bit,手册里说可以写少于32字节的数据,但是要在操作一下寄存器,让缓冲区里面剩余的字节由ARM自己填充,其实对于flash还是操作了256bit,而且写数据的地址要32字节对齐,还不如你自己写256bit,虽然只用了1个字节,芯片已经这样设计了,就按这样规则用就是了!!

评分

参与人数 2ST金币 +2 蝴蝶豆 +2 收起 理由
思行一 + 2 没错,确实是这样的
STMCU + 2

查看全部评分

斜阳 回答时间:2019-2-20 18:57:44
这是flash特性,你需要的是eeprom

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

思行一 回答时间:2019-2-20 20:19:04
斜阳__ 发表于 2019-2-20 18:57
这是flash特性,你需要的是eeprom

可是我看F746的例程里面都有按照字节写入flash的啊,而H743的必须要256bit才能写入成功,如果我只写8bits或者16bits,比如我只想使地址0x0800 1000 =0x11,而0x0800 0009, 0x0800 1001的值是默认值;F746就有提供这样的功能,好像H743不行
思行一 回答时间:2019-2-20 20:26:48
斜阳__ 发表于 2019-2-20 18:57
这是flash特性,你需要的是eeprom

可是我看到F746的FLASH就能实现只改变一个地址的值即例如使*0x0800 1000=0x11,而其他地址的值为默认值的啊
思行一 回答时间:2019-2-20 21:14:23
C:\Users\Administrator\Desktop\1.jpg
思行一 回答时间:2019-2-20 21:15:58
本帖最后由 思行一 于 2019-2-21 09:39 编辑

file:///C:/Users/Administrator/Desktop/1.jpg
这是我在手册中看到的,高亮部分让我疑惑,这是在说我是可以按照最低8bits来写,但是我必须要写满256bits才能写成功吗
1.jpg
思行一 回答时间:2019-2-22 11:00:57
》》》》》》》结贴
对于H7系列的片内flash操作,对其写操作必须32bytes对齐,就像我选取的最佳答案描述那样的。
我在这里补充一下操作force-write的方式:
FLASH->CR &= ~FLASH_CR_FW;
HAL_FLASH_Program();
Flash->CR |= FLASH_CR_FW;
这样的话,假使你只想往一个地址写入一个字节也是可以做到的,但是剩下的31个字节单片机自动填满,之后的写操作就必须在上一次的地址上偏移256bits。
斜阳 回答时间:2019-2-22 12:30:02
思行一 发表于 2019-2-20 20:26
可是我看到F746的FLASH就能实现只改变一个地址的值即例如使*0x0800 1000=0x11,而其他地址的值为默认值的 ...

我也查了一下手册,h743片内flash确实能像你说的这样按字节编程,方法就是你帖子上说的。我之前用的外挂flash时按页编程。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版