打印
[STM32F1]

DMA配置和使用如此简单(超详细)

[复制链接]
1390|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1229574727|  楼主 | 2020-4-26 19:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA学习很难吗?其实DMA配置和使用如此简单!本文让你无论在DMA认识和理解上(抽象不抽象都有)还是在DMA配置和使用上有个彻彻底底的认识。**包括寄存器和库函数讲解,省去你自行翻阅使用手册和固件库手册,点到点教会你DMA的配置和使用。查询和中断不爽吗?为什么要使用串口DMA?(借串口DMA引入)

如果真的是刚刚接触单片机或嵌入式,肯定会问,因为按照难易程度:DMA>中断>查询。这里我提几个反问句回答。

  • 查询方式是不是要在一个循环里反复执行判断?如果串口传输数据频率快于循环频率,请问能及时收到数据吗?
  • 中断过于频繁主程序还要不要运行?如果我只接收数据,但不用接收一个字节数据就处理一次,那么请问,有必要频繁中断吗?
  • 数据传输过程需不需要时间?需要的话,那我们是不是还要等待?

其实我们要求的很简单,就是高效,传输数据的时候我们不在等待的时间浪费CPU资源,而且数据是一个字节一个字节传送的,接收的时候只要一个数据包最后一个字节数据接收到再处理即可,发送的时候让串口自己一个字节一个字节把数据发出去即可,不用在等待一个字节发送完再发下一字节数据这样。为了提高CPU使用效率,于是就使用DMA方式。


想学习DMA的可以转到我CSDN的博文查看,为了保持美观,所以**写到博客上了,相关内容请查看:

CSDN博客:blog.csdn.net/weixin_44524484/article/details/105671273


以下为**目录:

DMA配置和使用如此简单(超详细)

  • DMA传输
    • 一、查询和中断不爽吗?为什么要使用串口DMA?(借串口DMA引入)
    • 二、DMA介绍
      • 1、什么是DMA?
      • 2、STM32上的DMA资源
      • 3、DMA主要特征
      • 4、DMA请求映像
        • (1)DMA1控制器
        • (1)DMA2控制器
      • 5、DMA寄存器介绍
        • (1)DMA中断状态寄存器(DMA_ISR)
        • (2)DMA中断标志清除寄存器(DMA_IFCR)
        • (3)DMA通道x配置寄存器(DMA_CCRx)(x = 1…7)
        • (4)DMA通道x传输数量寄存器(DMA_CNDTRx)(x = 1…7)
        • (5)DMA通道x外设地址寄存器(DMA_CPARx)(x = 1…7)
        • (6)DMA通道x存储器地址寄存器(DMA_CMARx)(x = 1…7)
      • 6、DMA库函数介绍
        • (1)函数 DMA_DeInit
        • (2)函数DMA_Init
        • (3)函数DMA_Cmd
        • (4)函数 DMA_ITConfig

    • 三、DMA配置
      • 1、寄存器版
      • 2、库函数版
    • 四、DMA使用
      • 1、查询方式
      • 2、中断方式
      • 3、不定长数据传输
      • 4、双缓冲方式
    • 五、总结


使用特权

评论回复
沙发
wziyi| | 2020-4-26 19:46 | 只看该作者
老哥,恕我直言,这不都是官方参考手册上的东西吗

使用特权

评论回复
板凳
1229574727|  楼主 | 2020-4-27 17:04 | 只看该作者
本帖最后由 1229574727 于 2020-4-27 17:15 编辑
wziyi 发表于 2020-4-26 19:46
老哥,恕我直言,这不都是官方参考手册上的东西吗

对,本来想着把串口DMA写上的,不过发现太长,就改了改先讲DMA,**里有说参考自固件库手册和使用手册,但有一些理解是手册没有的,现使用的中文手册也有一些错误,这部分内容只针对于初学者

使用特权

评论回复
地板
wziyi| | 2020-4-27 18:12 | 只看该作者
我仔细地看了一下,老哥写的确实不错。DMA 一般是和其它外设连用的,建议老哥有空的时候一块都写了,搞个合集。

使用特权

评论回复
5
Kua_Max| | 2020-4-28 17:48 | 只看该作者
串口DMA,明天去公司,分享一下串口DMA,5个串口,均采用dma。。。。。。

使用特权

评论回复
6
gygp| | 2020-5-1 20:41 | 只看该作者
大容量STM32产品集成了两个DMA  

使用特权

评论回复
7
biechedan| | 2020-5-1 20:42 | 只看该作者
看看例程就行了。   

使用特权

评论回复
8
wangdezhi| | 2020-5-1 20:42 | 只看该作者
         

使用特权

评论回复
9
isseed| | 2020-5-1 20:42 | 只看该作者
DMA的每个通道优先级是可变的

使用特权

评论回复
10
xietingfeng| | 2020-5-1 20:42 | 只看该作者
DMA共享系统总线,不占用CPU

使用特权

评论回复
11
suzhanhua| | 2020-5-1 20:42 | 只看该作者
总结的很不错的。   

使用特权

评论回复
12
mituzu| | 2020-5-1 20:43 | 只看该作者
数据量大,速度快   

使用特权

评论回复
13
hellosdc| | 2020-5-1 20:43 | 只看该作者
都是跟着别人学习的  

使用特权

评论回复
14
uiint| | 2020-5-1 20:43 | 只看该作者
串口DMA?   

使用特权

评论回复
15
xietingfeng| | 2020-5-1 20:44 | 只看该作者
可以实现快速数据传输  

使用特权

评论回复
16
isseed| | 2020-5-1 20:44 | 只看该作者
DMA可以认为连接两个“地址”数据通道。

使用特权

评论回复
17
suzhanhua| | 2020-5-1 20:44 | 只看该作者
谢谢楼主的资料了。     

使用特权

评论回复
18
biechedan| | 2020-5-1 20:44 | 只看该作者
例程说的很明白的。      

使用特权

评论回复
19
mituzu| | 2020-5-1 20:44 | 只看该作者
dma需要每次都初始化吗  

使用特权

评论回复
20
chenci2013| | 2020-5-1 20:44 | 只看该作者
需将数据的源地址和目的地地址的

使用特权

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

本版积分规则

3

主题

6

帖子

0

粉丝