对DMA请求如何产生的理解

DMA作为中间部分,连接了存储器和外设,实现数据的传输。数据可以传输从存储器传输到外设,也可以由外设的数据寄存器传输到存储器。

A、那么,DMA控制器是什么时候知道需要进行数据传输呢?

这个信号是DMA请求信号,该信号的产生是外设完成一件事件后发出或者外设的状态已经准备好发出。总的来说,DMA信号的产生来自于外设的相关寄存器,与数据传输有关的寄存器,它们保存着外设当前工作的状态情况,在符合条件下向DMA发出请求。

DMA在存储器到存储器之间进行数据传输时,根据工作模式的不同,分单伺和循环模式,在单次工作模式,通过控制DMA使能位,DMA就会进行数据复制,直到剩余传输的数据为0,才会停止;如果为循环模式,则会在完成一轮后,接着重新开始下一个循环过程。

存储器到存储器模式
DMA通道的操作可以在没有外设请求的情况下进行,这种操作就是存储器到存储器模式。

当设置了DMA_CCRx寄存器中的MEM2MEM位之后,在软件设置了DMA_CCRx寄存器中的EN位启动DMA通道时,DMA传输将马上开始。当DMA_CNDTRx寄存器变为0时,DMA传输结束。存储器到存储器模式不能与循环模式同时使用。

这里要注意仅 DMA2 的外设接口可以访问存储器,所以仅 DMA2 控制器支持存储器到存储器的传输,DMA1 不支持。

存储器到存储器模式不能与循环模式同时使用。

B、DMA控制器如何知道多少数据呢?

这个数据长度的控制由DMA的寄存器决定,在发送之前将数据大小写入,DMA控制器就能实现对应大小数据传输。

C、实现DMA传输之前要做什么呢?

1、初始化对应的DMA通道,包括数据的源地址、目的地址、数据长度,打开该通道开关。

2、在外设的寄存器中置为DMA位,使能DMA,相当于告诉DMA现在开始传输数据。

3、不需要DMA后,在DMA中断函数中软件清0对应的DMA使能控制位。

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值