CC2430DMA学习
DMA(直接内存控制),DMA可以在外设之间传递数据而不要CPU的干预,节约了大量的CPU时间,并且减轻了CPU的负担,是一种快速高效的通信方式,在CC2430中集成了DMA控制器,提供5个DMA通道,并且官方推荐使用DMA方式传送RF寄存器中的数据,而且为了方便DMA对数据进行传输CC2430中对RF寄存器,硬件寄存器等进行了映射,全部映射到了XDATA区域,这样就可以用DMA来读取寄存器的数据,给操作带来了很大的方便。下面我们就对CC2430中集成的DMA进行试验。
关于DMA的寄存器并不多,但是DMA的操作和其他单片机寄存器的操作有一些不同的地方,就是DMA市通过读配置的方式来实现DMA的初始化的,所有的配置信息都存放在一个固定的地址中,当药启动DMA时只要先读入配置的地址然后启动相应地通道就可以了。
关于DMA的传输方式,在CC2430中集成的DMA控制器有四种传输模式:单模式:触发一次只能传送一个字节(字),直到传送完指定的长度后通知CPU,并且解除DMA通道工作状态;块模式:当触发一到就传输指定的长度,直到完成后就通知CPU;重复单一模式和重复块模式和非重复模式的区别在于当完成指定长度数据的传输并通知CPU后并不解除DMA通道的工作状态,而是DMA通道重新进入工作状态。
关于DMA的触发时个很灵活的东西,比如我可以用某个特定的触发条件,那么在程序中我就要确保这个触发条件在一定的情况下能够得到满足,否则得话DMA永远也不能进行传输,不过通过手动来第一次的启动DMA好像也是个不错的方法哦,呵呵!
DMA处理流程:
1、DMA初始化。
清除DMAARM、DMAREQ、DMAIRQ寄存器。
将DMAIF 中断标志清0.开启DMAIE中断使能。
2、设置通道配置数据结构地址。
对于每个DMA通道,需要有它自己的DMA配置 数据结构。DMA配置数据结构由8字节构成,DMA配置数据结构可以存放在由用户软件设定的任何位置,而地址通过DMAxCFGH:DMAxCFGL送到 DMA控制器,一旦DMA通道进入工作状态,DMA控制器就会读取由DMAxCFGH: DMAxCFGL地址里给定的该通道的配置数据结构。
需要注意的是,指定DMA配置数据结构开始地址的方法十分重要。这些地址对于DMA
通道0和DMA通道1~4是不同的:
DMA0CFGH:DMA0CFGL给出DMA通道0配置数据结构的开始地址;
DMA1CFGH:DMA1CFGL给出DMA通道1配置数据结构的开始地址,其后跟着通道 写DMA配置参数数据结构。
3、为要发送或者接收的数据分配相应的通道。设置该通道的配置数据结构。特别是数据的源地址和接收地址。
4、启动相应的通道;
INT_ENABLE(INUM_DMA, INT_ON); if (inum==INUM_DMA) { DMAIE = on; }
5、等待触发条件触发DMA。
6、传输数据
1)设置RFD的相应寄存器:中断标志RFIF、中断屏蔽RFIM。
2)如果需要设置发送数据的结构,关闭中断,设置数据结构
DMA_ABORT_CHANNEL(dmaNumberRx); #define DMA_ABORT_CHANNEL(ch) DMAARM = (0x80 | ((0x01 << ch) & 0x1F))
3)设置DMAARM相应的通道位。
DMA_ARM_CHANNEL(dmaNumberTx); #define DMA_ARM_CHANNEL(ch) / do{ / DMAARM = ((0x01 << ch) & 0x1F); / } while(0)
4)手动触发触发源。
DMA_START_CHANNEL(dmaNumberTx); #define DMA_MAN_TRIGGER(ch) DMAREQ = (0x01 << ch)
总而言之,整个DMA过程中需要设置的寄存器有:
DMAARM、DMAREQ、DMAIRQ
中断标志:DMAIF
中断使能:DMAIE
全局使能:AE
通道选择:DMAARM
通道中断禁止DMAARM.ABORT
CC2430DMA学习相关推荐
- java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】
类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...
- Java EE学习心得
–Java EE学习心得 1. 称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...
- FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器
文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...
- FastAI 课程学习笔记 lesson 1:宠物图片分类
文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...
- 深度学习学习指南-工具篇
colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...
- Redis学习之路(一)--下载安装redis
redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...
- python内置库之学习configparser库(一)
python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...
- 前端Vue学习之路(二)-Vue-router路由
Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...
- 前端Vue学习之路(一)-初识Vue
Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...
- 如何学习数据挖掘和数据科学的7个步骤
前言 概括 1 学习语言 2 工具:数据挖掘,数据科学和可视化软件 3 教科书 4 教育:网络研讨会,课程,证书和学位 5 数据 6 比赛 7 互动:会议,团体和社交网络 more 前言 最近一直一再 ...
最新文章
- HDU - 4990 Reading comprehension(矩阵快速幂,水题)
- 跨数据库调用存储过程权限问题
- 大班科学认识电子计算机教案与反思,幼儿园大班科学教案:认识电子计算器.doc...
- Python中的一些小语法
- Qt文档阅读笔记-QHeaderView::sectionResized官方解析与实例
- 新型冠状病毒肺炎国内分省分日期从1.16起的全部数据爬取与整理代码(附下载)
- Linux虚拟文件系统(概述)
- 七月算法机器学习3 矩阵分析与应用
- Android开发中加载Gif动画图片方法
- Theano介绍及简单应用
- 我对IT项目经理工作的理解
- 在所有数据库的所有数据中搜索关键字
- 基于STM32震动感应灯
- Solidworks中螺纹怎么收尾?
- Curl error (60): Peer certificate cannot be authenticated with given CA certificates,yum Cannot down
- 懂商业的技术合伙人(13):谈谈我对商业的4点理解,创业公司做好核心业务是关键
- 华为服务器 国产化 操作系统,华为设备开始使用国产操作系统,国产操作系统的春天,百万人建议强制使用...
- lv9-ARM体系结构与接口技术(1) 计算机硬件基础
- R语言初体验(新手常见问题)
- python 理论基础知识试题_Python理论基础知识复习