• 功能

    DMA可以在CPU不干涉的情况下,进行数据的搬移。例如:通过DMA来获取摄像头输出的像素数据,而占用少量CPU资源。

  • DMAMUX

    DMAMUX负责数据的路由:将触发源绑定到特定的DMA通道,当有触发时就通过通道发送一次数据。例如:触发源可以是

  串口发送中断标志,DMA通道选择相应的串口通道。

                

  • 传输方式

    DMA支持多种传输方式,先谈一维传输:

    

    以上图为例,设置0x12345670为要发送的数据首地址,设置数据大小为4个字节,设置数据传输一次的地址偏移为4字节,设置传

  输循环次数为4次。第一次触发下,传输4个字节数据,发送指针指向0x12345674。四次触发完毕后,数据传输完成,DMA通道关闭。

  注意,这里设置的地址偏移不一定要等于4字节(也可以是8字节,但是这样0x12345674-0x12345677间的4字节数据就被忽略了)。

    

    在一维传输结束时,可以将地址回归到0x12345670,从而实现循环传输:

   

    除了一维传输,DMA还提供了二维传输模式,即主循环+子循环模式,在该模式中,每次触发会使Minor Loop循环一次,当Minor Loop

   循环结束时,等待下一个触发,Major Loop循环一次。因为主循环与子循环的偏移可以不相同,因此,可以通过二维传输实现隔行扫描。

  • 重要寄存器

    SADDR:源地址;

    DAADR:目的地址;

    SOFF:源地址偏移(一次数据传输后读取地址的偏移量);

    DOFF:目的地址偏移(一次数据传输后写入地址的偏移量);

    ATTR->SMOD:源地址循环/非循环模式;

    ATTR->DMOD:目标地址循环/非循环模式;

    ATTR->SSIZE:触发源发送一次的数据大小(4/2/1字节);

    ATTR->DSIZE:接收方接收一次的数据大小(4/2/1字节);

    BITER_ELINKNO:非级联模式下主循环计数初值(循环次数);

    CITER_ELINKNO:非级联模式下主循环计数当前值(剩余循环次数);

    CR->EMLM:子循环使能;

    ERQ:通道触发请求使能;

    SMLOE:源地址子循环地址偏移使能;

    DMLOE:目的地址子循环偏移使能;

    MLOFF:子循环地址偏移量;

    NBYTES:子循环计数(循环次数);

    CSR:带宽控制,传输结束后的操作;

    

    

    

    

  

    

  

    

  

  

  

DMA初识的更多相关文章

  1. 初识DMA

    初识DMA 关于AXI4-Memory Map 与 AXI4-Stream之间的转换: 查阅UG1037 重点关注DataMover这一块 此图似乎有错误之处,需要再次确认.

  2. 初识DSP

    初识DSP 1.TI DSP的选型主要考虑处理速度.功耗.程序存储器和数据存储器的容量.片内的资源,如定时器的数量.I/O口数量.中断数量.DMA通道数等.DSP的主要供应商有TI,ADI,Motor ...

  3. [中英对照]User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序

    如对Linux用户态驱动程序开发有兴趣,请阅读本文,否则请飘过. User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序 ...

  4. 《Kafka笔记》1、Kafka初识

    目录 一.初识Kafka 1 apache kafka简介 2 消息中间件kafka的使用场景 2.1 订阅与发布队列 2.2 流处理 3 kafka对数据的管理形式 4 kafka基础架构 5 Ka ...

  5. STM32基于HAL库通过DMA读写SDIO

    通过STM32CUBEMX生成DMA读写sdio的工程,再读写过程中总会卡死在DMA中断等待读写完成的while中,最终发现while等待的标志在SDIO的中断里置位的,而SDIO中断优先级如果小于或 ...

  6. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  7. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  8. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  9. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

随机推荐

  1. yii2 Query Builder 查询打印sql语句

    $query = new Query(); $query->select('gs.*, g.goods_images, sa.attr_name, sa.is_default, sa.alias ...

  2. 剑指offer15 二进制中1的个数

    题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1.因此,如果输入9则函数输出2. int Number(int n) { ; while ...

  3. BFS实现8数码问题,思考与总结

    BFS实现8数码问题,思考与总结 今天中午学习了二叉树的线索化与线索化遍历,突然有一种想实现八数码问题的冲动,因为它的初级解决方式是BFS(广度优先搜索算法).于是我开始编程. 没想到一编就是一个下午 ...

  4. vue+element 表格筛选

      筛选是element 组件 自己有的东西,按照文档撸 是没有问题 这里存在一个情况是,如果 筛选 的数据没有 那么整个表格为空白,产品要加提示 例如:暂无筛选的数据 解决方案:通过 ref 获取整 ...

  5. 招聘.net高级工程师

    1. 本科及以上学历(必须): 2. 精通.net框架和常见web框架,精通常见设计模式并熟练应用. 3. 扎实的技术功底,有良好的数据结构和算法基础,深入理解面向对象编程思想, 熟悉面向对象的基本设 ...

  6. IE浏览器卡死提示是否停止运行此脚本的解决办法

    IE浏览器经常卡死,报是否停止运行此脚本,严重影响使用体验,下面小编教大家怎么解决这个问题,供大家参考! 1.启动IE浏览器,点击上方菜单栏位的工具,如下图所示 2.在工具栏位选择internet选项 ...

  7. IO流—其他流

    内存操作流 这个流不关联任何文件,只能在内存中数据,自己在内存中维护着一个缓冲区,我们可以往他维护的缓冲区不断的写入数据,也可以从缓冲区中取出我们写入的数据 ByteArrayOutputStream ...

  8. python 关于celery的异步任务队列的基本使用(celery+redis)【无配置文件设置】

    环境说明: window7 X64 python 2.7.6 .celery 3.1.25.redis 2.10.6 本地安装的redis服务端版本号:Redis-x64-3.2.100 工程结构说明 ...

  9. php form表单ajax上传图片方法

    form表单ajax上传图片方法 先引用jquery.form.js 前台代码<pre><form id="form1"> <input id=&qu ...

  10. JMeter工具学习(一)工具使用详细介绍

    备注: JMeter版本4.0 JDK版本1.8 1,JMeter下载 2,下载后直接解压 3,打开解压文件,找到bin目录下的jmeter.bat,双击打开 4,打开jmeter 6,右键Test ...