打印

GD32F105RBT6 关于FMC内部flash操作问题

[复制链接]
1616|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2025-3-29 12:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问大家一下,怎么在GD32F105RBT6里的内部flash单个字节写入(8位写入),库里面的fmc_word_program  和  fmc_halfword_program分别是 32位个16位的,这样把一串unsigned char数组写进去内部flash有点不方便

使用特权

评论回复
沙发
cr315| | 2025-4-17 12:00 | 只看该作者
Read-Modify-Write

使用特权

评论回复
板凳
两只袜子| | 2025-4-17 12:00 | 只看该作者
用缓冲区

使用特权

评论回复
地板
kaif2n9j| | 2025-4-17 18:27 | 只看该作者
在GD32F105RBT6中实现单字节(8位)写入到内部Flash,虽然官方库只提供了32位(fmc_word_program)和16位(fmc_halfword_program)的写入函数,但可以通过

使用特权

评论回复
5
d1ng2x| | 2025-4-17 19:34 | 只看该作者
读取-修改-写入方式,这是最可靠的方法,适用于需要保留Flash中已有数据的情况

使用特权

评论回复
6
ex7s4| | 2025-4-17 20:42 | 只看该作者
您可以试试缓冲写入方式

使用特权

评论回复
7
zhizia4f| | 2025-4-17 22:14 | 只看该作者
其实如果需要写入多个连续字节,可以先缓存到RAM中,然后一次性写入

使用特权

评论回复
8
b5z1giu| | 2025-4-18 08:32 | 只看该作者
重要注意Flash特性限制,Flash只能从1变为0,不能从0变1

使用特权

评论回复
9
q1ngt12| | 2025-4-18 09:54 | 只看该作者
其实一定要知道的是,写入前必须擦除(擦除后所有位变为1)

使用特权

评论回复
10
y1n9an| | 2025-4-18 11:00 | 只看该作者
一般来说,最小擦除单位通常是扇区

使用特权

评论回复
11
suw12q| | 2025-4-18 12:39 | 只看该作者
必须先擦除目标扇区然后写入数据,这种方法效率较低,因为每个字节写入都需要读取和写入整个字

使用特权

评论回复
12
lamanius| | 2025-4-18 13:15 | 只看该作者
对于大量数据写入,建议设计为按页(或扇区)为单位进行管理

使用特权

评论回复
13
w2nme1ai7| | 2025-4-18 15:06 | 只看该作者
写入地址必须是偶数地址(16位对齐)或4的倍数(32位对齐),跨字边界写入需要特殊处理

使用特权

评论回复
14
快乐制造机| | 2025-4-19 14:29 | 只看该作者
可以尝试使用位操作来实现单个字节的写入。具体方法是先读取目标地址的内容,然后修改对应的字节,最后再写回。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

465

主题

1885

帖子

1

粉丝