【正文】
//控制臺顯示“hello world”DSK6416_init()。命名完后在配置文件Basic中Connection選擇Spectrum digital DSKEVMeZdsp onboard USB Emulator,Device選擇DSK6416,保存。(4)然后工程模板選擇“hello world”,就完成了工程的新建。由于是dsp的第一次實驗,內(nèi)容比較簡單,主要還是在于熟悉ccs這個軟件在進行dsp開發(fā)時的具體建立工程、配置文件、導入實驗板和程序燒寫調(diào)試的過程和步驟。第五篇:DSP第一次實驗報告信息與通信工程學院信號與信息處理綜合實驗(DSP部分)實驗報告班級: 2012211127名: 劉燦姓學日號: 2012210732 期: 一.實驗題目Hello World和LED 二.實驗目的熟悉平DSK6416開發(fā)臺,掌握CCS軟件的基本操作流程,達到熟練操作軟、硬件系統(tǒng)開發(fā)、調(diào)試的目的。8)清除所有斷點,關閉除波形顯示窗口外的所有窗口,并關閉工程文件。4)完成編譯、連接,正確生成OUT 文件。實驗分下面幾步完成:1)根據(jù)確定數(shù)字振蕩器的頻率,確定系數(shù)。圖 41 ‘C5402 的IMR 寄存器其中,HPINT 表示HPI 接口中斷,INT3INT0 為外部引腳產(chǎn)生的中斷,TXINT 和TRINT 為TDM 串口的發(fā)送和接收中斷,BXINT0 和BRINT0 為BSP 串口的發(fā)送和接收中斷,TINT0 為定時器0 中斷。在表42 中列出了定時器控制寄存器的各個比特位的具體定義。定時器被設置成每25uS 產(chǎn)生一次中斷(等效于采樣速率為40K)。在本實驗中將介紹另一種獲得正弦/余弦信號的方法,即利用數(shù)字振蕩器用疊代方法產(chǎn)生正弦信號。程序在執(zhí)行到斷點語句時自動暫停,此時可以通過檢查各個寄存器中的值以及內(nèi)存單元中的值來判斷程序執(zhí)行是否正確?!斑\行程序”按鈕,當程序再次停下來時就可以看見在A 進行除法運算的結(jié)果:AH=4040h,AL=0000h。減法運算的程序到此結(jié)束。 A 寄存器中的值為AH=41c0h,AL=0000h 這就是最后的以浮點數(shù)的格式表示的結(jié)果值24(=12+12)。 放在內(nèi)存區(qū)0x08c0x08d 中,其值也為4140h 和0000h。比如在加法程序中有指令nop 的位置都可以加一個斷點。然后再啟動CCS 實驗系統(tǒng)軟件CCS C5000。在定點運算系統(tǒng)中,雖然在硬件上實現(xiàn)簡單,但是表示的操作數(shù)的動態(tài)范圍要受到限制。3)練習并掌握 TMS320C54X 的匯編語言的匯編指令系統(tǒng)的使用方法,重點練習具有C54X 特點的一些在功能上有所擴展的特殊指令,并了解這些指令在進行算術運算或各種控制時所帶來的方便。但有兩點需要注意:第一,小數(shù)除法的結(jié)果一定是小數(shù)(小于1),所以被除數(shù)一定小于除數(shù)。一種是用乘法 來代替,除以某個數(shù)相當于乘以其倒數(shù),所以先求出其倒數(shù),然后相乘。C54X 中提供了一個狀態(tài)位FRCT,將其設置為1 時,系統(tǒng)自動將乘積結(jié)果左移一位。其中SUBS 用于無符號數(shù)的減法運算,SUBB 用于帶進位的減法運算(如32 位擴展精度的減法),而SUBC 為移位減,DSP 中的除法就是用該指令來實現(xiàn)的。當它表示一個整數(shù)時,其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。DSP 中提供了大量的指令來 實現(xiàn)這些功能。實驗步驟:以演示實驗一為例:1. 使用配送的并口電纜線連接好計算機并口與實驗箱并口,打開實驗箱電源; 2.啟動CCS,點擊主菜單“ProjectOpen”在目錄“C5000QuickStartsinewave”,然后點擊主菜單“ProjectBuild”編譯,然后點擊主菜單“FileLoad Program”;3. ,在注釋行“set breakpoint in CCS!!”語句的NOP處單擊右鍵彈出菜單,選擇“Toggle breakpoint”加入紅色的斷點,如下圖所示; 4. 點擊主菜單“ViewGraphTime/Frequency?”,屏幕會出現(xiàn)圖形窗口設置對話框5. 雙擊Start Address,將其改為y0;雙擊Acquisition Buffer Size,將其改為1;DSP Data Type設置成16bit signed integer,如下圖所示;6. 點擊主菜單“WindowsTile Horizontally”,排列好窗口,便于觀察7. 點擊主菜單“DebugAnimate”或按F12鍵動畫運行程序,即可觀察到實驗結(jié)果:心得體會:通過對演示實驗的練習,讓自己更進一步對CCS軟件的運行環(huán)境、編譯過程、裝載過程、屬性設置、動畫演示、實驗結(jié)果的觀察有一個醒目的了解和熟悉的操作方法。清除所有斷點,關閉除波形顯示窗口外的所有窗口,并關閉工程文件。4 完成編譯、連接,正確生成OUT 文件。實驗分下面幾步完成: 根據(jù)確定數(shù)字振蕩器的頻率,確定系數(shù)。圖 41 ‘C5402 的IMR 寄存器其中,表示HPI 接口中斷,INT3INT0 為外部引腳產(chǎn)生的中斷,TXINT 和TRINT 為TDM 串口的發(fā)送和接收中斷,BXINT0 和BRINT0 BSP 串口的發(fā)送和接收中斷,14為定時器 0 中斷。在表42 中列出了定時器控制寄存器的各個比特位的具體定義。定時器被設置成每25uS 產(chǎn)生一次中斷(等效于采樣速率為40K)。在本實驗中將介紹另一種獲得正弦/余弦信號的方法,即利用數(shù)字振蕩器用疊代方法產(chǎn)生正弦信號。程序在執(zhí)行到斷點語句時自動暫停,此時可以通過檢查各個寄存器中的值以及內(nèi)存單元中的值來判斷程序執(zhí)行是否正確?!斑\行程序”按鈕,當程序再次停下來時就可以看見在A 進行除法運算的結(jié)果:AH=4040h,AL=0000h。減法運算的程序到此結(jié)束。 A 寄存器中的值為AH=41c0h,AL=0000h 這就是最后的以浮點數(shù)的格式表示的結(jié)果值24(=12+12)。 放在內(nèi)存區(qū)0x08c0x08d 中,其值也為4140h 和0000h。比如在加法程序中有指令nop 的位置都可以加一個斷點。然后再啟動CCS 實驗系統(tǒng)軟件CCS C5000。在定點運算系統(tǒng)中,雖然在硬件上實現(xiàn)簡單,但是表示的操作數(shù)的動態(tài)范圍要受到限制。練習并掌握 TMS320C54X 的匯編語言的匯編指令系統(tǒng)的使用方法,重點練習具有C54X 特點的一些在功能上有所擴展的特殊指令,并了解這些指令在進行算術運算或各種控制時所帶來的方便。但有兩點需要注意:第一,小數(shù)除法的結(jié)果一定是小數(shù)(小于1),所以被除數(shù)一定小于除數(shù)。一種是用乘法來代替,除以某個數(shù)相當于乘以其倒數(shù),所以先求出其倒數(shù),然后相乘。C54X 中提供了一個狀態(tài)位FRCT,將其設置為1 時,系統(tǒng)自動將乘積結(jié)果左移一位。其中SUBS 用于無符號數(shù)的減法運算,SUBB 用于帶進位的減法運算(如32 位擴展精度的減法),而SUBC 為移位減,DSP 中的除法就是用該指令來實現(xiàn)的。當它表示一個整數(shù)時,其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。DSP 中提供了大量的指令來實現(xiàn)這些功能。實驗步驟:以演示實驗一為例:1. 使用配送的并口電纜線連接好計算機并口與實驗箱并口,打開實驗箱電源;2.啟動CCS,點擊主菜單“ProjectOpen”在目錄“C5000QuickStartsinewave”,然后點擊主菜單“ProjectBuild”編譯,然后點擊主菜單“FileLoad Program”;3. ,在注釋行“set breakpoint in CCS!!”語句的NOP處單擊右鍵彈出菜單,選擇“Toggle breakpoint”加入紅色的斷點,如下圖所示;4. 點擊主菜單“ViewGraphTime/Frequency…”,屏幕會出現(xiàn)圖形窗口設置對話框5. 雙擊Start Address,將其改為y0;雙擊Acquisition Buffer Size,將其改為1;DSP Data Type設置成16bit signed integer,如下圖所示;6. 點擊主菜單“WindowsTile Horizontally”,排列好窗口,便于觀察7. 點擊主菜單“DebugAnimate”或按F12鍵動畫運行程序,即可觀察到實驗結(jié)果:心得體會:通過對演示實驗的練習,讓自己更進一步對CCS軟件的運行環(huán)境、編譯過程、裝載過程、屬性設置、動畫演示、實驗結(jié)果的觀察有一個醒目的了解和熟悉的操作方法。// Relinquish SCI from Reset{=0xE040。} // Transmit a character from the SCI39。 =1。)。scia_loopback_init()。if(LoopCount==256){LoopCount=0。// Move to the next character and repeat the testSendChar++。// Step Characters forever starting with 0x00 and going through // sending each, check the recieve buffer for the correct value for(。ErrorCount = 0。PIE is not used for this example// Initialize the PIE Vector Table To a Known State:// This function is found in .// This function populates the PIE vector table with pointers// to the shell ISR functions found in ()。// Step PIE vector table:// The PIE vector table is initialized with pointers to shell Interrupt// Service Routines(ISR).The shell routines are found in .// Insert user specific ISR code in the appropriate shell ISR routine in// the file.// Disable and clear all CPU interrupts:DINT。// Compare action that takes place// on a cmpare event// output pin 1 CMPR1active low// output pin 3 CMPR2active low// output pin 5 CMPR3active low = 0x0666。// Polarity of GP Timer 2 Compare = Active high = 2。// Timer2 pare = 0x0000。// Timer1 pare = 0x0000。j 10。}} } void delay_loop(){shorti,j。while(1){for(i=0。// Step all the Device Peripherals: // This function is found in // InitPeripherals()。// Initialize the PIE control registers to their default state.// The default state is all PIE interrupts disabled and flags // are cleared.// This function is found in the ()。// Enable PWM pins = 0x00FF。EDIS。void delay_loop()。三、實驗原理電機模塊的原理圖如下四、實驗步驟;(),編譯,下載程序到DSP; ,用觀察直流電機運行方向和速度的變化;五、實驗心得體會通過本次實驗,認識了PWM的使用方法,通過親身體驗,初步掌握了2812對PWM的控制使用方法,加深了對PWM的認識。=var3。=var2。// GPIO PORTs as output// GPIO DIR select GPIOs as output=var2。=var1。EALLOW。Uint16 var3。} } void Gpio_select(void){Uint16 var1。i 1000。i{Reg06=0x00。i{Reg06=0x00。// For this example, init the Xintf // Step specific code, enable interrupts:=0。IFR = 0x0000。// Skipped for this example // For this example use the following configuration:Gpio_select()。// Specific clock setting for this example:EALLOW。void Gpio_select(void)。輸入引腳對應讀操作;輸出引腳對應寫操作。對于I/O口有二類寄存器:,使用方法如下:首先確定引腳的功能,即IO控制器寄存器,為1表示引腳功能是原模塊的功能,否則為IO功能。}// Set GPIO input qualifier values //============================= // No more.//=======================