一点点0321 发表于 2025-3-1 12:04

GD32F470 DMA 写入 Flash 后读取数据错位问题

使用 GD32F470 微控制器进行项目开发,并通过 DMA 进行数据写入 Flash。然而,遇到了一个奇怪的问题:在使用 DMA 将数据写入 Flash 后,读取 Flash 时数据出现错位现象,读取的 buffer 中,第一节总是为 0,从第二字节开始数据才是正确的。

tpgf 发表于 2025-4-9 13:59

如果系统时钟或外设时钟配置不准确,可能会导致DMA和Flash之间的数据传输速率不匹配,从而引起数据错位

cr315 发表于 2025-4-11 15:16

DMA 的传输长度可能设置不正确,导致数据未完全写入或起始地址偏移。

elephant00 发表于 2025-4-11 15:17

可能是DMA 配置问题。

两只袜子 发表于 2025-4-11 16:20

可能是DMA 的源地址或目标地址未正确对齐,导致数据错位。

jcky001 发表于 2025-4-11 17:00

Flash 写入操作可能需要擦除操作,而未正确擦除可能导致数据异常。

laocuo1142 发表于 2025-4-11 18:00

读取操作可能未正确对齐,导致数据解析错误。

flycamelaaa 发表于 2025-4-11 19:00

读取的缓冲区未正确初始化或存在内存覆盖问题。

powerantone 发表于 2025-4-11 19:23

中断或缓存问题。

stormwind123 发表于 2025-4-11 20:00

检查读取的缓冲区是否正确初始化,避免内存覆盖。

probedog 发表于 2025-4-11 21:00

禁用中断或缓存。

classroom 发表于 2025-4-11 22:00

数据错位问题通常与 DMA 配置、Flash 写入时序或读取操作有关。

duo点 发表于 2025-4-11 23:00

在调试阶段禁用中断或缓存,避免外部因素干扰。

heimaojingzhang 发表于 2025-4-13 08:45

检查并确保系统时钟和Flash外设时钟的配置正确,根据芯片的数据手册和实际需求,设置合适的时钟频率。对于一些需要分频的情况,要确保分频系数设置正确,以使数据传输能够稳定进行。

keaibukelian 发表于 2025-4-13 11:23

PCB布线不合理,导致信号线之间存在耦合干扰;电源滤波不良,使得电源电压不稳定,影响了Flash和MCU的工作。

paotangsan 发表于 2025-4-13 14:04

Flash芯片可能存在质量问题,或者在使用过程中受到损坏,导致数据存储或读取异常

renzheshengui 发表于 2025-4-13 16:30

DMA的相关配置参数设置不正确,如传输方向、内存地址、外设地址、数据宽度、传输数量等,可能导致数据无法正确地从内存传输到Flash或从Flash传输到内存,从而出现数据错位

wowu 发表于 2025-4-13 19:01

仔细检查中断处理程序的代码,确保在中断中不会对DMA的正常运行造成干扰
页: [1]
查看完整版本: GD32F470 DMA 写入 Flash 后读取数据错位问题