• 功能

    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. 分享:手把手教你如何免费且光荣地使用正版IntelliJ IDEA

    https://mp.weixin.qq.com/s/6nRYmn6gAWFLg3mUIN_ojg TIPS 近日在个人技术讨论QQ群里,谈论到IDEA的那些事儿.有童鞋居然在某电商网站花钱买激活码. ...

  2. Django 1.11 shell中模块导入问题

    django报错:django.core.exceptions.ImproperlyConfigured: 处理办法 import os os.environ['DJANGO_SETTINGS_MOD ...

  3. NodeJS模块和ES6模块系统语法及注意点

    社区模块规范: 1.CommonJS规范 规范实现者: NodeJS 服务端 Browserify 浏览器 2.AMD规范 全称 异步模块定义 规范实现者: RequireJS 浏览器 3.CMD规范 ...

  4. 第08组 Beta冲刺(2/5)

    队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ?按照时间进度的安排进行相应的检查 展示GitHub当日代码/文档签入记 ...

  5. Java集合详解8:Java集合类细节精讲,细节决定成败

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  6. Redis哨兵、复制、集群的设计原理与区别

    一 前言 谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. 哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转 ...

  7. Spring Security教程之基于表达式的权限控制(九)

    目录 1.1      通过表达式控制URL权限 1.2      通过表达式控制方法权限 1.2.1     使用@PreAuthorize和@PostAuthorize进行访问控制 1.2.2   ...

  8. MOT19数据集百度云盘

    图片按视频分的压缩包 [已失效] 链接: https://pan.baidu.com/s/1kNw6yhvqgitNK5N__WOpxw 提取码: yia4 链接: https://pan.baidu ...

  9. pytest新版本(5.3.2)中收集测试方法规则不支持以test结尾的方法

    pytest新版本(5.3.2)中收集测试方法规则不支持以test结尾的方法,只能命名为以test开头,否则不能识别到

  10. IBM X3650 m4 面板指示灯