野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11802|回复: 3

DMA配置的FIFO问题

[复制链接]
发表于 2020-9-13 16:00:18 | 显示全部楼层 |阅读模式
B站教学视频的22集 火哥说 FIFOMode 配置成Disable  后面的那些DMA_FIFOThreshold 、DMA_MemoryBurst、DMA_PeripheralBurst这些就没用了, 但是我把这些配置都注释掉然后烧到开发板运行不了,不注释可以正常运行,请大神指导 DMA.png
回复

使用道具 举报

发表于 2020-9-13 18:41:48 | 显示全部楼层
1. 手册上说“FIFO 阈值指向的内容必须与整数个存储器突发传输完全匹配。如果不是这样,当使能数据流时将生成一个 FIFO 错误( DMA_HISR 或 DMA_LISR寄存器的标志 FEIFx),然后将自动禁止数据流。”。如果你注释了,可能会引起这个FEIF错误,你可以仿真看看是否真的引起了这错误。使用库函数FlagStatus DMA_GetFlagStatus(DMA_Stream_TypeDef* DMAy_Streamx, uint32_t DMA_FLAG)可以查看。
1111.png
2. 你注释了这几个配置,可能会引起某些问题。例如该数据流的这几个寄存器可能就已经有值了,而你没有重新写新的配置,这样可能会出现一些问题。
因为DMA_Init的时候,会对所有的寄存器都赋值的,所有建议每个参数都配置上新的值(不管参数有没有实际用到)。
222.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-13 20:08:19 | 显示全部楼层
guiyan 发表于 2020-9-13 18:41
1. 手册上说“FIFO 阈值指向的内容必须与整数个存储器突发传输完全匹配。如果不是这样,当使能数据流时将生 ...

受教了,感谢回复
回复 支持 反对

使用道具 举报

发表于 2020-9-13 21:35:40 | 显示全部楼层
本帖最后由 guiyan 于 2020-9-18 09:44 编辑
饼干 发表于 2020-9-13 20:08
受教了,感谢回复

我也是刚看完DMA教程,第2点写错了。
第2点应该是这样理解,在DMA_Init的时候,会调用所有的配置参数进行对相关的寄存器赋值,如果你没有重新设置新的参数的话,那很可能在DMA_Init赋值时,因为参数值的不确定而导致某些寄存器的值不确定(可能寄存器赋值了奇怪的值),从而会出现某些问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-1 15:17 , Processed in 0.054999 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表