CCSDSP開發(fā)環(huán)境經典教程.doc_第1頁
CCSDSP開發(fā)環(huán)境經典教程.doc_第2頁
CCSDSP開發(fā)環(huán)境經典教程.doc_第3頁
CCSDSP開發(fā)環(huán)境經典教程.doc_第4頁
CCSDSP開發(fā)環(huán)境經典教程.doc_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章CCS概述第一章 CCS概述本章概述CCS(Code Composer Studio)軟件開發(fā)過程、CCS組件及CCS使用的文件和變量。CCS提供了配置、建立、調試、跟蹤和分析程序的工具,它便于實時、嵌入式信號處理程序的編制和測試,它能夠加速開發(fā)進程,提高工作效率。1.1 CCS概述CCS提供了基本的代碼生成工具,它們具有一系列的調試、分析能力。CCS支持如下所示的開發(fā)周期的所有階段。在使用本教程之前,必須完成下述工作:o 安裝目標板和驅動軟件。按照隨目標板所提供的說明書安裝。如果你正在用仿真器或目標板,其驅動軟件已隨目標板提供,你可以按產品的安裝指南逐步安裝。o 安裝CCS.遵循安裝說

2、明書安裝。o 運行CCS安裝程序SETUP. SETUP程序允許CCS使用為目標板所安裝的驅動程序。CCS構成及接口見圖1-1。圖1-1 CCS構成及接口1.2 代碼生成工具 代碼生成工具奠定了CCS所提供的開發(fā)環(huán)境的基礎。圖1-2是一個典型的軟件開發(fā)流程圖,圖中陰影部分表示通常的C語言開發(fā)途徑,其它部分是為了強化開發(fā)過程而設置的附加功能。圖1-2 軟件開發(fā)流程圖1-2描述的工具如下:o C編譯器(C compiler) 產生匯編語言源代碼,其細節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南。o 匯編器(assembler)把匯編語言源文件翻譯成機器語言目標文件,機器語言格式為公用目標格式(

3、COFF),其細節(jié)參見TMS320C54x匯編語言工具用戶指南。o 連接器(linker)把多個目標文件組合成單個可執(zhí)行目標模塊。它一邊創(chuàng)建可執(zhí)行模塊,一邊完成重定位以及決定外部參考。連接器的輸入是可重定位的目標文件和目標庫文件,有關連接器的細節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南和匯編語言工具用戶指南。o 歸檔器(archiver)允許你把一組文件收集到一個歸檔文件中。歸檔器也允許你通過刪除、替換、提取或添加文件來調整庫,其細節(jié)參見TMS320C54x匯編語言工具用戶指南。o 助記符到代數(shù)匯編語言轉換公用程序(mnimonic_to_algebric assembly transl

4、ator utility)把含有助記符指令的匯編語言源文件轉換成含有代數(shù)指令的匯編語言源文件,其細節(jié)參見TMS320C54x匯編語言工具用戶指南。o 你可以利用建庫程序(library_build utility)建立滿足你自己要求的“運行支持庫”,其細節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南。o 運行支持庫(run_time_support libraries) 它包括C編譯器所支持的ANSI標準運行支持函數(shù)、編譯器公用程序函數(shù)、浮點運算函數(shù)和C編譯器支持的I/O函數(shù),其細節(jié)參見TMS320C54x最優(yōu)化C編譯器用戶指南。o 十六進制轉換公用程序(hex conversion uti

5、lity) 它把COFF目標文件轉換成TI-Tagged、ASCII-hex、 Intel、 Motorola-S、或 Tektronix 等目標格式,可以把轉換好的文件下載到EPROM編程器中,其細節(jié)參見TMS320C54x匯編語言工具用戶指南。o 交叉引用列表器(cross_reference lister)它用目標文件產生參照列表文件,可顯示符號及其定義,以及符號所在的源文件,其細節(jié)參見TMS320C54x匯編語言工具用戶指南。o 絕對列表器(absolute lister)它輸入目標文件,輸出.abs文件,通過匯編.abs文件可產生含有絕對地址的列表文件。如果沒有絕對列表器,這些操作將

6、需要冗長乏味的手工操作才能完成。1.3 CCS集成開發(fā)環(huán)境CCS集成開發(fā)環(huán)境允許編輯、編譯和調試DSP目標程序。1.3.1 編輯源程序CCS允許編輯C源程序和匯編語言源程序,你還可以在C語句后面顯示匯編指令的方式來查看C源程序。集成編輯環(huán)境支持下述功能:o 用彩色加亮關鍵字、注釋和字符串。o 以圓括弧或大括弧標記C程序塊,查找匹配塊或下一個圓括弧或大括弧。 o 在一個或多個文件中查找和替代字符串,能夠實現(xiàn)快速搜索。o 取消和重復多個動作。o 獲得“上下文相關”的幫助。o 用戶定制的鍵盤命令分配。1.3.2創(chuàng)建應用程序應用程序通過工程文件來創(chuàng)建。工程文件中包括C源程序、匯編源程序、目標文件、庫文

7、件、連接命令文件和包含文件。編譯、匯編和連接文件時,可以分別指定它們的選項。在CCS中,可以選擇完全編譯或增量編譯,可以編譯單個文件,也可以掃描出工程文件的全部包含文件從屬樹,也可以利用傳統(tǒng)的makefiles文件編譯。1.3.3 調試應用程序CCS提供下列調試功能:o 設置可選擇步數(shù)的斷點o 在斷點處自動更新窗口o 查看變量o 觀察和編輯存儲器和寄存器o 觀察調用堆棧o 對流向目標系統(tǒng)或從目標系統(tǒng)流出的數(shù)據采用探針工具觀察,并收集存儲器映象o 繪制選定對象的信號曲線o 估算執(zhí)行統(tǒng)計數(shù)據o 觀察反匯編指令和C指令CCS提供GEL語言,它允許開發(fā)者向CCS菜單中添加功能。1.4 硬件仿真和實時數(shù)

8、據交換TI DSPDSP供在片仿真支持,它使得CCS能夠控制程序的執(zhí)行,實時監(jiān)視程序運行。增強型JTAG連接提供了對在片仿真的支持,它是一種可與任意DSP系統(tǒng)相連的低侵擾式的連接。仿真接口提供主機一側的JTAG連接,如TI XDS510XDS510 仿真器。為方便起見,評估板提供在板JTAG仿真接口。在片仿真硬件提供多種功能:o DSP的啟動、停止或復位功能o 向DSP下載代碼或數(shù)據o 檢查DSP的寄存器或存儲器o 硬件指令或依賴于數(shù)據的斷點o 包括周期的精確計算在內的多種記數(shù)能力o 主機和DSP之間的實時數(shù)據交換(RTDX)CCS提供在片能力的嵌入式支持;另外,RTDX通過主機和DSPAPI

9、API:Application Programming Interface,應用程序編程接口提供主機和DSP之間的雙向實時數(shù)據交換,它能夠使開發(fā)者實時連續(xù)地觀察到DSP應用的實際工作方式。在目標系統(tǒng)應用程序運行時,RTDX也允許開發(fā)者在主機和DSP設備之間傳送數(shù)據,而且這些數(shù)據可以在使用自動OLE的客戶機上實時顯示和分析,從而縮短研發(fā)時間。RTDX由目標系統(tǒng)和主機兩部分組成。小的RTDX庫函數(shù)在目標系統(tǒng)DSP上運行。開發(fā)者通過調用RTDX軟件庫的API函數(shù)將數(shù)據輸入或輸出目標系統(tǒng)的DSP,庫函數(shù)通過在片仿真硬件和增強型JTAG接口將數(shù)據輸入或輸出主機平臺,數(shù)據在DSP應用程序運行時實時傳送給主

10、機。圖1-4RTDX系統(tǒng)組成在主機平臺上,RTDX庫函數(shù)與CCS一道協(xié)同工作。顯示和分析工具可以通過COM API與RTDX通信,從而獲取目標系統(tǒng)數(shù)據,或將數(shù)據發(fā)送給DSP應用例程。開發(fā)者可以使用標準的顯示軟件包,諸如National Instruments LabVIEW,Quinn-Curtis Real-Time Graphics Tools,或Microsoft Excel。同時,開發(fā)者也可研制他們自己的Visual Basic或Visual C+應用程序。圖1-5RTDX實例RTDX能夠記錄實時數(shù)據,并可將其回放用于非實時分析。下述樣本由National Instruments La

11、bVIEW 軟件產生。在目標系統(tǒng)上,一個原始信號通過FIR濾波器,然后與原始信號一起通過RTDX發(fā)送給主機。在主機上,LabVIEW顯示屏通過RTDX COM API獲取數(shù)據,并將它們顯示在顯示屏的左邊。利用信號的功率譜可以檢驗目標系統(tǒng)中FIR濾波器是否正常工作。處理后的信號通過LabVIEW,將其功率譜顯示在右上部分;目標系統(tǒng)的原始信號通過LabVIEW的FIR濾波器,再將其功率譜顯示在右下部分。比較這兩個功率譜便可確認目標系統(tǒng)的濾波器是否正常工作。RTDX適合于各種控制、伺服和音頻應用。例如,無線電通信產品可以通過RTDX捕捉語音合成算法的輸出以檢驗語音應用程序的執(zhí)行情況;嵌入式系統(tǒng)也可從

12、RTDX獲益;硬磁盤驅動設計者可以利用RTDX測試他們的應用軟件,不會因不正確的信號加到伺服馬達上而與驅動發(fā)生沖突;引擎控制器設計者可以利用RTDX在控制程序運行的同時分析隨環(huán)境條件而變化的系數(shù)。對于這些應用,用戶都可以使用可視化工具,而且可以根據需要選擇信息顯示方式。1.5 CCS文件和變量本節(jié)簡述CCS文件夾、CCS的文件類型及CCS環(huán)境變量。1.5.1安裝文件夾安裝進程將在安裝CCS的文件夾(典型情況為:c:ti)中建立子文件夾。此外,子文件夾又建立在Windows目錄下(c:windows or c:winnt)。C:ti包含以下目錄:o bin.各種應用程序o C2800bios。D

13、SP/BIOS API的程序編譯時使用的文件o C2800cgtools.Texas instruments源代碼生成工具o C2800examples.源程序實例o C2800rtdx.RTDX文件o C2800tutorial.本手冊中使用的實例文件o ccbin.關于CCS環(huán)境的文件o ccgel.與CCS一起使用的GEL文件o docs.PDS格式的文件和指南o myprojects.用戶文件夾1.5.2文件擴展名以下目錄結構被添加到Windows目錄:o tidrivers.各種DSP板驅動文件o tiplugins.和CCS一起使用的插件程序o tiuninstall.支持卸載CC

14、S軟件的文件當使用CCS時,你將經常遇見下述擴展名文件:o project.mak.CCS使用的工程文件o program.c.C程序源文件o program.asm. 匯編程序源文件o filename.h.C程序的頭文件,包含DSP/BIOS API模塊的頭文件o filename.lib.庫文件o project.cmd.連接命令文件o program.obj.由源文件編譯或匯編而得的目標文件o program.out.(經完整的編譯、匯編以及連接的)可執(zhí)行文件o project.wks. 存儲環(huán)境設置信息的工作區(qū)文件,o program.cdb.配置數(shù)據庫文件。采用DSP/BIOS A

15、PI的應用程序需要這類文件,對于其它應用程序則是可選的。保存配置文件時將產生下列文件:u programcfg.cmd.連接器命令文件u programcfg.h28.頭文件u programcfg.s28.匯編源文件XIII第四章算法和數(shù)據測試第二章 開發(fā)一個簡單的應用程序本章使用hello world實例介紹在CCS中創(chuàng)建、調試和測試應用程序的基本步驟;介紹CCS的主要特點,為在CCS中深入開發(fā)DSP軟件奠定基礎。在使用本實例之前,你應該已經根據安裝說明書完成了CCS安裝。建議在使用CCS時利用目標板而不是仿真器。如果沒有CCS而只有代碼生成工具和Code Composer或者是利用仿真器

16、在進行開發(fā),你只要按第二章和第四章中的步驟執(zhí)行即可。2.1 創(chuàng)建工程文件在本章中,將建立一個新的應用程序,它采用標準庫函數(shù)來顯示一條hello world 消息。1. 如果CCS安裝在c:ti中,則可在c:timyprojects建立文件夾adcshujucaiji hello1。(若將CCS安裝在其它位置,則在相應位置創(chuàng)建文件夾hello1。)2. 將c:tic2800tutorialhello1中的所有文件拷貝到上述新文件夾。3. 從Windows Start菜單中選擇ProgramsCode Composer Studio C5400CCStudio。(或者在桌面上雙擊Code Comp

17、oser Studio圖標。) 注:CCS設置如果第一次啟動CCS時出現(xiàn)錯誤信息,首先確認是否已經安裝了CCS。如果利用目標板進行開發(fā),而不是帶有CD-ROM的仿真器,則可參看與目標板一起提供的文檔以設置正確的I/O端口地址。 4. 選擇菜單項ProjectNew。5. 在Save New Project As窗口中選擇你所建立的工作文件夾并點擊Open。鍵入adcshujucaiji作為文件名并點擊Save,CCS就創(chuàng)建了adcshujucaiji.mak的工程文件,它存儲你的工程設置,并且提供對工程所使用的各種文件的引用。2.2 向工程添加文件1. 選擇ProjectAdd Files t

18、o Project,選擇hello.c并點擊Open。2. 選擇ProjectAdd Files to Project,在文件類型框中選擇*.asm。選擇vector.asm并點擊Open。該文件包含了設置跳轉到該程序的C入口點的RESET中斷(c_int00)所需的匯編指令。(對于更復雜的程序,可在vector.asm定義附加的中斷矢量,或者,可用3.1節(jié)上所說明的DSP/BIOS來自動定義所有的中斷矢量)3. 選擇ProjectAdd Files to Project,在文件類型框中選擇*.cmd。選擇hello.cmd并點擊Open,hello.cmd包含程序段到存儲器的映射。4. 選擇

19、ProjectAdd Files to Project,進入編譯庫文件夾(C:tic2800cgtoolslib)。在文件類型框中選擇*.o*,*.lib。選擇rts.lib并點擊Open,該庫文件對目標系統(tǒng)DSP提供運行支持。5. 點擊緊挨著Project、Myhello.mak、Library和Source旁邊的符號+展開Project表,它稱之為Project View。 注:打開Project View如果看不到Project View,則選擇ViewProject。如果這時選擇過Bookmarks圖標,仍看不到Project View,則只須再點擊Project View底部的文件圖

20、標即可。6. 注意包含文件還沒有在Project View中出現(xiàn)。在工程的創(chuàng)建過程中,CCS掃描文件間的依賴關系時將自動找出包含文件,因此不必人工地向工程中添加包含文件。在工程建立之后,包含文件自動出現(xiàn)在Project View中。如果需要從工程中刪除文件,則只需在Project View中的相應文件上點擊鼠標右鍵,并從彈出菜單中選擇Remove from project即可。在編譯工程文件時,CCS按下述路徑順序搜索文件:o 包含源文件的目錄o 編譯器和匯編器選項的Include Search Path中列出的目錄(從左到右)2.3 查看源代碼1. 雙擊Project View中的文件hel

21、lo.c,可在窗口的右半部看到源代碼。2. 如想使窗口更大一些,以便能夠即時地看到更多的源代碼,你可以選擇OptionFont使窗口具有更小的字型。/* = hello.c = */#include #include hello.h#define BUFSIZE 30struct PARMS str =2934,9432,213,9432,&str;/* = main =*/void main()#ifdef FILEIOint i;char scanStrBUFSIZE;char fileStrBUFSIZE;size_t readSize;FILE *fptr;#endif/* write

22、 a string to stdout */puts(hello world!n);#ifdef FILEIO/* clear char arrays */for (i = 0; i BUFSIZE; i+) scanStri = 0 /* deliberate syntax error */fileStri = 0;/* read a string from stdin */scanf(%s, scanStr);/* open a file on the host and write char array */fptr = fopen(file.txt, w);fprintf(fptr, %

23、s, scanStr);fclose(fptr);/* open a file on the host and read char array */fptr = fopen(file.txt, r);fseek(fptr, 0L, SEEK_SET);readSize = fread(fileStr, sizeof(char), BUFSIZE, fptr);printf(Read a %d byte char array: %s n, readSize, fileStr);fclose(fptr);#endif當沒有定義FILEIO時,采用標準puts()函數(shù)顯示一條hello world消

24、息,它只是一個簡單程序。當定義了FILEIO后(見2.5節(jié)),該程序給出一個輸入提示,并將輸入字符串存放到一個文件中,然后從文件中讀出該字符串,并把它輸出到標準輸出設備上。2.4 編譯和運行程序CCS會自動將你所作的改變保存到工程設置中。在完成上節(jié)之后,如果你退出了CCS,則通過重新啟動CCS和點擊ProjectOpen,即可返回到你剛才停止工作處。注:重新設置目標系統(tǒng)DSP如果第一次能夠啟動CCS,但接下來得到CCS不能初始化目標系統(tǒng)DSP的出錯信息則可選擇DebugReset DSP菜單項。若還不能解決上述問題,你可能需要運行你的目標板所提供的復位程序。 為了編譯和運行程序,要按照以下步驟

25、進行操作:1. 點擊工具欄按鈕或選擇ProjectRebuild All ,CCS重新編譯、匯編和連接工程中的所有文件,有關此過程的信息顯示在窗口底部的信息框中。2. 選擇FileLoad Program,選擇剛重新編譯過的程序adshujucaiji.out(它應該在c:timyprojectsadshujucaiji文件夾中,除非你把CCS安裝在別的地方)并點擊Open。CCS把程序加載到目標系統(tǒng)DSP上,并打開Dis_Assembly窗口,該窗口顯示反匯編指令。(注意,CCS還會自動打開窗口底部一個 標有Stdout的區(qū)域,該區(qū)域用以顯示程序送往Stdout的輸出。)3. 點擊Dis_A

26、ssembly窗口中一條匯編指令(點擊指令,而不是點擊指令的地址或空白區(qū)域)。按F1鍵。CCS將搜索有關那條指令的幫助信息。這是一種獲得關于不熟悉的匯編指令的幫助信息的好方法。4. 點擊工具欄按鈕或選擇DebugRun。 注:屏幕尺寸和設置工具欄有些部分可能被Build窗口隱藏起來,這取決于屏幕尺寸和設置。為了看到整個工具欄,請在Build窗口中點擊右鍵并取消Allow Docking選擇。當運行程序時,可在Stdout窗口中看到hello world消息。2.5 修改程序選項和糾正語法錯誤在前一節(jié)中,由于沒有定義FILEIO,預處理器命令(#ifdef 和#endif)之間的程序沒有運行。在

27、本節(jié)中,使用CCS設置一個預處理器選項,并找出和糾正語法錯誤。1. 選擇ProjectOptions。2. 從Build Option窗口的Compiler欄的Category列表中選擇Symbles。在Define Symbles框中鍵入FILEIO并按Tab鍵。注意,現(xiàn)在窗口頂部的編譯命令包含-d選項,當你重新編譯該程序時,程序中#ifdef FILEIO語句后的源代碼就包含在內了。(其它選項可以是變化的,這取決于正在使用的DSP板。)3. 點擊OK保存新的選項設置。4. 點擊(Rebuild All)工具欄按鈕或選擇ProjectRebuild All。無論何時,只要工程選項改變,就必須

28、重新編譯所有文件。5. 出現(xiàn)一條說明程序含有編譯錯誤的消息,點擊Cancel。在Build tab 區(qū)域移動滾動條,就可看到一條語法出錯信息。6. 雙擊描述語法錯誤位置的紅色文字。注意到hello.c源文件是打開的,光標會落在該行上: fileStri = 07. 修改語法錯誤(缺少分號)。注意,緊挨著編輯窗口題目欄的文件名旁出現(xiàn)一個星號(*),表明源代碼已被修改過。當文件被保存時,星號隨之消失。8. 選擇FileSave 或按Ctrl+S可將所作的改變存入hello.c。9. 點擊(Incremental Build)工具欄按鈕或選擇ProjectBuild,CCS重新編譯已被更新的文件。2

29、.6 使用斷點和觀察窗口當開發(fā)和測試程序時,常常需要在程序執(zhí)行過程中檢查變量的值。在本節(jié)中,可用斷點和觀察窗口來觀察這些值。程序執(zhí)行到斷點后,還可以使用單步執(zhí)行命令。1. 選擇FileReload Program.2. 雙擊Project View中的文件hello.c??梢约哟蟠翱?,以便能看到更多的源代碼。3. 把光標放到以下行上: fprintf(fptr, “%S”, scacStr);4. 點擊工具欄按鈕或按F9,該行顯示為高亮紫紅色。(如果愿意的話,可通過OptionColor改變顏色。)5. 選擇ViewWatch Window。CCS窗口的右下角會出現(xiàn)一個獨立區(qū)域,在程序運行時,

30、該區(qū)域將顯示被觀察變量的值。6. 在Watch Window區(qū)域中點擊鼠標右鍵,從彈出的表中選擇Insert New Expression。7. 鍵入表達式*scanStr并點擊OK。8. 注意局部變量*scanStr被列在Watch window中,但由于程序當前并未執(zhí)行到該變量的main()函數(shù),因此沒有定義。9. 選擇DebugRun或按F5。10. 在相應提示下,鍵入goodbye并點擊OK。注意,Stdout框以藍色顯示輸入的文字。還應注意,Watch Window中顯示出*scanStr的值。在鍵入一個輸入字符串之后,程序運行并在斷點處停止。程序中將要執(zhí)行的下一行以黃色加亮。11.

31、 點擊(Step Over)工具欄按鈕或按F10以便執(zhí)行到所調用的函數(shù)fprintf()之后。12. 用CCS提供的step命令試驗: Step Into (F2) Step over (F10) Step Out (Shift F7) Run to Cursor (Ctrl F10) 13. 點擊工具欄按鈕或按F5運行程序到結束。Code Composer Studio 教程3 基于DSP的數(shù)據采集設計實例3.1 安裝驅動程序(1)安裝仿真器驅動程序連接接仿真器、DSP開發(fā)板,將仿真器經USB接口臉上電腦之后系統(tǒng)提示“使用找到新硬件向導”,選擇驅動文件“XDS 510 USB Driver”

32、,完成之后系統(tǒng)提示新硬件可用。如下圖所示。(2)安裝仿真器的CCS驅動找到驅動文件“XDS 510 CCS Driver”,運行,安裝到CCS3.3軟件所在的文件夾里面,具體如下圖所示。3.2 啟動CCS前的設置(1).打開“Setup CCStudio V3.3 ”,在“Available Factory Boards”下選擇“F2812 XDS510 Emulator”(2).在“system configuration”下的“F2812 XDS510 Emulator”右鍵選擇“properties”,對其進項設置,具體設置如下圖。(3). 點擊“Save and Quit”完成芯片設置

33、,系統(tǒng)自動啟動CCS 3.3操作界面。3.3 創(chuàng)建AD數(shù)據采集工程(1) 選擇“ProjectNew(工程新建)”,彈出工程建立對話框。 (2) 在Project欄輸入文件名adshujucaiji。工作目錄是D:ccstudio_v3.3myprojects,其他兩項也選默認即可。 (3) 單擊完成按鈕,將在工程窗口的Project下面創(chuàng)建adshujucaiji工程。 3.4 項工程中添加源文件(1) 將從ti官方網站上下載的源文件復制到 D:ccstudio_v3.3myprojectsadshujucaiji文件夾內。(2)在“projects”下右鍵點擊工程名“adshujucaij

34、i”選擇“add File to project”,將復制到文件夾“adshujucaiji”中的源文件全部加載進來。如下圖所示。3.5 程序的編寫3.5.1 程序編寫思路(1). 一個DSP程序的構成。一個完整的DSP程序主要由庫文件,.c源文件,.h頭文件以及.cmd連接命令文件組成。(2).DSP程序的編寫思路一個DSP程序要完成設想的功能,需要完成系統(tǒng)初始化,所使用的外設的初始化,中斷初始化,已經終端服務程序的編寫。其中系統(tǒng),外設初始化只需要對相應的寄存器進行設置即可以完成。中斷服務程序根據我們所需要的處理算法進行編寫。(3).現(xiàn)在總結起來DSP2812其實可以分為以下幾個部分:時鐘(

35、DSP工作的動力)、外設(DSP實現(xiàn)相應的功能都是有對應的外設來實現(xiàn)的)、中斷和中斷服務程序。只要把這四個部分弄懂了,DSP的使用應該就沒多大問題。DSP的不同功能主要有對應的外設實現(xiàn),實際上只要掌握了一種外設的使用方(寄存器、中斷、時鐘的設置)其他的都可以用同樣的步驟使用。 首先將程序分成:系統(tǒng)初始化、所使用的外設的初始化、三級中斷設置、中斷服務程序、鏈接命令文件(.cmd文件)和頭文件幾個部分。在系統(tǒng)初始化程序中了解系統(tǒng)時鐘、外設端口、看門狗的設置方法以及相關寄存器的使用,在外設初始化程序中,對應該外設的使用原理,了解“這個寄存器起什么作用,這樣設置起什么作用”,掌握該外設設備(聯(lián)想到所有

36、的外設)初始化時必須設置的內容有哪些,需要特殊設施的寄存器有哪些。之后了解外設級、PIE級和CPU級中斷初始化、開中斷、關中斷的設置方法、順序和原因。中斷服務程序完成特殊的數(shù)據處理,按照自己的算法編寫就可以,但要注意在所有的中斷服務程序中都要對三級中斷進行相應的設置,以保證中斷服務程序能夠連續(xù)不斷地運行下去。在.CMD文件中完成對內部存儲器外擴存儲器的分配,了解相關指令的作用和使用方法。3.5.2 程序工作流程在進行軟件設計之前,首先明確系統(tǒng)的工作流程,簡單介紹如下:(1)DSP上電,等待采集開始命令。(2)使用事件管理器EVA的通用定時器周期中斷來觸發(fā)ADC的采集動作。(3)進行數(shù)據的校正和

37、融合處理。(4)將融合后的數(shù)據經eCAN總線傳送到上位機。本系統(tǒng)使用EVA的通用定時器1的周期中斷來觸發(fā)AD的轉換,當ADC完成 SEQ1中定義的端口的數(shù)據采集轉換時,觸發(fā)中斷,進入中斷服務程序。DSP F2812的AD為12 位精度,由于各種因素的影響,測量值存在誤差,需進行校正。校正完成之后對該次測量獲得的兩個數(shù)值進行聯(lián)合kalman濾波器數(shù)據融合,完成融合操作后將得到的數(shù)據存入eCAN總線的發(fā)送郵箱,將數(shù)據發(fā)送到上位機,一次操作完成。之后退出中斷程序,等待下一次中斷觸發(fā)信號的到來。本系統(tǒng)就按照怎樣的順序完成真空度的數(shù)據采集、校正、融合和傳輸操作 。整個軟件系統(tǒng)可以分為如下幾個部分:系統(tǒng)初

38、始化,用來完成DSP寄存器的設置,各級中斷的清零,系統(tǒng)時鐘、外設時鐘的設置,踢除看門狗、初始化AD、EVA等操作;終端服務程序的設置,用來完成采樣結果的移位操作、校正,聯(lián)合kalman濾波器數(shù)據融合以及eCAN總線的數(shù)據傳輸;鏈接命令文件的編寫,由于使用了外擴存儲器,為保證程序執(zhí)行的速度,將程序空間分配到片內存儲器,程序執(zhí)行過程中產生的數(shù)據存儲到片外存儲器中。3.5.3系統(tǒng)初始化 sysctrl()(1)系統(tǒng)時鐘設置,通過高速時鐘預訂標寄存器標志寄存器簡稱標寄存器或標器(HISPCP)、低速時鐘預訂標寄存器(LOSPCP)和鎖相環(huán)寄存器設置,獲得高、第速時鐘,使能相關外設時鐘。如下圖所示(2)

39、中斷初始化首先關閉全局中斷,關閉外設中斷,并清除所左右的中斷標志位。 DINT; / 關閉總中斷 IER = 0x0000; / 關閉外設中斷 IFR = 0x0000; / 清中斷標志其次初始化PIE控制寄存器,由函數(shù)InitPiectrl()實現(xiàn)。將所有的PIE級中斷標志位和中斷使能位清零。并將AD中斷所在組對應的中斷應答寄存器中的相應位置零。最后使能PIE向量表,由函數(shù)InitPieVectable()實現(xiàn)。3.5.4 端口設置數(shù)據采集使用同步轉換模式,對通道ADCINA0和ADCINB0同時采樣8次。所以將這兩個端口設置成普通輸入輸出端口且為輸入模式。 void InitGpio(vo

40、id) EALLOW; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2=0; GpioMuxRegs.GPADIR.bit.GPIOA0=0; GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0=0; GpioMuxRegs.GPBDIR.bit.GPIOB0=0; GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4=1; GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1; GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=1; GpioMuxRegs.GPFMUX.bit.CA

41、NRXA_GPIOF7=1; GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1; EDIS; 3.5.5 數(shù)據采集外設AD的設置F2812的ADC模塊有16個通道,排序器SEQ1和SEQ2可以作為兩個獨立的8通道模塊,也可以級聯(lián)成一個16通道的模塊。AD模塊的內部結構如圖3.5所示。雖然有兩組輸入通道和兩個排序器,但是ADC模塊中只有一個轉換器,同一時刻只能對1路輸入信號進行轉換,當有多路信號需要進行轉換時,ADC模塊通過前端模擬多路復用器的控制,在同一時刻,只允許1路信號輸入到ADC的轉換器中。在這兩種工作方式下,AD能夠通過對相關寄存器的設置對需要轉換的通道進行

42、排序,通過模擬多路轉換器每次轉換的通道。每個排序器轉換完成,將所轉換通道的值存儲在其各自的轉換結果寄存器中。我們可以通過設置排序寄存器,達到對一個通道進行多次轉換的目的,這就是所說的過采樣算法,對比單次采樣轉換,能夠有效提高結果的精度 2812的ADC可以工作在順序采樣和同步采樣兩種工作模式。順序采樣也就是按照順序對每個通道依次進行采樣。而同步采樣,是同時采樣一對通道,即ADCINA0和ADCINB0同時采樣,ADCINA1和ADCINB1同時采樣。我們使用級聯(lián)排序器的同時采樣模式。此時排序器SEQ1和SEQ2級聯(lián)成最多16個通道的排序器。 ADC模塊只有接收到轉換觸發(fā)信號才可開始轉換,如下表

43、所示,我們采用事件管理器A的周期中斷觸發(fā)AD。SEQ1SEQ2級聯(lián)SEQ軟件觸發(fā)(軟件SOC)軟件觸發(fā)(軟件SOC)軟件觸發(fā)(軟件SOC)事件管理器A(EVA SOC)事件管理器B(EVB SOC)事件管理器A(EVA SOC)事件管理器B(EVB SOC)外部SOC引腳外部SOC引腳2812AD的16個通道是可以通過編程來進行選擇在某一時刻究竟是哪一個通道被選通進行采樣的。這個功能就需要通過ADC輸入通道選擇序列控制寄存器ADCCHSELSEQx(x=1,2,3,4)來實現(xiàn)。每一個輸入通道選擇序列控制寄存器都是16位的,被分成了4個功能位CONVxx,每一個功能位占據寄存器的4位,在AD轉換

44、的過程中,當前CONVxx位定義了要進行采樣和轉換的引腳。為了能夠對端口進行連續(xù)不斷的采樣,通用定時器1產生的AD采集觸發(fā)信號頻率應高于AD采集頻率。我們采用的ADCLK為1.875M,每次觸發(fā)共采集16次,加上采樣窗口時間為6個ADCLK,轉換頻率約為13K。EVA使用低速時鐘HISPCP,它的的通用定時器1的時鐘為60M,周期為300,為連續(xù)增計數(shù)模式,它的周期匹配頻率為0.2M,能夠使ADC連續(xù)不斷地采集數(shù)據。 輸入到AD的時鐘如下圖所示3.5.6 EVA的初始化使用EVA通用定時器1的周期中斷觸發(fā)信號,EVA使用低速時鐘HISPCP,它的的通用定時器1的時鐘為60M,周期為300,為連

45、續(xù)增計數(shù)模式,它的周期匹配頻率為0.2M,能夠使ADC連續(xù)不斷地采集數(shù)據。EVA的初始化程序如下 void InitEVA(void) EALLOW; EvaRegs.T1CMPR=0x0080; EvaRegs.T1PR=0x012C; EvaRegs.GPTCONA.bit.T1TOADC=1; EvaRegs.T1CON.all=0x1042; EvaRegs.T1CNT=0x0000; EDIS; 3.5.7 中斷設置(1)DSP的中斷分為外設級、PIE級和CPU級,為了是CPU能夠響應有中斷出發(fā)時間引發(fā)的中斷,需要將三級中斷全部打開。(2)我們使用的是ADC采集完成中斷,當AD模塊完成8次同步采集之后觸發(fā)外設計中斷,對應的中斷標志位ADCIFR自動置位,如果此時ADC中斷使能位ADCIER

溫馨提示

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

最新文檔

評論

0/150

提交評論