C語言DSP開發(fā)與應(yīng)用舉例(精-哈工大課件)_第1頁
C語言DSP開發(fā)與應(yīng)用舉例(精-哈工大課件)_第2頁
C語言DSP開發(fā)與應(yīng)用舉例(精-哈工大課件)_第3頁
C語言DSP開發(fā)與應(yīng)用舉例(精-哈工大課件)_第4頁
C語言DSP開發(fā)與應(yīng)用舉例(精-哈工大課件)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言DSP開發(fā)使用C語言開發(fā)DSP的原因

基于DSP芯片的軟件開發(fā),用DSP芯片的匯編語言編寫程序是一件比較繁雜的事情。一般來說,各個(gè)公司的DSP芯片所提供的匯編語言并不相同,即使是同一公司的芯片,由于芯片的類型不同(如定點(diǎn)和浮點(diǎn))、芯片的升級換代,其匯編語言也有所不同,使用匯編語言開發(fā)DSP產(chǎn)品的周期相對較長,因?yàn)殚_發(fā)人員在編寫DSP程序之前必須熟悉這種DSP芯片的匯編語言。而產(chǎn)品一旦開發(fā)完畢,如果需要對軟件進(jìn)行修改和升級都將非常困難,這是因?yàn)閰R編語言的可讀性和可移植性比高級語言差。2023/1/121C語言DSP開發(fā)

基于上述原因,各個(gè)DSP芯片公司都相繼推出了相應(yīng)的高級語言(如C語言)編譯器,使得DSP芯片的軟件可以直接用高級語言編寫而成,從而大大提高了DSP芯片的開發(fā)速度,也使程序的修改和移植變得簡單易行。本節(jié)將介紹TMS320C54系列DSP芯片的C語言的軟件設(shè)計(jì)和程序開發(fā)。

2023/1/122DSP中的C語言1.數(shù)據(jù)類型及相互之間的轉(zhuǎn)換2.C語言關(guān)鍵字2023/1/1231.數(shù)據(jù)類型及相互之間的轉(zhuǎn)換2023/1/124

浮點(diǎn)數(shù)據(jù)向整型數(shù)據(jù)的轉(zhuǎn)換是以0為中心截?cái)嗟?。例如:?.3轉(zhuǎn)換成整型為一3。此外,當(dāng)轉(zhuǎn)換后的數(shù)據(jù)類型可以存儲(chǔ)源數(shù)據(jù)類型時(shí),那么指針型數(shù)據(jù)和整型數(shù)據(jù)也可以相互轉(zhuǎn)化。

不同類型的數(shù)據(jù)可以相互轉(zhuǎn)換:2023/1/1252.C語言關(guān)鍵字

在CCS環(huán)境中使用C語言開發(fā)程序,可以使用C語言中常用的一些關(guān)鍵字和表達(dá)式。如:定義數(shù)據(jù)類型的關(guān)鍵字:char,int,double等。條件判斷關(guān)鍵字:if,else,switch,case等。循環(huán)語句關(guān)鍵字:for,while等注:在C語言中,三目運(yùn)算符:表達(dá)式?語句一:語句二;2023/1/126constconst關(guān)鍵字有助于更好地控制對特定數(shù)據(jù)對象存儲(chǔ)空間的分配??梢杂胏onst關(guān)鍵字定義任何變量或數(shù)組,來保證變量或數(shù)組的值不被改變。如果定義一個(gè)對象為const,那么const段會(huì)為此對象分配特定的存儲(chǔ)空間。2023/1/127volatileVolatile關(guān)鍵字用來定義一些變量,保證該變量不會(huì)被優(yōu)化器優(yōu)化。優(yōu)化器會(huì)自動(dòng)分析數(shù)據(jù)流來防止一切可能存取內(nèi)存的操作。如果在寫C代碼的時(shí)候確實(shí)需要用到內(nèi)存存取的代碼,那么必須用volatile關(guān)鍵字來區(qū)別這些存取操作。對存儲(chǔ)器映射存放器都使用volatile關(guān)鍵字來定義。2023/1/128ioportIoport關(guān)鍵字讀寫DSP的I/O端口空間。ioport關(guān)鍵字的用法如下:Ioporttypeporthex_num

ioport是指定這是個(gè)端口變量的關(guān)鍵字;

type是指端口的數(shù)據(jù)類型,必須是char,short,int或unsigned;porthex_num指的是I/O端口號,hex_num變量是一個(gè)十六進(jìn)制數(shù)據(jù)。必須注意的是,所有的端口變量在函數(shù)級說明端口變矗是無效的,必須在支存級予以說明:同時(shí)在函數(shù)原型中不能使用ioport關(guān)鍵字。2023/1/129下面的代碼定義I/O端口為unsignedport10h,將數(shù)據(jù)a寫port10h,然后從port10h讀人數(shù)據(jù)存到b中:2023/1/1210interruptinterrupt關(guān)鍵字用來定義一個(gè)中斷效勞函數(shù),中斷效勞函數(shù)必須保存中斷控制存放器和返回序列。當(dāng)C語言程序被中斷時(shí),中斷效勞程序?qū)⒈4嫠杏玫降拇娣牌?。?dāng)用interrupt關(guān)鍵字定義一個(gè)函數(shù)的時(shí)候,C編譯器會(huì)生成存放器來保存中斷控制存放器和中斷返回序列。interrupt關(guān)鍵字定義函數(shù)既沒有參數(shù)也沒有返回值。2023/1/12112023/1/1212注意:在編譯后的代碼中,c_int00是C語言程序開始的標(biāo)志。這是專門為系統(tǒng)復(fù)位中斷設(shè)定的保存字。系統(tǒng)復(fù)位中斷將初始化整個(gè)系統(tǒng)并調(diào)用main()函數(shù)。2023/1/1213DSP的C語言運(yùn)行環(huán)境1.C程序設(shè)計(jì)流程2.DSP的c語言運(yùn)行環(huán)境2023/1/12141.

’C54x應(yīng)用軟件開發(fā)流程開發(fā)過程的目的是產(chǎn)生一個(gè)可以由’C54x目標(biāo)系統(tǒng)執(zhí)行的模塊。C源文件C編譯器匯編源文件匯編器匯編源文件COFF目標(biāo)文件鏈接器可執(zhí)行的COFF文件宏源文件存檔器宏庫存檔器目標(biāo)文件庫建庫工具運(yùn)行時(shí)支持庫EPROM編程器交叉引用列表器調(diào)試工具TMS320C54x絕對地址列表器HEX代碼轉(zhuǎn)換工具1.C程序設(shè)計(jì)流程2023/1/1215C編譯器C編譯器的編譯時(shí)通過運(yùn)行cl500.exe程序完成的,編譯器運(yùn)行指令:Cl500filenamesobjectfilesFilenames:一個(gè)或多個(gè)C語言源文件的名稱。Objectfiles:編譯器所創(chuàng)立目標(biāo)文件的文件名2023/1/12162.DSP的c語言運(yùn)行環(huán)境〔1〕存儲(chǔ)器模式〔2〕C語言與匯編語言的混合編程方法DSP的C語言程序能否正確執(zhí)行,關(guān)鍵是所有的運(yùn)行代碼是否能保持一個(gè)正確的運(yùn)行環(huán)境。包括:存儲(chǔ)器模式,字符串常量,存放器規(guī)那么,函數(shù)的結(jié)構(gòu)和調(diào)用規(guī)那么,C語言和匯編語言混合匯編,中斷處理等。本節(jié)主要介紹一下兩點(diǎn):2023/1/1217DSP的C編譯器將存儲(chǔ)器分成兩個(gè)線性的段,分別是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。程序存儲(chǔ)器包含可執(zhí)行的代碼。數(shù)據(jù)存儲(chǔ)器包含外部變量、靜態(tài)變量和系統(tǒng)堆棧。由C程序生成的代碼段和數(shù)據(jù)段將連續(xù)地存放在存儲(chǔ)器中。C編譯器生成的段

C編譯器對C程序進(jìn)行編譯后生成可以重定位的代碼和數(shù)據(jù)段,這些段可以用不同的方式分配到存儲(chǔ)器以符合不同系統(tǒng)配置的需要。這些段可以分為兩種類型,一種是已初始化段,另一種是未初始化段?!?〕存儲(chǔ)器模式2023/1/1218已初始化段主要包括數(shù)據(jù)表和可執(zhí)行代碼。C編譯器共創(chuàng)立5個(gè)已初始化段:●.cinit段:包含初始化變量和常數(shù)?!?const段:包含由C限定詞const定義的字符串常量和數(shù)據(jù)?!?switch段;包含switch表●.text段:包含所有的可執(zhí)行代碼。2023/1/1219未初始化段用于保存存儲(chǔ)器空間(通常是RAM),程序利用這些空間在運(yùn)行時(shí)創(chuàng)立和存儲(chǔ)變量。C編譯器共創(chuàng)立了3個(gè)未初始化段。2023/1/1220面向DSP的C語言可以直接嵌人C54xx的匯編指令或者偽指令。直接嵌入?yún)R編指令一方面可以在C程序中實(shí)現(xiàn)C語言無法實(shí)現(xiàn)或者很難實(shí)現(xiàn)的一些硬件控制功能,例如修改中斷控制存放器、中斷使能存放器、讀取狀態(tài)存放器和中斷標(biāo)志存放器等;另一方面也可以在C程序中的關(guān)鍵局部用匯編語句代替C語句,以便能優(yōu)化程序,從而提高整個(gè)程序的運(yùn)行效益。直接嵌人匯編指令在結(jié)構(gòu)上好似調(diào)用一個(gè)特殊命名為asm的且?guī)в幸粋€(gè)字符串常量參數(shù)的函數(shù),其根本格式如下:〔2〕C語言與匯編語言的混合編程方法2023/1/1221Asm(“匯編指令〞)匯編指令用雙引號包括起來,編譯器將雙引號中的字符串直接復(fù)制到輸出文件中。2023/1/1222ARM&DSP實(shí)驗(yàn)箱

DSP采用TI公司的TMS320VC5410,該芯片可以穩(wěn)定工作在160MHz主頻;內(nèi)部具有128KB片內(nèi)RAM和32KB片內(nèi)ROM;該芯片內(nèi)部包含有一個(gè)16位定時(shí)器,6個(gè)DMA控制器,3個(gè)McBSP串行口和1個(gè)增強(qiáng)型HPI控制器。對于本實(shí)驗(yàn)系統(tǒng)上的DSP模塊,板上提供了512KB的FlashROM,用于存放代碼。2023/1/1223ARM&DSP實(shí)驗(yàn)箱結(jié)構(gòu)圖2023/1/12242023/1/12252023/1/12262023/1/12272023/1/12282023/1/12292023/1/12302023/1/1231JTAG接口2023/1/1232C語言DSP開發(fā)2023/1/1233DSP芯片應(yīng)用舉例1、DSP芯片的C語言開發(fā)2、實(shí)驗(yàn)平臺介紹3、實(shí)驗(yàn)內(nèi)容2023/1/12341、DSP芯片的C語言開發(fā)〔P232〕1.1C語言的數(shù)據(jù)訪問方法〔1〕片內(nèi)存放器的訪問通過頭文件定義,指針訪問;〔2〕DSP內(nèi)部和外部存儲(chǔ)器的訪問采用指針方式訪問;〔3〕DSPI/O端口訪問通過ioport關(guān)鍵字訪問;2023/1/12351.2C語言和匯編語言混合編程〔1〕方法一:獨(dú)立編寫C和匯編〔2〕方法二:在C程序中直接嵌入?yún)R編 語句〔3〕方法三:將C程序編譯生成相應(yīng)匯 編語句,然后對匯編程序 手工優(yōu)化和修改2023/1/12362、實(shí)驗(yàn)平臺介紹DataAddressMCBPSJTAGI/OMCBPSTMS320VC5402SRAM模塊128K*16LCD點(diǎn)陣模塊Address/DataTLC320AIC10直流電機(jī)模塊LoggingInterfaceMCBPSExpans_onI/OExpans_on步進(jìn)電機(jī)模塊交通燈模塊實(shí)時(shí)時(shí)鐘模塊鍵盤模塊測溫模塊電源管理模塊JTAG接口TL16C550開關(guān)量輸出模塊開關(guān)量輸入模塊LED數(shù)碼顯示模塊串口通訊模塊語音輸入語音輸出語音輸出并行接口HPI2023/1/12372.1實(shí)驗(yàn)平臺說明最小系統(tǒng)板,是獨(dú)立的DSP最小系統(tǒng)。硬件測試平臺,是為DSP提供的,盡可能測試其所有功能的外圍電路。本功能不推薦VC5402使用。2023/1/12382.2實(shí)驗(yàn)箱資源配置

2.2.1電源管理本實(shí)驗(yàn)箱使用的電源電壓有+1.8V,+3.3V,+5V,±12V。〔1〕電源開關(guān):控制整個(gè)系統(tǒng)的電源,其上的紅燈亮表示系統(tǒng)已上電?!?〕步進(jìn)電機(jī)電源開關(guān)SW301:控制步進(jìn)電機(jī)模塊局部的電源。開關(guān)撥向下,步進(jìn)電機(jī)模塊斷電,開關(guān)撥向上,步進(jìn)電機(jī)模塊通電?!?〕直流電機(jī)電源開關(guān)ZLDJ:控制直流電機(jī)模塊局部的電源。開關(guān)撥向下,直流電機(jī)模塊斷電,開關(guān)撥向上,直流電機(jī)模塊通電。〔4〕IO輸入輸出方式選擇開關(guān)SW601:選擇IO輸出方式。開關(guān)撥向上,選擇IO輸出方式一,開關(guān)撥向下,選擇IO輸出方式二?!?〕復(fù)位開關(guān)RESET:按下此開關(guān),復(fù)位DSP?!?〕中斷按鍵:按下此鍵可向DSP產(chǎn)生中斷信號。2023/1/12392.2.2存儲(chǔ)器擴(kuò)展

芯片:4k的ROM、16k的DARAM;本實(shí)驗(yàn)箱擴(kuò)展了64K*16程序存儲(chǔ)器,64K*16數(shù)據(jù)存儲(chǔ)器,合計(jì)為128K*16的靜態(tài)存儲(chǔ)器。2023/1/12402.2.3最小系統(tǒng)板設(shè)置

J101:短接:微處理器方式運(yùn)行,即運(yùn)行片外存儲(chǔ)器內(nèi)的程序;開路:微控制器方式運(yùn)行,即運(yùn)行片內(nèi)存儲(chǔ)器內(nèi)的程序。J102:短路:BCLR0與BCLX0短路;開路:BCLR0與BCLX0未短路。J103:短路:BSFR0與BSFX0短路;開路:BSFR0與BSFX0未短路。J104:短路:選擇AIC10工作在從方式;開路:選擇AIC10工作在主方式。J108:短路:HPIENA為高;開路:HPIENA為低。J110:短路:DS18B20的I/O腳連至5402的HD1;開路:DS18B20的I/O腳未連至5402的HD1。J111:短路:DS1302的I/O腳連至5402的HD7;開路:DS1302的I/O腳未連至5402的HD7。J120:短路:LM386輸出端電容被短路;開路:LM386輸出端電容有效。2023/1/12412.3實(shí)驗(yàn)?zāi)K〔1〕開關(guān)量的輸入模塊和輸出模塊;〔2〕中斷〔3〕LCD點(diǎn)陣模塊〔4〕實(shí)時(shí)時(shí)鐘模塊〔5〕測溫模塊〔6〕數(shù)碼顯示模塊〔7〕鍵盤模塊〔8〕交通燈模塊〔9〕步進(jìn)電機(jī)模塊〔10〕直流電機(jī)模塊2023/1/12422.4實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)一DSP開發(fā)環(huán)境的建立〔1〕了解CCS的組件及其安裝;〔2〕了解DSP實(shí)驗(yàn)系統(tǒng)的組成及仿真系統(tǒng)的安裝;〔3〕熟悉CCS的各種功能;〔4〕能讀懂例如程序,能將所讀結(jié)果與軟件仿真系統(tǒng)的觀察結(jié)果,進(jìn)行比較;2023/1/1243實(shí)驗(yàn)2數(shù)碼管顯示實(shí)驗(yàn)〔1〕掌握數(shù)碼管驅(qū)動(dòng)器MAX7219的使 用方法〔2〕I/O控制MAX7219驅(qū)動(dòng)八位數(shù)碼管 顯示的方法〔3〕通過DSPI/O控制MAX7219驅(qū)動(dòng)八 位數(shù)碼管循環(huán)逐位顯示1-9數(shù)字2023/1/1244實(shí)驗(yàn)內(nèi)容介紹:〔1〕實(shí)驗(yàn)原理MAX7219是一種串行數(shù)據(jù)輸入\輸出的共陰極數(shù)碼管的顯示驅(qū)動(dòng)芯片。它能很方便的將微控制器與8位7段數(shù)碼管連接在一起。MAX7219內(nèi)部由BCD編碼及BCD譯碼器、復(fù)合掃描電路、段和位驅(qū)動(dòng)器以及存儲(chǔ)每位數(shù)的8×8靜態(tài)RAM。MAX7219具有3線的串行接口,能和大多數(shù)的微控制器接口。這三根接口線是片選(CS),數(shù)據(jù)輸入(DIN),時(shí)鐘輸入(SCLK)。MAX7219與DSP的連接如以下圖所示。2023/1/1245DSP與MAX7219的連接

2023/1/1246寄存器名地址數(shù)據(jù)D11D10D9D8HEXD7D6D5D4D3D2D1D0空00000hX位000011h小數(shù)點(diǎn)位控制在BCD譯碼方式中,D6-D4不用。D3-D0=0000-1001對應(yīng)位顯示“0-9”,D3-D0=1010-1110,對應(yīng)位顯示“-,E,H,L,P”。D3-D0=1111對應(yīng)位

溫馨提示

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

評論

0/150

提交評論