GD32F105RBT6 关于FMC内部flash操作问题

[复制链接]
 楼主| 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)的写入函数,但可以通过
d1ng2x 发表于 2025-4-17 19:34 | 显示全部楼层
读取-修改-写入方式,这是最可靠的方法,适用于需要保留Flash中已有数据的情况
ex7s4 发表于 2025-4-17 20:42 | 显示全部楼层
您可以试试缓冲写入方式
zhizia4f 发表于 2025-4-17 22:14 | 显示全部楼层
其实如果需要写入多个连续字节,可以先缓存到RAM中,然后一次性写入
b5z1giu 发表于 2025-4-18 08:32 | 显示全部楼层
重要注意Flash特性限制,Flash只能从1变为0,不能从0变1
q1ngt12 发表于 2025-4-18 09:54 | 显示全部楼层
其实一定要知道的是,写入前必须擦除(擦除后所有位变为1)
y1n9an 发表于 2025-4-18 11:00 | 显示全部楼层
一般来说,最小擦除单位通常是扇区
suw12q 发表于 2025-4-18 12:39 | 显示全部楼层
必须先擦除目标扇区然后写入数据,这种方法效率较低,因为每个字节写入都需要读取和写入整个字
lamanius 发表于 2025-4-18 13:15 | 显示全部楼层
对于大量数据写入,建议设计为按页(或扇区)为单位进行管理
w2nme1ai7 发表于 2025-4-18 15:06 | 显示全部楼层
写入地址必须是偶数地址(16位对齐)或4的倍数(32位对齐),跨字边界写入需要特殊处理
快乐制造机 发表于 2025-4-19 14:29 | 显示全部楼层
可以尝试使用位操作来实现单个字节的写入。具体方法是先读取目标地址的内容,然后修改对应的字节,最后再写回。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

498

主题

2088

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

498

主题

2088

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部