DMA详解_dma_doublebuffermodeconfig_qzl1221的博客-程序员秘密

技术标签: 数据接口  

1,概念:DMA全称为Direct Memory Accessuart,即直接内存存取,是一种外设和内存直接数据传输的方式,作用就是减少CPU的负担传输,特别适合大数据高速度传输时使用。


2,DMA通道
stm32f1系列包含2个DMA控制器,DMA1有7个通道。DMA2有5个通道,每个通道最高可接收8个外设的DMA请求,每个通道还有一个冲裁器,用于处理DMA请求间的优先级。
stm32f4系列包含2个DMA控制器,每个DMA控制器包含8个数据流,每个数据流有最多达8个通道,每个数据流通道都有一个仲裁器,用于处理DMA请求间的优先级。


3,冲裁器判断各外设的DMA请求的优先级级别
①,非常高优先级
②,高优先级
③,中优先级
④,低优先级


4,DMA的双缓冲机制
stm32f4系列的DMA可配置为双缓冲机制,类似乒乓操作模式,建立2个缓冲区buffer,当一个缓冲区buffer接收完成后,接收数据自动转到另一个缓冲区buffer,同时CPU可对第一个缓冲区的数据进行操作,从而保证数据接收不受中止影响。
配置举例如下:
DMA_DoubleBufferModeConfig(DMA2_Stream2,(u32)buf1,DMA_Memory_0);//配置双缓冲模式的另一个的buffer
DMA_DoubleBufferModeCmd(DMA2_Stream2,ENABLE);//双缓冲模式开启


5,DMA-spi初始化配置
①,spi初始化
②,使能spi的DMA请求
③,dma时针使能,dma复位,等待dma可配置
④,配置dma通道,配置dma外设地址,配置dma存储器地址
⑤,配置dma数据传输量和传输方向,传输方向有外设到内存,内存到外设,内存到内存。
⑥,配置外设和内存的增量模式,一般配置外设非增量,内存增量模式,这样就可以从一个外设地址在不同的时间点接收多个数据保存在内存数组中。
⑦,配置外设和内存的数据长度,必须配置成一样。
⑧,配置dma为循环模式还是普通模式
⑨,配置dma的优先级
⑩,配置dma中断:DMA 半传输、DMA 传输完成、DMA 传输错误、DMA FIFO 错误、直接模式错误


6,DMA启动传输数据流程
①,失能DMA数据流
②,等待DMA数据流可设置
③,配置数据传输量
④,使能DMA数据流


7,DMA配置心得
①,DMA在发送数据到外设时是不能接收外设数据的,可以配置DMA完成中断中设置发送完成标志,并在中断里面关闭DMA传输,然后在发送完成标志下接收外设数据。
②,DMA分循环模式和普通模式,普通模式在发送完成后需要重新开启DMA传输,并配置传输量,循环模式则不需要。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qzl1221/article/details/75634807

智能推荐

利用opencv借取相机摄像头为手机和电脑添加手势或者体感操控_opencv体感_残诗的博客-程序员秘密

在展示PPT和产品发发布时,或者看电影时如果能用手势操作切换会十分方便。这里使用opencv的开源技术,轻松实现这一功能需求。我很久以前曾经写一个篇被动摄像头的文章,捕捉到摄像头中有移动的物体时,开始录相,移动消失,不再录相。这样具有简单智能的摄像头,可以为客户节省很多的磁盘空间。本文在捕捉运动物体的基础上实现手势操作。原文代码如下:https://blog.csdn.net/cnbloger/a...

牛客OI赛制测试赛3 解题报告_weixin_30469895的博客-程序员秘密

前话:  话说考试描述:普及难度。  于是想在这场比赛上涨点信心。  考出来的结果:Point:480 Rank:40  然而同机房的最好成绩是 510。  没考好啊!有点炸心态,D题一些细节没有注意,然后B题简单的贪心没有想到,GG~再给我30分钟我能AK!A题:数字权重题目描述 小a有一个n位的数字,但是它忘了各个位上的数是什么...

unity之万代南梦宫高管:传统开发商如何做好手游_七大黍的博客-程序员秘密

狗刨学习网报道/最近,Jeferson Valadares刚刚出任万代南梦宫(Bandai Namco)美国公司产品研发总经理兼副总裁,他曾在手游和社交游戏领域从业十年,在EA、BioWare、Playfish以及Digital Chocolate等公司任职。就在上任的第一天,他就表达了自己对手游行业的看法,之所以传统发行商只有EA一家在手游获得了成功,是因为很多大佬对于该领域的投入都

利用Handler实现Activity和Service之间通信_chao_shen的博客-程序员秘密

Activity和Service之前通信,最简单的方式就是通过broadcast广播来实现,但针对一些频繁的数据传输,用广播来实现,性能上会降低很多,例如:更新下载进度等接下来介绍下handler来代替broadcast来实现Activity和Service之前通信,这样性能会高些。中心思想是讲Handler包装在Messenger对象里,利用Messenger来发送消息,

python机器学习库scikit-learn: Lasso Regression_kissazhu的博客-程序员秘密

from sklearn.datasets import make_regressionfrom sklearn.linear_model import Lasso'''创造数据X Y'''reg_data, reg_target = make_regression(n_samples=200, n_features=500, n_informative=5, noise=5)''' 通过交叉检验

随便推点

QT5(一):HelloWord_weixin_34090562的博客-程序员秘密

为什么80%的码农都做不了架构师?>>> ...

iptables透明网桥无法使用透明代理错误_cihei6013的博客-程序员秘密

环境:squid,第三方过滤产品 要求:配置网桥,过滤用户的访问需求 问题:用户通过代理能被过滤,但是清除代理设置时,无法过滤。...

SQL Server 2005“错误1706。安装程序找不到需要的文件。请检查……”的处理办法_bysjlwdx的博客-程序员秘密

SQL Server 2005“错误1706。安装程序找不到需要的文件。请检查……”的处理办法 这是本人在XP上安装Server 2005 开发版(32位)时出现的错误提示。开始以为这么大的文件,是下载过程中出现了错误,重新从其他网站下载后问题仍不能解决。再摸索了几个方法之后,发现从微软的官方网站下载owc11.exe(即Office Web Components

【windows 10】 Microsoft Store 安装软件闪退的解决办法_D_super的博客-程序员秘密

关键词: win10, Microsoft Store, 软件闪退, 解决办法最近尝试在windows上安装最新的文献阅读软件LiquidText。之前在平板上又使用过LiquidText软件进行文献阅读,由于air屏幕较小,阅读体验一般,现在软件在windows上上架,对于ipad+win搭配的跨平台支持让人十分期待阅读体验。但是Microsoft Store 安装的软件却不能正常打开,点击“启动”后软件打开窗口,却是一片空白,几秒后软件自动关闭,无法正常运行。解决办法:第一步:在系统搜

Spring Boot 1.x 使用 Thymeleaf 3_牧守天河的博客-程序员秘密

Spring Boot 1.x 使用 Thymeleaf 3Thymeleaf 2加载页面出错错误原因解决方法升级Thymeleaf版本参考文档调整代码最近在使用一个老项目,项目中使用了Spring Boot 1.5.6,因业务需要,添加了依赖Thymeleaf,但是Spring Boot 1.5.6使用的 thymeleaf 版本为2.1.5.RELEASE的,导致页面加载出现问题。Thym...

推荐文章

热门文章

相关标签