欢迎来到天天文库
浏览记录
ID:33846839
大小:271.78 KB
页数:10页
时间:2019-02-28
《使用ccs进行dsp编程(三)--ccs编程入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、使用CCS进行DSP编程(三)——实现DMA和Interruptpacificxu现在讨论在CCS进行DSP编程来实现DMA和Interrupt功能。假定读者对CCS的使用已经比较了解,并有了一定的CCS编程经验。如果读者还不太了解,请参阅《使用CCS进行DSP编程(一)——CCS编程入门》、《使用CCS进行DSP编程(二)——实现FFT》及其他CCS的学习文档。下面用闻亭公司的C6xPa板硬件和闻亭公司的PCI仿真器为例,来实现DSP的DMA传输和硬件Interrupt功能。首先来描述一下使用的硬件资源。闻亭公司的C6xPa板有两路独立的
2、最高采样率为40MHz精度为12bit的A/D,它与DSP的EXT_INT7相连,可以产生外部中断信号,通过FPGA的逻辑可以控制A/D的采集和采集多少数据产生一次中断,采集的数据放在DPRAM中(0x1400000开始的地址空间),通过DMA传输到DSP芯片上的存储器中(0x80000000开始的地址空间)。在C语言环境中使用DMA和Interrupt功能,需要包含两个头文件和,同时要用到相应的运行时库文件“csl6201.lib”和“dev6x.lib”。对这两组头文件和运行时库文件,我们深入研究一下,看一
3、看我们比较关心的函数有哪些。下一次用到这些函数时,别忘了带上相应的运行时库文件%*&^*&^喔。在dev6x.lib库文件中,直接与实现DMA和Interrupt功能相关的函数有如下几个:dma_initdma_global_initdma_resetintr_resetintr_initintr_hookintr_mapintr_isnintr_get_cpu_intrisr_jump_table在csl6201.lib库文件中,直接与实现DMA功能相关的函数有如下几个:DMA_AllocGlobalRegDMA_GetEventIdDM
4、A_GBL_PRIVATEDMA_OpenDMA_StartDMA_HCHA0DMA_HCHA1DMA_HCHA2DMA_HCHA3DMA_WaitDMA_SetGlobalRegDMA_ConfigADMA_ConfigBDMA_StopDMA_AutoStartDMA_PauseDMA_ResetDMA_GetGlobalRegDMA_SetAuxCtlDMA_CloseDMA_FreeGlobalRegDMA_InitDMA_GetStatus我们只需其中的一部分便可以实现DMA和Interrupt功能。函数的具体使用说明和调用方式请
5、参看TI的说明档。下面直接看一下程序的源码,有一个整体的理解,然后再对具体的相关内容做一下说明,如果源码能够理解,就不需要再看具体说明了。为了便于读者理解,本人对相应部分作了处理,尽量使结构清晰,突出对DMA和Interrupt功能的实现:接下来进行详细说明。首先,包含头文件,接着对DMA进行初始化赋值,其中,各参数的含义如下:我们使用DMA的源地址为0x01400000,目标地址为0x80008000,传输数据长度为1k*32bit,DMA控制寄存器的值的具体含义请参看各对应DSP的datasheet。然后是对使用的函数进行引用说明,其他
6、函数跟普通的VisualC++函数没有太大的区别,除了以下的例外:其中,有一个关键字“interrupt”,它告诉TI的C编译器,这个函数是一个特殊的中断服务函数,C编译器会另眼看待。接下来对DMA操作句柄定义,相应的头文件对DMA_HANDLE作了定义,我们这里可以直接使用:主程序非常简单,实现DMA功能的子程序也很简单,只有四句:第一句:语法如下:其中的DMA_CHAANY含义是“任意一个闲置的DMA通道”,并非有一个DMA通道叫DMA_CHAANY,除了通道0~3的4个通道外,还有一个辅助DMA通道,是另做他用的。我们取得了对DMA操
7、作的句柄,就可以进行初始化和使用了。第二句:语法如下:这里需要提前做DMA_CONFIG的初始化,这两步也可以用一步来实现,就用到另外一个函数:它直接把各DMA寄存器的设置当作参数,一步到位。第三句:语法如下:这个函数检测DMA的状态位,直到DMA结束后才退出,读者可以在下一次使用这个DMA通道前使用。DSP可以执行其他的操作,或者执行此操作等待DMA传输结束。第四句:语法如下:使用完DMA通道后,需要对它进行关闭,释放资源以备他用。DMA的使用是很简单的,复杂的工作都由DSP硬件和TI的库函数来完成了。我们要做的工作是理解这些,要想使用这
8、些函数,不可避免要知道DMA各控制寄存器的具体含义,除了少数“天才”可以不学而知外,最好老老实实学习TI的文档)。#$&^@)(*——多么渴望天才的出现啊!!!下面来看看中断
此文档下载收益归作者所有