保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

ADSP2116中DMA的应用


列。表中的“x”代表所用到的DMA通道。链式DMA传输过程的设置步骤如下:

(1)在片内存储器中设置好所有的TCB?

(2)设置对应通道的控制寄存器,并将其中的DMA使能位和链式使能位设为有效?

(3)将第一个TCB的最大地址写到CPx中,并开始链式DMA的传输?

(4)传输结束后,产生对应的中断。

有两点要特别注意:第一是链式DMA只能发生在同一DMA通道内;二是SPI口不支持链式DMA。

3 几种常用的DMA操作

在基于ADSP2116x的DSP系统开发过程中,最常用的操作是片内存储器和片外存储器之间的DMA、link口之间的DMA、串口之间的DMA以及SPI之间的DMA等几种。限于篇幅,本文只介绍前面两种。

3.1 片内存储器和片外存储器之间的DMA

片内存储器与片外存储器之间的DMA传输可用通道10~13这四个通道中的任意一个来进行。下面通过一个例子来说明这种传输。假定要把片内存储器地址0x50000~0x5001f中的32个数据?利用DMA通道10传送到片外存储器0x2000000~0x200001f中,则可用下面的程序来实现:

R0=0;dm(DMAC10)=R0? //清空对应通道的DMA控制寄存器

//设置片内存储器参烽寄存器

R0=0x50000; dm(IIEP0)=R0;? //设置片内存储器起始地址

R0=1; dm(EMEP0)=R0;? //设置片内存储器地址增加值

R0=32; dm(ECEP0)=R0;? // 设置片内存储器计数寄存器

//设置片外参数寄存器

R0=0x2000000( dm?EIEP0)=R0? //设置片外存储器起始地址

R0=1; dm(IMEP0)=R0; //设置片外存储器地址增加值

R0=32; dm(CEP0)=R0;? //设置片外存储器计数寄存器

//设置对应通道的DMA控制寄存器

Ustat1=0x00000000;

Bit set ustat1 MASTER|PMODE4|TRAN|DEN;

Dm(DMAC10)=ustat1; // 设置为master和无打包模式,并开始DMA传输

上面的例子是一般的DMA传输。而如果需要进行两段或两段以上的数据传输,则要在中断后重新设置参数寄存器,在这种情况下,用链式DMA更有利于提高核心处理单元的效率。假定要把片内存储器地址0x50000~0x5001f中的32个数据和0x50040~0x5007f中的64个数据利用DMA通道10分别传送到片外存储器0x2000000~0x200001f和0x2000040~0x200007f中,可用下面的程序来实现:

VAR tcb1[8] = 32,? //ECEP0

1, //EMEP0

0x2000000, // EIEP0

0, // GPEP0

tcb2+7-0x40000, // CPEP0,保证第一次DMA结束后自动加载第二个TCB

32, // CEP0

1, // IMEP0

0x50000; // IIEP0

《ADSP2116中DMA的应用(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174745.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。