stm32DMA之存储器向外设传输数据

DMA简介:

直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源;数据传输支持从外设到存储器或者存储器到存储器,这里的存储器可以是SRAM 或者是FLASH 。DMA 控制器包含了DMA1 和DMA2,其中DMA1 有7 个通道, DMA2 有5 个通道,这里的通道可以理解为传输数据的一种管道。要注意的是DMA2 只存在于大容量的单片机中。

 

DMA模式数据传输过程:

  1. 如果外设要想通过DMA 来传输数据,必须先给DMA 控制器发送DMA 请求,DMA收到请求信号之后,控制器会给外设一个应答信号,当外设应答后且DMA  控制器收到应答信号之后,就会启动DMA 的传输,直到传输完毕。
  2. DMA 具有12 个独立可编程的通道,其中DMA1 有7 个通道,DMA2 有5 个通道,每 个通道对应不同的外设的DMA  请求。虽然每个通道可以接收多个外设的请求,但是同一时间只能接收一个,不能同时接收多个。
  3. 当发生多个DMA  通道请求时,就意味着有先后响应处理的顺序问题,这个就由仲裁器来管理。仲裁器管理DMA通道请求分为两个阶段。第一阶段属于软件阶段,可以在 DMA_CCRx 寄存器中设置,有4 个等级:非常高、高、中和低四个优先级。第二阶段属于硬件阶段,如果两个或以上的DMA通道请求设置的优先级一样,则他们优先级取决于通道编号,编号越低优先权越高,比如通道1高于通道2。在大容量产品和互联型产品中, DMA1 控制器拥有高于DMA2 控制器的优先级。

 

DMA数据配置:

DMA传输数据的方向有三个:从外设到存储器,从存储器到外设,从存储 器到存储器。具体的方向DMA_CCR 位4 DIR 配置:0 表示从外设到存储器,1表示从存储器到外设。这里面涉及到的外设地址由DMA_CPAR 配置,存储器地址由DMA_CMAR 配置。

  1. 外设到存储器 :当我们从外设到存储器传输时,以ADC采集为例。DMA外设寄存器的地址对应的就是ADC数据寄存器的地址,DMA存储器的地址就是我们自定义的变量(用来接收存储AD 采集的数据)的地址。设置外设为源地址。
  2. 存储器到外设 :当我们使用从存储器到外设传输时,以串口向电脑端发送数据为例。DMA 外设寄存器的地址对应的就是串口数据寄存器的地址,
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值