使用CCS進(jìn)行DSP編程(三)--CCS編程入門(mén)_第1頁(yè)
使用CCS進(jìn)行DSP編程(三)--CCS編程入門(mén)_第2頁(yè)
使用CCS進(jìn)行DSP編程(三)--CCS編程入門(mén)_第3頁(yè)
使用CCS進(jìn)行DSP編程(三)--CCS編程入門(mén)_第4頁(yè)
使用CCS進(jìn)行DSP編程(三)--CCS編程入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、使用CCS進(jìn)行DSP編程(三)實(shí)現(xiàn)DMA和Interrupt現(xiàn)在討論在CCS進(jìn)行DSP編程來(lái)實(shí)現(xiàn)DMA和Interrupt功能。假定讀者對(duì)CCS的使用已經(jīng)比較了解,并有了一定的CCS編程經(jīng)驗(yàn)。如果讀者還不太了解,請(qǐng)參閱使用CCS進(jìn)行DSP編程(一)CCS編程入門(mén)、使用CCS進(jìn)行DSP編程(二)實(shí)現(xiàn)FFT及其他CCS的學(xué)習(xí)文檔。下面用聞亭公司的C6xPa板硬件和聞亭公司的PCI仿真器為例,來(lái)實(shí)現(xiàn)DSP的DMA傳輸和硬件Interrupt功能。首先來(lái)描述一下使用的硬件資源。聞亭公司的C6xPa板有兩路獨(dú)立的最高采樣率為40MHz精度為12bit的A/D,它與DSP的EXT_INT7相連,可以產(chǎn)生外

2、部中斷信號(hào),通過(guò)FPGA的邏輯可以控制A/D的采集和采集多少數(shù)據(jù)產(chǎn)生一次中斷,采集的數(shù)據(jù)放在DPRAM中(0x1400000開(kāi)始的地址空間),通過(guò)DMA傳輸?shù)紻SP芯片上的存儲(chǔ)器中(0x80000000開(kāi)始的地址空間)。在C語(yǔ)言環(huán)境中使用DMA和Interrupt功能,需要包含兩個(gè)頭文件<dma.h>和<intr.h>,同時(shí)要用到相應(yīng)的運(yùn)行時(shí)庫(kù)文件“csl6201.lib”和“dev6x.lib”。對(duì)這兩組頭文件和運(yùn)行時(shí)庫(kù)文件,我們深入研究一下,看一看我們比較關(guān)心的函數(shù)有哪些。下一次用到這些函數(shù)時(shí),別忘了帶上相應(yīng)的運(yùn)行時(shí)庫(kù)文件%*&*&喔。在dev6x.

3、lib庫(kù)文件中,直接與實(shí)現(xiàn)DMA和Interrupt功能相關(guān)的函數(shù)有如下幾個(gè):dma_initdma_global_initdma_resetintr_resetintr_initintr_hookintr_mapintr_isnintr_get_cpu_intrisr_jump_table在csl6201.lib庫(kù)文件中,直接與實(shí)現(xiàn)DMA功能相關(guān)的函數(shù)有如下幾個(gè):DMA_AllocGlobalRegDMA_GetEventIdDMA_GBL_PRIVATEDMA_OpenDMA_StartDMA_HCHA0DMA_HCHA1DMA_HCHA2DMA_HCHA3DMA_WaitDMA_SetG

4、lobalRegDMA_ConfigADMA_ConfigBDMA_StopDMA_AutoStartDMA_PauseDMA_ResetDMA_GetGlobalRegDMA_SetAuxCtlDMA_CloseDMA_FreeGlobalRegDMA_InitDMA_GetStatus我們只需其中的一部分便可以實(shí)現(xiàn)DMA和Interrupt功能。函數(shù)的具體使用說(shuō)明和調(diào)用方式請(qǐng)參看TI的說(shuō)明檔。下面直接看一下程序的源碼,有一個(gè)整體的理解,然后再對(duì)具體的相關(guān)內(nèi)容做一下說(shuō)明,如果源碼能夠理解,就不需要再看具體說(shuō)明了。為了便于讀者理解,本人對(duì)相應(yīng)部分作了處理,盡量使結(jié)構(gòu)清晰,突出對(duì)DMA和Inte

5、rrupt功能的實(shí)現(xiàn):接下來(lái)進(jìn)行詳細(xì)說(shuō)明。首先,包含頭文件,接著對(duì)DMA進(jìn)行初始化賦值,其中,各參數(shù)的含義如下:我們使用DMA的源地址為0x01400000,目標(biāo)地址為0x80008000,傳輸數(shù)據(jù)長(zhǎng)度為1k*32bit,DMA控制寄存器的值的具體含義請(qǐng)參看各對(duì)應(yīng)DSP的datasheet。 然后是對(duì)使用的函數(shù)進(jìn)行引用說(shuō)明,其他函數(shù)跟普通的Visual C+函數(shù)沒(méi)有太大的區(qū)別,除了以下的例外:其中,有一個(gè)關(guān)鍵字“interrupt”,它告訴TI的C編譯器,這個(gè)函數(shù)是一個(gè)特殊的中斷服務(wù)函數(shù),C編譯器會(huì)另眼看待。接下來(lái)對(duì)DMA操作句柄定義,相應(yīng)的頭文件對(duì)DMA_HANDLE作了定義,我們這里可以直

6、接使用:主程序非常簡(jiǎn)單,實(shí)現(xiàn)DMA功能的子程序也很簡(jiǎn)單,只有四句:第一句:語(yǔ)法如下:其中的DMA_CHAANY含義是“任意一個(gè)閑置的DMA通道”,并非有一個(gè)DMA通道叫DMA_CHAANY,除了通道03的4個(gè)通道外,還有一個(gè)輔助DMA通道,是另做他用的。我們?nèi)〉昧藢?duì)DMA操作的句柄,就可以進(jìn)行初始化和使用了。第二句:語(yǔ)法如下:這里需要提前做DMA_CONFIG的初始化,這兩步也可以用一步來(lái)實(shí)現(xiàn),就用到另外一個(gè)函數(shù):它直接把各DMA寄存器的設(shè)置當(dāng)作參數(shù),一步到位。第三句:語(yǔ)法如下:這個(gè)函數(shù)檢測(cè)DMA的狀態(tài)位,直到DMA結(jié)束后才退出,讀者可以在下一次使用這個(gè)DMA通道前使用。DSP可以執(zhí)行其他的操

7、作,或者執(zhí)行此操作等待DMA傳輸結(jié)束。第四句:語(yǔ)法如下:使用完DMA通道后,需要對(duì)它進(jìn)行關(guān)閉,釋放資源以備他用。DMA的使用是很簡(jiǎn)單的,復(fù)雜的工作都由DSP硬件和TI的庫(kù)函數(shù)來(lái)完成了。我們要做的工作是理解這些,要想使用這些函數(shù),不可避免要知道DMA各控制寄存器的具體含義,除了少數(shù)“天才”可以不學(xué)而知外,最好老老實(shí)實(shí)學(xué)習(xí)TI的文檔)。!下面來(lái)看看中斷功能是怎樣實(shí)現(xiàn)的。在中斷服務(wù)子程序中,調(diào)用了DMA,完成數(shù)據(jù)的從外部雙口RAM到DSP片內(nèi)的傳輸,而中斷服務(wù)子程序是如何與硬件中斷聯(lián)系起來(lái)的呢?中斷的實(shí)現(xiàn)主要在中斷初始化子程序里,在程序中對(duì)每一步的操作都進(jìn)行了詳細(xì)的說(shuō)明。我們一步一步來(lái)分析一下:首先

8、是用于中斷處理的函數(shù):然后是用于中斷處理的宏定義:用到的一些助記符如下:大家覺(jué)得上面的內(nèi)容還不夠豐富,請(qǐng)參閱TI的文檔spru273b.pdf。有了上面的理解,中斷的實(shí)現(xiàn)過(guò)程就比較清楚了:1. 初始化中斷服務(wù)表指針(ISTP):intr_init();2. 選擇用哪一個(gè)中斷: intr_map(CPU_INT7,ISN_EXT_INT7);3. 清中斷: INTR_CLR_FLAG(CPU_INT7);4. 中斷服務(wù)子程序與中斷號(hào)掛鉤: intr_hook(Int7_ISR,CPU_INT7);5. 打開(kāi)非屏蔽中斷: INTR_ENABLE(CPU_INT_NMI);6. 打開(kāi)所選中斷: IN

9、TR_ENABLE(CPU_INT7);7. 全局中斷使能: INTR_GLOBAL_ENABLE(); 讀者可能會(huì)注意到,中斷處理函數(shù)都是小寫(xiě)的,而宏定義都是大寫(xiě)的,在C語(yǔ)言的語(yǔ)法里是要注意的,否則會(huì)出現(xiàn)找不到函數(shù)或者函數(shù)未定義。如果想用其他的中斷源,可以按照上面的步驟依樣而行,相信不會(huì)是什么太難的事情了。每一步不是必須的,順序也不是固定的。Int7_ISR是本人舉例時(shí)用的中斷服務(wù)子程序名,大家可以使用任意的名字,而其中的程序也是隨意根據(jù)需要編寫(xiě),沒(méi)有太多的限制。讀者如果對(duì)DSP的硬件很清楚,可以直接對(duì)中斷寄存器進(jìn)行賦值,不需要調(diào)用這些函數(shù)與宏定義。相信現(xiàn)在大家對(duì)中斷與DMA的實(shí)現(xiàn)已經(jīng)心中有數(shù)了,但我還要強(qiáng)調(diào)一下,我所講的實(shí)現(xiàn)是突出軟件上的實(shí)現(xiàn),進(jìn)行DSP編程需要對(duì)硬件有足夠必要的了解,否則會(huì)遇到某些難以理解

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論