第4章实验61利用DSP实现信号滤波DMA传输_第1页
第4章实验61利用DSP实现信号滤波DMA传输_第2页
第4章实验61利用DSP实现信号滤波DMA传输_第3页
第4章实验61利用DSP实现信号滤波DMA传输_第4页
第4章实验61利用DSP实现信号滤波DMA传输_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验6利用DSP实现信号滤波-DMA传输一、实验目的二、实验原理与资源使用三、实验内容四、实验思考题

一、实验目的掌握DMA的使用掌握调用CSL库中的DMA函数方法掌握DMA传输方法掌握DMA的使用掌握DMA的使用,实质就是掌握DMA寄存器的使用。DMA主要寄存器

直接存储器访问(DirectMemoryAccess,简称DMA)是C55xDSP非常重要的片上外设。DMA特性:完成数据传输而不影响CPU,因此数据传输速度快。应用场合:在要求信号实时采集和处理的系统中常采用DMA方式进行信号采集与传输。DMA连接概念框图详见TMS320VC5501/5502DSPDirectMemoryAccess(DMA)ControllerReferenceGuide,spru613g.pdf

直接存储器访问DMA寄存器有2个全局寄存器影响所有通道:全局控制寄存器(DMAGCR)和全局超时控制寄存器(DMAGTCR)C5502有6个可独立编程的DMA通道:DMA0~DMA5每个DMA通道受各自的16个16位寄存器控制:DMACCR:通道控制寄存器

DMACICR:中断控制寄存器

DMACSR:状态寄存器

DMACSDP:源和目的参数DMACSSAL:源起始地址(低部分)DMACSSAU:源起始地址(高部分)DMACDSAL:目的起始地址(低部分)DMACDSAU:目的起始地址(高部分)DMACEN:元素数目寄存器

DMACFN:帧数目寄存器DMACSEI:源元素索引寄存器DMACSFI:源帧索引寄存器DMACDEI:目的元素索引寄存器

DMACDFI:目的帧索引寄存器

DMACSAC:源地址计数寄存器DMACDAC:目的地址计数寄存器

直接存储器访问DMA寄存器(续)DMA全局控制寄存器DMAGCR:DMA

GlobalControlRegister功能:调试中遇到仿真断点(breakpoint)时,决定是否停止DMA操作(缺省时为停止DMA操作,本实验为缺省)。1.DMA全局控制寄存器TMS320VC5501/5502DSPDirectMemoryAccess(DMA)ControllerReferenceGuide,spru613g.pdf1.DMA全局控制寄存器FREE[2]:仿真模式位全局超时控制寄存器:DMAGTCR:DMAGlobalTime-outControlRegister功能:是否使用DMA各端口上的超时计数器(用作监视DMA向端口请求的延迟)。

(缺省时为不使用,本实验为缺省)2.全局超时控制寄存器TMS320VC5501/5502DSPDirectMemoryAccess(DMA)ControllerReferenceGuide,spru613g.pdfDMAGTCR功能图PTE[3]:外设端口超时计数器ETE[2]:外部存储器端口超时计数器ITE1[1]:内部存储器端口1超时计数器ITE0[0]:内部存储器端口0超时计数器DMAGTCR位描述每个DMA均有各自的通道控制寄存器DMACCR:ChannelControlRegister功能:选择目标和源地址、地址更新模式、优先级、同步信号

3.DMA通道控制寄存器(DMACCR)DMACCR功能图DSTAMODE[15:14]:目标寻址模式。DMA每次写完后目的地址的变化,如00b:目的地址不变,01b:目标地址+2(如传输16bit数据)。(接收为01b,发送为00b)SRCAMODE[13:12]:源寻址模式。DMA每次写完源地址的变化。如00b:源地址不变,01b:源地址+2(如传输16bit数据)。(接收为00b,发送为01b)ENDPROG[11]:编程结束位。0:DMA的配置寄存器准备编程或正在编程;1:编程完毕3.DMA通道控制寄存器PRIO[6]:DMA通道优先级。0:优先级低,1:优先级高SYNC[4:0]:同步控制位。00000b:DMA无同步事件(缺省);00101b:DMA与McBSP1接收事件同步;00110b:DMA与McBSP1发送事件同步。(接收00101b,发送110b)

4.中断控制寄存器(DMACICR)、状态寄存器(DMACSR)每个DMA均有功能:各种DMA中断发生时DMA是否通知CPU一般采用缺省值。功能:规定DMA传输数据的源和目的、规定数据类型、数据是否打包(datapacking)、传输是否采用突发模式(burst)5.源和目的参数寄存器(DMACSDP)DSTBEN[15:14]:目的方突发使能位00b:目的方不突发;01b:目的方突发DSTPACK[13]:0:目的方不打包;1:目的方打包DST[12:9]:目的选择位01b:目的方为DARAM,通过内部存储器口111b:目的方为外设,通过外设总线SRC[5:2]:源选择位11b:源方为外设,通过外设总线00b:源方为DARAM,通过内部存储器口0DATATYPE[1:0]:数据类型.01b:数据类型为16bit(绿色表示DMA发送配置,红色为接收或发送配置)

分别是源起始地址的低字节(byte)地址和高字节地址,源起始地址=DMACSSAU:DMACSSAL注意:C55x编译器按字(word)编址,而DMA控制器按字节(byte)编址,因此必须向源起始地址寄存器装载字节地址(如果为16bit,装载前先左移1位,即乘以2)。

6.源起始地址寄存器(DMACSSAL、DMACSSAU)

分别存放目的起始地址的低字节(byte)地址和高字节地址,目的起始地址=DMACDSAU:DMACDSAL注意:C55x编译器按字(word)编址,而DMA控制器按字节(byte)编址,因此必须向目的起始地址寄存器装载字节地址(如果为16bit,装载前先左移1位)。

/*Configurethereceivechannelforponginputdata*/addr=((Uint32)gBufferRcvPong)<<1;//将接收缓冲器首地址左移DMA_RSETH(hDmaRcv,DMACDSAL,addr&0xffff;//将addr低位写到hDmaRcv的DMACDSAL中

/*Configurethetransmitchannelforpongoutputdata*/addr=((Uint32)gBufferXmtPong)<<1;//将发送缓冲器首地址左移DMA_RSETH(hDmaXmt,DMACSSAL,addr&0xffff);//将addr低位写到hDmaRcv的DMACDSAL中7.目的起始地址寄存器(DMACDSAL、DMACDSAU)DMA传输前,先将每个数据块的帧个数装载到DMACFN中,将每帧中的元素个数装载到DMACEN中。8.元素数目寄存器(DMACEN)、

帧数目寄存器(DMACFN)

源和目的元素索引、源和目的帧索引均为16bit数,范围均在-32768bytes~32767bytes之间。(本实验中这四个寄存器均初始化为0)8.元素索引寄存器(DMACSEI、DMACDEI)、帧索引寄存器(DMACSFI,DMACDFI)每个DMA通道的进程由这两个计数器监视,DMACSAC表明当前源地址的低16bits,而DMACDAC表明当前目的地址的低16bits。(缺省值为0,本实验采用缺省值。)9.源地址计数器(DMACSAC)、目的地址计数器(DMACDAC)本实验利用DMA通道4与McBSP1通道结合来读取A/D转换的数据,利用DMA通道5与McBSP1通道结合来将处理后数据发送至D/A。选择McBSP1通道的接收寄存器DRR11(0x2C01u)为DMA传送数据的首地址,并选择DMA源地址工作在不调整方式(访问后源地址不变,SRCAMODE=00b)。选择McBSP1接收事件为DMA同步事件,以实现DMA和McBSP的结合。选择McBSP1通道发送寄存器为DMA传送数据的首地址,并选择写后增加的寻址方式,二、本实验DMA使用情况数据采集:A/D转换的数据按McBSP1的设置被送到DSP内部接收寄存器DRR11中,再由DMA通道4将DRR11中的数据读到指定数据存储区gBufferRcvPing和gBufferRcvPong中完成数据采集(然后写入寄存器DMACDSAL)。当DMA通道4采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,此时DMA通道4可以按照设定继续采集下一组数据,实现了数据采集与CPU处理的并行操作。本滤波实验DMA使用情况(续)数据采集:A/D转换的数据按McBSP1的设置被送到DSP内部接收寄存器DRR11中,再由DMA通道4将DRR11中的数据读到指定数据存储区gBufferRcvPing和gBufferRcvPong中完成数据采集(然后写入寄存器DMACDSAL)。当DMA通道4采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,此时DMA通道4可以按照设定继续采集下一组数据,实现了数据采集与CPU处理的并行操作。本滤波实验DMA使用情况(续)数据发送:

数据经DSP计算完,存放在指定数据存储区gBufferXmtPing和gBufferXmtPong中,DSP将其中的数据存放到McBSP1的发送寄存器DXR11中,然后通过由DMA通道5将数据发送出去,完成发送。当DMA通道5采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,此时DMA通道5可以按照设定继续发送下一组数据,实现了数据发送与CPU处理的并行操作。本滤波实验DMA使用情况(续)DMA_ConfigdmaRcvConfig={/*Configreceiver*/

DMA_DMACSDP_RMK(//ConfigDMACSDPregisterDMA_DMACSDP_DSTBEN_NOBURST,//DSTBEN=00b,目的不突发(burstingdisabled)DMA_DMACSDP_DSTPACK_OFF,//DSTPACK=0,目的不打包DMA_DMACSDP_DST_DARAMPORT1,//DST=01b,目的方DARAM,通过内部存储器口1DMA_DMACSDP_SRCBEN_NOBURST,//SRCBEN=00b,目的不突发(burstingdisabled)DMA_DMACSDP_SRCPACK_OFF,//DSTPACK=0,源不打包

DMA_DMACSDP_SRC_PERIPH,//SRC=11b,源为外设,通过外设总线

DMA_DMACSDP_DATATYPE_16BIT//DATATYPE=10b,传输数据类型为16bit),DMA_DMACCR_RMK(

DMA_DMACCR_DSTAMODE_POSTINC,//DSTAMODE=01b,目的寻址模式,访问后//目的地址后增加方式,即每个元素传输完后,地址将增加.如果16bit,则地址增加2DMA_DMACCR_SRCAMODE_CONST,//SRCAMODE=00b,源方寻址模式,访问后源地址不变

DMA_DMACCR_ENDPROG_ON,//ENDPROG=1, 寄存器编程结束

DMA_DMACCR_WP_DEFAULT,//WP=0,写记录(writeposting)禁止,DMA控制器//等待来自存储器接口的完成写数的应答

实验中DMA配置1(接收配置)Burst形式:增加数据吞吐量,但外设端口不支持burst。DMA_DMACCR_REPEAT_OFF,//REPEAT=0,RepeatonlyifENDPROG=1DMA_DMACCR_AUTOINIT_OFF,//AUTOINIT=0,DMA控制器不进行自动初始化

DMA_DMACCR_EN_STOP,//EN=0,通道传输禁止

DMA_DMACCR_PRIO_LOW,//此DMA通道的优先级低

DMA_DMACCR_FS_DISABLE,//元素同步,而不是帧同步

DMA_DMACCR_SYNC_REVT1//SYNC=101b,DMA同步事件是McBSP1接收事件

),/*DMACCR*/DMA_DMACICR_RMK(DMA_DMACICR_AERRIE_ON,//AERRIE=1,当源或目的端口的地址发生错误,DMA向//CPU发送通道中断请求

DMA_DMACICR_BLOCKIE_OFF,//0,当前所有块已经传输到目的端口时,DMA不向//CPU发送通道中断请求。

DMA_DMACICR_LASTIE_OFF,//0,最后一帧时,DMA控制器如何反应,DMA不向//CPU发送通道中断请求。DMA_DMACICR_FRAMEIE_ON,//1,当前所有帧已经传输到目的端口时,DMA向//CPU发送通道中断请求。

DMA_DMACICR_FIRSTHALFIE_OFF,//0,当前帧的前一半已经传输到目的端口时,//DMA不向CPU发送通道中断请求。实验中DMA配置2(接收配置)DMA_DMACICR_DROPIE_OFF,//发生同步事件丢弃时,DMA不向CPU发送通道中断请求。DMA_DMACICR_TIMEOUTIE_OFF//TIMEOUTIE=0.DMA不向CPU发送超时中断//(TIMEOUTIE=1,传输在512个SYSCLK1周期未完成,产生超时中断)),/*DMACICR*/(DMA_AdrPtr)(MCBSP_ADDR(DRR11),//DMACSSAL,源地址低位(LOW),为McBSP1接收寄存器DRR11*/0,/*DMACSSAU,源地址高位(HIGH),为0*/NULL,

/*DMACDSAL,目的地址低位(LOW)tobeloadedbysubmit*/0,/*DMACDSAU*/BUFFSIZE,/*DMACEN,元素个数*/1,/*DMACFN,帧个数*/

/*如果(1)ForCHIP_5510PG2_x(x=0,1,2),5509A,5502需要最后4个0参数;*//*如果(2)ForCHIP_5509,CHIP_5510PG1_x(x=0,2)则只需要最后2个0参数*/0,/*dmacsfifor(1);DMACFIfor(2);*///DMA通道源帧索引(for5502)0,/*dmacseifor(1);DMACEIfor(2);*///DMA通道源元素索引(for5502)0,/*dmacdfionlyfor(1)*///DMA通道目的帧索引(for5502)0

/*dmacdeionlyfor(1)*///DMA通道目的元素索引(for5502)};

实验中DMA配置3(接收配置)发送配置(此处仅列与接收配置不同)DMA_ConfigdmaXmtConfig={/*Configtransmitter*/…DMA_DMACSDP_DST_PERIPH,//DST=11b,目的为外设,通过外设总线DMA_DMACSDP_SRC_DARAMPORT0,//SRC=00b,源为DARAM,通过内部存储器口0DMA_DMACCR_DSTAMODE_CONST,//DSTAMODE=00b,目的寻址模式为恒量,即每个//元素传输完后,目的地址不变。

DMA_DMACCR_SRCAMODE_POSTINC,//SRCMODE=01b,源寻址模式,访问后源地址后//增加方式,即每个元素传输完后,地址将增加.如果16bit,则地址增加2DMA_DMACCR_SYNC_XEVT1//SYNC=110b,DMA同步事件是McBSP1发送事件

NULL,

/*DMACSSAL,tobeloadedbysubmit,NULL表示空指针*/0,/*DMACSSAU*/(DMA_AdrPtr)(MCBSP_ADDR(DXR11)),/*DMACDSAL,目的地址低位(LOW),为McBSP1//发送寄存器DXR11*/0,/*DMACDSAU*/BUFFSIZE,/*DMACEN,元素个数*/1/*DMA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论