打印

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

[复制链接]
1347|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一点点0321|  楼主 | 2025-3-1 12:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 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 配置问题。

使用特权

评论回复
5
两只袜子| | 2025-4-11 16:20 | 只看该作者
可能是DMA 的源地址或目标地址未正确对齐,导致数据错位。

使用特权

评论回复
6
jcky001| | 2025-4-11 17:00 | 只看该作者
Flash 写入操作可能需要擦除操作,而未正确擦除可能导致数据异常。

使用特权

评论回复
7
laocuo1142| | 2025-4-11 18:00 | 只看该作者
读取操作可能未正确对齐,导致数据解析错误。

使用特权

评论回复
8
flycamelaaa| | 2025-4-11 19:00 | 只看该作者
读取的缓冲区未正确初始化或存在内存覆盖问题。

使用特权

评论回复
9
powerantone| | 2025-4-11 19:23 | 只看该作者
中断或缓存问题。

使用特权

评论回复
10
stormwind123| | 2025-4-11 20:00 | 只看该作者
检查读取的缓冲区是否正确初始化,避免内存覆盖。

使用特权

评论回复
11
probedog| | 2025-4-11 21:00 | 只看该作者
禁用中断或缓存。

使用特权

评论回复
12
classroom| | 2025-4-11 22:00 | 只看该作者
数据错位问题通常与 DMA 配置、Flash 写入时序或读取操作有关。

使用特权

评论回复
13
duo点| | 2025-4-11 23:00 | 只看该作者
在调试阶段禁用中断或缓存,避免外部因素干扰。

使用特权

评论回复
14
heimaojingzhang| | 2025-4-13 08:45 | 只看该作者
检查并确保系统时钟和Flash外设时钟的配置正确,根据芯片的数据手册和实际需求,设置合适的时钟频率。对于一些需要分频的情况,要确保分频系数设置正确,以使数据传输能够稳定进行。

使用特权

评论回复
15
keaibukelian| | 2025-4-13 11:23 | 只看该作者
PCB布线不合理,导致信号线之间存在耦合干扰;电源滤波不良,使得电源电压不稳定,影响了Flash和MCU的工作。

使用特权

评论回复
16
paotangsan| | 2025-4-13 14:04 | 只看该作者
Flash芯片可能存在质量问题,或者在使用过程中受到损坏,导致数据存储或读取异常

使用特权

评论回复
17
renzheshengui| | 2025-4-13 16:30 | 只看该作者
DMA的相关配置参数设置不正确,如传输方向、内存地址、外设地址、数据宽度、传输数量等,可能导致数据无法正确地从内存传输到Flash或从Flash传输到内存,从而出现数据错位

使用特权

评论回复
18
wowu| | 2025-4-13 19:01 | 只看该作者
仔细检查中断处理程序的代码,确保在中断中不会对DMA的正常运行造成干扰

使用特权

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

本版积分规则

67

主题

436

帖子

1

粉丝