aurix中DMA使用

原创 2015年07月06日 19:40:23

首先请注意:DMA的源/目标地址必须是64位对齐
这里写图片描述
DMA就是从数据源到DMA控制器,再从DMA控制器到目标源。
DMA硬件请求包括自身的请求或其他的DMA请求通道。
DMA控制器主要由这三部分组成:DMA channel 、 move engine 、 bus switch
设置DMA通道,DMA shadow reg的作用是体现在link DMA使用的时候,指定Shadow Addr,等上一段搬完后,能自动把shadow addr赋值到源或者目标地址,开始搬运下一段。
DMA通道请求控制
这里写图片描述
然而触发dma请求,可以通过硬件或软件
硬件可以由ICU中断单元触发,硬件请求通过TSRz.HTRE.使能或不使能,需要dma转化后,软件reset该位。
软件请求则是直接设置 CHCSRz.SCH位

软件操作模式:
这里写图片描述
软件操作时通过TSRz.HTRE位不使用硬件操作。
硬件操作模式:
ICU中断触发,TSRz.ECH位需要使能硬件模式。
如果要使用硬件中断请求DMA,一定要注意中,中断优先级SRPN的设置!原话
这里写图片描述
说白了,也就是外设的中断如果是向DMA请求,则设置中断优先级一定要等于待处理的DMA的通道ID号,如果不一致,这触发不了该DMA的通道工作。
还有就是,如果要使用硬件中断控制DMA,进行DMA配置的部分一定要在enable interrupt之前。

下面则详细说一下DMA整个控制顺序,如下:
这里写图片描述
Pending的通道通过DMA仲裁后,选择优先级高的active,给move engine去搬运,其中搬运的时候经过SRI总线,有bus switch来转换。
这里写图片描述
其中在bus switch这里的优先级已经确定,Cerberus是作为bus switch的看门狗
这里写图片描述
这是在SRI中优先级,然而对于move engine访问spb资源,则move engine 的优先级则需要设置:
这里写图片描述

相关文章推荐

调试休眠和唤醒

原文链接http://blog.csdn.net/skywalkzf/article/details/7913887

用GTM中的TIM实现捕获

尝试用TIM实现capture捕获功能。 TIM作为输入模块,每个TIM有8个通道,在捕获处理前有滤波模块,如下: 关于输入源可以选择: 其中AUX_IN(x)是I/O复用模式,GT...

STM32 DMA 的使用

  • 2015年07月09日 20:22
  • 3MB
  • 下载

STM32F407串口1使用DMA收发数据

  • 2017年09月03日 10:01
  • 11KB
  • 下载

aurix中AD采样

ADC的频率也是连接SPB频率的。 AD转换过程通过background 请求、Timer单元请求、外部请求三种来请求AD转换。如下: 而来自Backgroud的请求,只能是在没有任何...

STM32 ADC DMA 使用心得 1

  • 2013年10月04日 14:20
  • 34KB
  • 下载

z-stack上DMA使用

  • 2011年10月25日 19:13
  • 213KB
  • 下载

AURIX系列GTM模块中的PWM部分

在AURIX中的GTM 模块是一种普遍时钟模块,它是作为一种可以随意配置的时钟模块。时钟基于AURIX中的CCU(时钟和时钟控制单元)提供时钟源,实际上所有的外设都是通过这个来提供时钟呢。 同时...

ActDuino S500_DMA驱动使用说明

  • 2016年01月12日 10:53
  • 615KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:aurix中DMA使用
举报原因:
原因补充:

(最多只允许输入30个字)