duo点 发表于 2025-3-29 12:00

GD32F105RBT6 关于FMC内部flash操作问题

请问大家一下,怎么在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

可以尝试使用位操作来实现单个字节的写入。具体方法是先读取目标地址的内容,然后修改对应的字节,最后再写回。
页: [1]
查看完整版本: GD32F105RBT6 关于FMC内部flash操作问题