DMA

news/2024/11/21 1:37:10/

DMA 控制器允许 Blackfin 或者外设指定数据传送操作,然后返回正常操作中。 DMA 控制器传送数据的过程独立于处理器的活动

DMA 控制器传送数据的方式有下面几种:

l  存储器 <-> 存储器 MemDMA );

l  存储器 <-> 串行外设接口;

l  存储器 <-> 串行接口;

l  存储器 <-> UART 口;

l  存储器 <-> USB 口;

DMA 系统有包括 DMA 控制器( MemDMA )在内的 8 DMA 兼容外设,图 5.1 12 个通道和总线控制器,其中 DMA 传送可以使基于描述符 的,也可以是基于自动缓冲 的。

 

DAB, DCB, DEB Master

默认仲裁优先级

PPI

0-highest

SPORT0 RCV DMA Controller

1

SPORT1 RCV DMA Controller

3

SPORT0 XMT DMA Controller

2

SPORT1 XMT DMA Controller

4

SPI DMA Controller

5

UART RCV Controller

6

UART XMT Controller

7

Memory DMA0(dest) Controller

8

Memory DMA0(source) Controller

9

Memory DMA1(dest) Controller

10

Memory DMA1(source) Controller

11-lowest

5.1 12 个通道和总线控制器

 

1 基于描述符的 DMA 传送

基于描述符的 DMA 传送是 Blackfin 控制 DMA 最普通的方法。使用该方法时, DMA 通道需要一组称为 DMA 描述符的参数,该参数存储在存储器中。每个描述符包含特定 DMA 传送序列所需要的所有信息,其组成结构如下:

(1)       要传送数据块的 32 位起始地址;

(2)       要传送的数据量

(3)       其他各种控制信息——如该 DMA 做什么,传送何时完成等配置信息;

(4)       指向下一个描述符的指针。

 

下面步骤是设置基于描述符的 DMA 的典型时序。在进行这些步骤之前,必须将描述符基地址( BASE+0 )的高 16 位设置到 DMA 描述符的基址指针寄存器( DMADBP )中。

 

(1)       DMA 配置字(其 15 位置为 1 ), DMA 传送计数, DMA 起始地址( 15:0 ), DMA 起始地址( 31:16 )以及下一个描述符指针( 15:0 ),写入描述符存储器地址 BASE+0~BASE+8 中。如果描述符是链表中的最后一个元素,或者是链表中的唯一元素,那么该描述符中的下一个描述符指针应该指向下一个存储单元,该存储单元的 15 位必全为零。基于上述要求,下一个描述符指针可以指向当前描述符的基地址 BASE+0 。在 DMA 传送序列完成之后, DMA 配置字的位 15 被清零。控制器返回给处理器。

(2)       将描述符基地址( BASE+0 )的低 16 位写到相应外设的下一个描述符寄存器中。

(3)       设置相应外设的 DMA 配置寄存器中 DMA 使能位。

(4)       仅在单个 DMA 传送序列或链表中的第一个 DMA 传送序列需要进行写操作。


 

 

5-2 设置基于描述符的 DMA 的典型时序

 

2 基于自动缓冲的 DMA 传送

基于自动缓冲的 DMA 操作,除了不需要存储器中的描述符外,与基于描述符的 DMA 相同。在自动缓冲模式中, DMA 控制器是可写的,并且可以被处理器直接编程以发起一个 DMA 传送过程。一旦传送完成,控制寄存器被他们的原始设置值重载,以备下一次传送。这将产生一个循环缓冲区,并且不断地传送数据,直到通过将外设 DMA 配置寄存器的 DMA 使能位清零,才被禁止。如果允许中断,在传送过程进行一半完成 时,将产生中断。

 

下面是设置基于自动缓冲 DMA 的典型步骤:

 

(1)       DMA 配置寄存器中的自动缓冲使能位置 1

(2)       初始化 DMA 传送计数器, DMA 起始地址高位寄存器, DMA 起始地址低位寄存器;

(3)       DMA 配置寄存器,对 DMA 传送进行设置,并将 DMA 使能位置 1. 这一部将启动基于自动缓冲的 DMA 的传送过程。

(4)       要停止 DMA 的传送,需要将寄存器中的 DMA 使能位清零,正在传送期间将位清零,不会像基于描述符的 DMA 那样引起 DMA 错误结束,一旦检测到 DMA 使能位被清零, DMA 传送寄存器 可以用来监视 DMA 传送状态。

 

3 存储器 DMA

       存储器 DMA MemeDMA )控制器提供在 Blackfin 存储空间中存储器对存储器的 DMA 数据传送。这些存储空间包括外设组件互连( PCI )地址空间、 L1 L2 以及外部的同步 & 异步存储器。

       MemDMA 控制器由两个通道组成。一个是源通道,用于读存储器,另一个是目的通道,用于写存储器。两个通道共享 一个可以存放 16 条记录的 32 FIFO 。源 DMA 通道写 FIFO ,目的 DMA 通道读 FIFO FIFO 深度大大改善了内部与外部存储器之间的数据传送流量。 FIFO 支持 8 位、 16 位和 32 位的传送。但是,在 8 位和 16 位传送中,仅使用 32 位数据总线的一部分,因此,这两种传送的流量要比 32 位的 DMA 操作低。

       MemDMA 控制器不支持基于自动缓冲的 DMA ,使用 MemDMA 控制器的传送必须是基于描述符的 DMA 。而且要有两个独立的描述符列链表,一个用于源 DMA 通道,另一个用于目的 DMA 通道。

       因为源 DMA 和目的 DMA 通道共享一个 FIFO 缓冲,两个描述符中的传送计数必须设置为相同值,数据尺寸也设置为相同值。

 

4 二维 DMA

Blackfin-533 支持二维 DMA 的传送操作,其相关寄存器和功能如下:

(1)       配置寄存器( DMAx-CONFIG_yy_CONFIG

设置二维 DMA 方式使能,中断产生的方式,其中中断可以在一行结束时产生,也可以在整个 DMA 结束时产生。

(2)       内层循环计数寄存器( DMAx_X_COUNT/MDMA-yy_X_COUNT

在二维 DMA 时保存二维 DMA 内层循环的数目(行数)必须大于等于 2

(3)       内层循环地址增量寄存器( DMAx_X_MODIFY/MDMA_yy_X_MODIFY

在二维 DMA 时保存每一次内层循环计数器加 1 DMA 操作(读或者写)地址在内存中的增量,此增量应该是二维 DMA 操作的数据单元长度的整数倍,比如二维 DMA 进行 16 位读 / 写,则此增量必须是 2 N 倍。

(4)       外层循环计数寄存器( DMAx_Y_COUNT/MDMA-yy_Y_COUNT

在二维 DMA 时保存二维 DMA 外层循环的数目(列数)。

(5)       外层循环地址增量寄存器( DMAx_Y_MODIFY/MDMA_yy_Y_MODFIY

在二维 DMA 时,保存每一外层循环计数器加 1 DMA 操作(读或者写)地址在内存中的增量,可以使负值,此增量应该是二维 DMA 操作的数据单元长度的整数倍。

 

参考书籍:《 ADI Blackfin 系列 DSP 处理器试验指导书》

 


http://www.ppmy.cn/news/690030.html

相关文章

【MSP432电机驱动设计—下篇】霍尔编码器测车轮运行距离与M/T综合公式法测速概念

开发板型号为MSP432P401r 今日得以继续我的MSP432电赛速通之路&#xff0c;本篇使用MSP432编程学习霍尔编码器M/T公式法测速概念&#xff0c;最终实现用外部中断方式测得小车行走路程&#xff0c;文章学习讲解原理、附上实例实践、附上关键代码、附上…

Android依赖注入框架---ButterKnife

大家在开发中&#xff0c;经常会使用到findViewById 和 setOnClickListener&#xff0c;但是当控件较多时&#xff0c;重复的进行控件获取真的很烦&#xff0c;很郁闷&#xff0c;特别是对一些有强迫症的SuperMan来讲&#xff0c;看着一推findViewById就头皮发麻,不过当你使用了…

基于WebGL架构的3D可视化平台—粮仓3D场景

前言 什么才是智慧粮仓 正所谓“国以民为本&#xff0c;民以食为天”。粮食既是关系国计民生和国家经济安全的重要战略物资&#xff0c;也是人民群众最基本的生活资料。其中粮仓是粮食建设的根基&#xff0c;对保障粮食安全尤为重要。随着信息化技术发展&#xff0c;全国各地…

50代码HTML5 Canvas 3D 编辑器优雅搞定

原创 文章, 转载请标明出处 https://blog.csdn.net/liuwei000000/article/details/83378837 1024程序员节刚过,手痒想实现一个html的3d编辑器,看了three.js 同时还看了网上流传已久的<<基于 HTML5 Canvas 的简易 2D 3D 编辑器>>,都觉得太复杂,一个3d编辑器…

基于ThingJS开发的WebGL H5停车场三维可视化管理Demo

前言 随着社会的发展&#xff0c;城市中的汽车越来越多。车辆集中存放管理的场所被人类提出车辆进出的秩序、车辆存放的安全性、车辆存放管理的有偿性等要求。停车场系统应用现代机械电子及通讯科学技术&#xff0c;集控制硬件、软件于一体。随着科技的发展&#xff0c;停车场…

monoSLAM

单目相机的优点&#xff08;和双目相机相比&#xff09;&#xff1a;双目相机测得的深度距离收到基线长度的限制&#xff0c;单目相机就可以解决这个问题。 参考博客&#xff1a;http://blog.csdn.net/heyijia0327/article/details/50758944 &#xff08;一定要看&#xff0c…

Mooo

【题目描述】 有 N 个能量发射站排成一行&#xff0c;每个发射站i都有不相同的高度 Hi&#xff0c;并能向两边&#xff08;当然两端的只能向一边&#xff09;同时发射能量值为 Vi 的能量&#xff0c;并且发出的能量只被两边最近的且比它高的发射站接收。 显然每个发射站有可能接…

mood

心情不好