DMA初识
- 功能
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初识的更多相关文章
- 初识DMA
初识DMA 关于AXI4-Memory Map 与 AXI4-Stream之间的转换: 查阅UG1037 重点关注DataMover这一块 此图似乎有错误之处,需要再次确认.
- 初识DSP
初识DSP 1.TI DSP的选型主要考虑处理速度.功耗.程序存储器和数据存储器的容量.片内的资源,如定时器的数量.I/O口数量.中断数量.DMA通道数等.DSP的主要供应商有TI,ADI,Motor ...
- [中英对照]User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序
如对Linux用户态驱动程序开发有兴趣,请阅读本文,否则请飘过. User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序 ...
- 《Kafka笔记》1、Kafka初识
目录 一.初识Kafka 1 apache kafka简介 2 消息中间件kafka的使用场景 2.1 订阅与发布队列 2.2 流处理 3 kafka对数据的管理形式 4 kafka基础架构 5 Ka ...
- STM32基于HAL库通过DMA读写SDIO
通过STM32CUBEMX生成DMA读写sdio的工程,再读写过程中总会卡死在DMA中断等待读写完成的while中,最终发现while等待的标志在SDIO的中断里置位的,而SDIO中断优先级如果小于或 ...
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- 初识IOS,Label控件的应用。
初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...
随机推荐
- CSRF跨域伪造请求
后端生成一个加密token,将其设置在cookie当中,专用于表单数据提交时的验证,并且前端在表单中多增加一个隐藏字段,每当用户提交表单数据时(post请求),将这个隐藏字段一并提交,后端再对表单中的 ...
- Linux 安装Docker compose 快速方法
https://blog.csdn.net/ysk_xh_521/article/details/80443509 安装pipyum -y install epel-releaseyum -y ins ...
- IIS 登录失败 该登陆名来自不受信任的域,不能与windows身份认证一起使用
原文:https://blog.csdn.net/hhw199112/article/details/80234462 错误: 登录失败 该登陆名来自不受信任的域,不能与windows身份认证一起使用 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(WIFI模块AT指令TCP透传方式),定时访问升级
前言 学习此代码所需: 实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说 ...
- Python——IO多路复用之select模块select方法
Python——IO多路复用之select模块select方法 使用select模块的select方法实现Python——IO多路复用 实现同时将终端输入的文本以及客户端传输的文本写入文本文件中: w ...
- 动态规划大合集II
1.前言 大合集总共14道题,出自江哥之手(这就没什么好戏了),做得让人花枝乱颤.虽说大部分是NOIP难度,也有简单的几道题目,但是还是做的很辛苦,有几道题几乎没思路,下面一道道边看边分析一下. 2. ...
- GOOD BYE OI
大米饼正式退役了,OI给我带来很多东西 我会的数学知识基本都在下面了 博客园的评论区问题如果我看到了应该是会尽力回答的... 这也是我作为一个OIer最后一次讲课的讲稿 20190731 多项式乘法 ...
- 在Linux上使用mssql-conf工具配置SQL Server 2017
mssql-conf是在Linux上安装SQL Server 2017后的一个配置脚本.你可以使用这个实用工具设置以下参数: Agent 启用SQL Server代理 Collation 设置一个新的 ...
- 死磕Java内部类
Java内部类,相信大家都用过,但是多数同学可能对它了解的并不深入,只是靠记忆来完成日常工作,却不能融会贯通,遇到奇葩问题更是难以有思路去解决.这篇文章带大家一起死磕Java内部类的方方面面. 友情提 ...
- 怎么删除iOS模拟器上的应用程序?
怎么删除iOS模拟器上的应用程序: 和手机上一样,鼠标长按,点击删除 xcode 卸载模拟器 Simulator:删除目录/Library/Developer/CoreSimulator/Profil ...