ch4 DSP系統設計入門_第1頁
ch4 DSP系統設計入門_第2頁
ch4 DSP系統設計入門_第3頁
ch4 DSP系統設計入門_第4頁
ch4 DSP系統設計入門_第5頁
已閱讀5頁,還剩92頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

4.1DSPC語言程序設計4.1.1C語言優勢4.1.2基于C2000的C語言簡介4.2CCS5入門4.2.1CCS5簡介4.2.2新建工程4.3DSP試驗系統4.3.1最小系統簡介4.3.2外設實驗板簡介第四章DSP系統設計入門4.1.1C語言優勢C語言是高級語言,相對于匯編易學易用;C語言的編程效率極高,易于調試;C++運行效率不如C,且面向對象編程占用更多資源;Java同C++,且Java運行依賴于Java虛擬機;匯編語言依賴于計算機硬件,程序的可讀性和可移植性較差。高級語言具有很好的可移植性,但是難以實現匯編語言的某些功能(如對內存地址的操作、位操作等)。C語言作為一種高級語言,既可以訪問物理地址又可以進行位操作,能直接對硬件進行操作,適合用于DSP所以,嵌入式編程多用C語言,或C語言與匯編混合編程。F20827亦是如此。4.1.2基于C2000的C語言簡介C語言中的代碼段編譯器中的段名存儲器中不同段的分配鏈接器的命令(CMD)文件MEMORY{PAGE0:

/*ProgramMemory*/FLASH:origin=0x3F0000,length=0x8000PAGE1:

/*DataMemory*/M0SARAM:origin=0x000000,length=0x400M1SARAM:origin=0x000400,length=0x400}SECTIONS{.text:>FLASHPAGE=0.ebss:>M0SARAMPAGE=1.cinit:>FLASHPAGE=0.stack:>M1SARAMPAGE=1}#defineADCTRL1(volatileunsignedint*)0x00007100

...voidmain(void){*ADCTRL1=0x1234;//writeentireregister*ADCTRL1|=0x4000;//enableADCmodule}傳統編程風格-簡單、快速且易于鍵入-變量名稱與寄存器名稱精確匹配(易于記憶)-需要生成專門的掩碼以操控個別位-不能很容易地在觀察窗口中顯示位字段-在許多場合中將生成效率低下的代碼優點缺點voidmain(void){AdcRegs.ADCTRL1.all=0x1234;

//writeentireregisterAdcRegs.ADCTRL1.bit.ADCENABLE=1;

//enableADCmodule}新編程風格-易于操控個別位。-易于在調試窗口觀察寄存器位的值-可生成最高效的代碼(利用C28x)-結構名稱會難以記憶(編輯器自動完成功能)-需要鍵入的內容更多(編輯器自動完成功能)優點缺點結構體定義規則F2802x頭文件定義了:所有的外設結構體所有的寄存器名稱所有的位字段名稱所有的寄存器地址PeripheralName.RegisterName.all

//訪問整個16位或32位寄存器PeripheralName.RegisterName.half.LSW

//訪問32位寄存器的16個低位PeripheralName.RegisterName.half.MSW

//訪問32位寄存器的16個高位PeripheralName.RegisterName.bit.FieldName

//訪問寄存器的指定位字段注:[1]“PeripheralName”由TI指定并載于F2802x標準頭文件。它們由大寫字母和小寫字母組合成(如:CpuTimer0Regs)。[2]“RegisterName”與數據表中使用的名稱相同,它們始終用大寫字母表示(如:TCR、TIM、TPR,...)[3]“FieldName”與數據表中使用的名稱相同,它們始終用大寫字母表示(如:POL、TOG、TSS,...)F2802x頭文件包(,文獻編號:SPRC832)包含了使用結構體法所需的一切資源定義了所有的外設寄存器位和寄存器地址頭文件包包括:\DSP2802x_headers\include.hfiles\DSP2802x_headers\cmd

linker.cmdfiles\DSP2802x_headers\gel

.gelfilesforCCS\DSP2802x_examples

2802xexamples\doc

documentation外設結構體頭(.h)文件#include“DSP2802x_Device.h”VoidInitAdc(void){/*ResettheADCmodule*/AdcRegs.ADCTRL1.bit.RESET=1;/*configuretheADCregister*/AdcRegs.ADCTRL1.all=0x00E4;};C語言源文件(例如:Adc.c)//ADCIndividualRegisterBitDefinitions:structADCCTL1_BITS{//bitsdescriptionUint16TEMPCONV:1;//0TemperaturesensorconnectionUint16VREFLOCONV:1;//1VSSAconnectionUint16INTPULSEPOS:1;//2INTpulsegenerationcontrolUint16ADCREFSEL:1;//3Internal/externalreferenceselectUint16rsvd1:1;//4reservedUint16ADCREFPWD:1;//5ReferencebufferspowerdownUint16ADCBGPWD:1;//6ADCbandgappowerdownUint16ADCPWDN:1;//7ADCpowerdownUint16ADCBSYCHN:5;//12:8ADCbusyonachannelUint16ADCBSY:1;//13ADCbusysignalUint16ADCENABLE:1;//14ADCenableUint16RESET:1;//15ADCmasterreset};//Allowaccesstothebitfieldsorentireregister:unionADCCTL1_REG{Uint16all;structADCCTL1_BITSbit;};//ADCExternalReferences&FunctionDeclarations:externvolatilestructADC_REGSAdcRegs;頭文件包含有一個用于器件中每個外設的.hDSP2802x_Adc.h

DSP2802x_BootVars.h

DSP2802x_Comp.h

DSP2802x_CpuTimers.h

DSP2802x_DevEmu.h

DSP2802x_Device.hDSP2802x_ECap.h

DSP2802x_EPwm.h

DSP2802x_Gpio.h

DSP2802x_I2c.hDSP2802x_NmiIntrupt.h

DSP2802x_PieCtrl.hDSP2802x_PieVect.h

DSP2802x_Sci.hDSP2802x_Spi.hDSP2802x_SysCtrl.h

DSP2802x_XIntrupt.hDSP2802x_Device.h件主要的包括頭文件的將包括所有其他的.h文件在每個源文件中包括此文件::#include“DSP2802x_Device.h”4.1.2基于C2000的C語言簡介全局變量定義文件DSP2802x_GlobalVariableDefs.c定義每個外設寄存器結構體變量每個結構體使用一個DATA_SECTION宏指令來強制結構體的存儲位置,以實現至正確的地址鏈接4.1.2基于C2000的C語言簡介用于結構體的鏈接器命令文件

DSP2802x_nonBIOS.cmd針對每個外設應用的項目范例可幫助使用者快速啟動開發工作?TI嵌入式處理器的集成開發環境(IDE)–包括調試器,編譯器,編輯器,操作系統,等等–IDE基于Eclipse開源軟件框架(v4+)–融合了TI設備的支持與功能?CCSv5是基于原版的Eclipse–CCS使用未修改的Eclipse版本?TI將直接向開源社區提交改進–用戶可以隨意的將各種其他廠商的Eclipse插件或TI的工具拖放到現有的Eclipse環境–用戶可以享受到Eclipse中所有最新的改進所帶來的便利?集成額外的工具–操作系統的應用程序開發工具(Linux操作系統,Android...)–代碼分析,源代碼控制...4.2.1CCS5簡介CodeComposerStudioCodeComposerStudio集成型開發環境(IDE)集成了能編輯,代碼生成和調試功能使用按鈕的問單擊訪問功能強大的圖繪圖/分析具工具使用腳本務的自動化任務內置的BIOS功能訪問基于Eclipse開源軟件框架項目文件包含:文件清單:源文件(C語言、匯編語言)庫文件DSP/BIOS配置文件鏈接器命令文件項目設置:生成選項(編譯器

匯編器

鏈接器和DSP/BIOS)新建工程點擊File->New->CCSProject或者Project->NewProject如下圖所示:4.2.2新建工程添加項目名稱、芯片、仿真器等。選擇對應芯片型號;4.2.2新建工程如圖所示:新建文件:可以新建源文件,頭文件,類等等添加文件添加現有源文件到工程中。右擊工程名->AddFiles…4.2.2新建工程添加頭文件目錄:一右擊工程名->Properties,選擇Build->IncludeOptions,有個#include搜索路徑,添加上路徑即可。最有效的方法:

拷貝一個現有的工程

然后加以裁剪和添加編譯工程

選擇Project->BuildprojectDebug跟編譯工程類似的方法可以進行工程的Debug,最簡單的方式就是點擊如下圖所示的小蟲子。在Debug之前,一定要選擇和設置目標配置文件(TargetConfigurations)。新建目標配置文件(TargetConfigurationFile),如下圖所示。如下圖所示,選擇仿真器,選擇平臺,完成后可以點擊TestConnection,進行仿真器連接測試,如果成功,說明硬件沒有問題。4.3.1DSP實驗設備–最小系統簡介TI公司提供的最小系統最小系統供電方式最小系統啟動模式選擇最小系統引腳分配最小系統原理圖最小系統PCB正面映射外設實驗板示意圖外設實驗板基本相關模塊功能紅外對管模塊溫度傳感器模塊外設實驗板基本相關模塊功能數碼管顯示模塊外設實驗板擴展相關模塊功能L298電機驅動模塊外設實驗板擴展相關模塊功能TFT彩屏模塊PWM_DA模塊作業:以一個例子來說明,C2000的C語言中有哪些代碼段?一般的C2000工程中會有兩個CMD文件,它們各起什么作用?安裝CCS5,建立一個自己的工程文件,并完成實驗一

知識點:DSP的總體架構--改進的哈佛結構DSP的存儲空間分配和應用—F28027.cmdDSP的時鐘配置--DSP2802x_SysCtrl.cDSP的WatchDog--DSP2802x_SysCtrl.cDSP的CPUTimer--DSP2802x_CpuTimers.cDSP的GPIO與AIO--DSP2802x_Gpio.cDSP的外部中斷DSP的中斷系統DSP的應用程序開發

第一部分總結1.2.2DSP芯片的結構特征為了適應快速數字信號處理運算的要求,DSP芯片普遍采用了特殊的硬件和軟件結構,以提高其數字信號處理的運算速度DSP芯片的主要結構特征有:采用了哈佛結構、流水線技術、硬件乘法器和特殊DSP指令等471.哈佛結構哈佛結構是一種并行體系結構,主要特點是將程序和數據存儲在不同的存儲器空間,對程序和數據獨立編址,獨立訪問。而且在DSP中設置了數據和程序兩套總線,使得取指令和執行能完全重疊運行,提高數據吞吐量48哈佛結構—改進為了進一步提高速度和靈活性,TMS320系列產品中,在哈佛結構上作了改進:一是允許程序存儲在高速緩存中,提高指令讀取速度;二是允許數據存放在程序存儲器中,并被算術運算指令直接使用,增強芯片的靈活性。另外DSP中的雙口RAM(DARAM)及獨立讀寫總線使數據存取速度提高492.流水線技術DSP芯片廣泛采用流水線技術,增強了處理器的處理能力。TMS320系列流水線深度為2~6級不等,也就是說,處理器在一個時鐘周期可并行處理2~6條指令,每條指令處于流水線的不同階段。圖1.2為三級流水線操作的例子。在三級流水線操作中,取指令、指令譯碼和執行可以獨立地處理,這樣DSP可以同時處理多條指令,只是每條指令處于不同處理階段503.硬件乘法器在數字信號處理的許多算法中,需要做大量的乘法和加法。DSP芯片一般都有一個硬件乘法器,在TMS320系列中,一次乘累加最少可在一個時鐘周期完成4.特殊DSP指令

DSP芯片的另一個特點就是采用了特殊的尋址方式和指令。比如,TMS320系列的位反轉尋址方式,LTD、MPY、RPTK等特殊指令。采用這些適合于數字信號處理的尋址方式和指令,進一步減少了數字信號處理的時間512.1.1DSP存儲空間分配2.1.1DSP存儲空間分配設計一個計時器,顯示精確到0.01秒分析:1,用到的外設:CPUTimer0,外部中斷和GPIO,2,CPUTimer0完成計時功能,外部中斷完成控制功能,GPIO完成顯示功能3,中斷考慮:定時器0中斷和外部中斷應用程序舉例:硬件資源:1)CPUTimer02)外部中斷GPIO343)顯示:GPIO12(Data),GPIO33(Clk),GPIO32(CS)應用程序舉例:系統初始化:1)WD初始化,關掉2)時鐘源初始化,四選一3)PLL初始化,12,2,60M4)外設時鐘初始化5)FLASH初始化,2,2,2應用程序舉例:Watchdog計數器操作方式0X55&0XAA序列的順序寫入WDDIS位的置一(WDOVERRIDE=1)Flash&OTP相關寄存器FOTPWAITOTP等待寄存器配置輸入時鐘源&XCLKOUT寄存器(XCLK)位域值描述(1)15-7保留保留。6XCLKINSEL01XCLKIN源選擇位:這個位選擇XCLKIN輸入源。GPIO38是XCLKIN輸入源(這也是JTAG端口的TCK源)。GPIO19是XCLKIN輸入源。5-2保留保留0-0XCLKOUTDIV00011011XCLKOUT分頻比:這兩個位選擇XCLKOUT頻率相對于SYSCLKOUT的比率。比率是:XCLKOUT=SYSCLKOUT/4XCLKOUT=SYSCLKOUT/2XCLKOUT=SYSCLKOUTXCLKOUT=OffXCLK寄存器的XCLKINSEL位由復位引腳復位XCLK寄存器用來選擇XCLKIN輸入的GPIO引腳和配置XCLKOUT引腳的頻率。配置器件時鐘域(CLKCTL)

CLKCTL寄存器用來選擇時鐘源,也用來配置時鐘故障期間器件的行為位域值描述15NMIRESETSEL01NMI復位選擇位:該位在檢測到一個缺少時鐘條件時直接產生

信號和使用

復位兩者之間進行選擇:沒有任何延遲地直接驅動

(復位時的默認狀態)。NMI看門狗復位(

)啟動

。注:不管作何選擇,都會產生

信號。位域值描述14XTALOSCOFF01晶體振蕩器關閉位:如果晶體振蕩器不使用,可以使用該位將其關閉。晶體振蕩器開啟(復位時的默認狀態)。晶體振蕩器關閉。13XCLKINOFF01XCLKIN關閉位:該位關閉外部XCLKIN振蕩器輸入XCLKIN振蕩器輸入啟用(復位時的默認狀態)。XCLKIN振蕩器輸入關閉。注:你需要通過XCLK寄存器的XCLKINSEL位選擇XCLKIN的GPIO引腳。更詳細的信息請見XCLK寄存器的描述。如果使用XCLKIN,XTALOSCOFF就必須置位。12WDHALTI01看門狗停機模式忽略位:該位選擇是否通過停機模式自動開啟/關閉看門狗。這個特性可以在停機模式有效時用來允許所選的WDCLK源繼續計時看門狗。這可以允許看門狗周期性地喚醒器件??撮T狗自動通過停機模式開啟/關閉(復位時的默認狀態)??撮T狗忽略停機模式。11INTOSC2HALTI01內部振蕩器2停機模式忽略位:該位選擇是否通過停機模式自動開啟/關閉內部振蕩器2。這個特性可以在停機模式有效時用來允許內部振蕩器繼續計時。這將使能器件更快地從停機模式中喚醒。內部振蕩器2自動通過停機模式開啟/關閉(復位時的默認狀態)。內部振蕩器2忽略停機模式。10INTOSC2OFF01內部振蕩器2關閉位:該位關閉振蕩器2內部振蕩器2開啟(復位時的默認狀態)。內部振蕩器2關閉。如果內部振蕩器2不被使用,用戶可以使用該位將其關閉。這個選擇不受缺少時鐘檢測電路影響。9INTOSC1HALTI01內部振蕩器1停機模式忽略位:該位選擇是否通過停機模式自動開啟/關閉內部振蕩器1。內部振蕩器1自動通過停機模式開啟/關閉(復位時的默認狀態)。內部振蕩器1忽略停機模式。這個特性可以在停機模式有效時用來允許內部振蕩器繼續計時。這將使能器件更快地從停機模式中喚醒。位域值描述8INTOSC1OFF01內部振蕩器1關閉位:該位關閉振蕩器1內部振蕩器1開啟(復位時的默認狀態)。內部振蕩器1關閉。如果內部振蕩器1不被使用,用戶可以使用該位將其關閉。這個選擇不受缺少時鐘檢測電路影響。7-5TMR2CLKPRESCALE000001010011100101110111CPUTimer2時鐘預分頻值:這些位為所選的CPUTimer2時鐘源選擇預分頻值。這個選擇不受缺少時鐘檢測電路影響。/1(復位時的默認狀態)/2/4/8/16保留保留保留4-3TMR2CLKSRCSEL00011011CPUTimer2時鐘源選擇位:該位為CPUTimer2選擇時鐘源選擇SYSCLKOUT(復位時的默認狀態,繞過預分頻器)。選擇外部振蕩器(XOR輸出)。選擇內部振蕩器1。選擇內部振蕩器2。這個選擇不受缺少時鐘檢測電路影響。2WDCLKSRCSEL01看門狗時鐘源選擇位:該位選擇看門狗的時鐘源。在

為低時和

變為高之后,默認選擇內部振蕩器1。用戶需要在初始化過程中選擇外部振蕩器或內部振蕩器2。如果缺少時鐘檢測電路檢測到缺少時鐘,那么該位被強制為0,并選擇內部振蕩器1。用戶更改該位不影響PLLCR值。選擇內部振蕩器1(復位時的默認狀態)。選擇外部振蕩器或內部振蕩器2。位域值描述1OSCCLKSRC2SEL01振蕩器2時鐘源選擇位:這個位用來在內部振蕩器2或外部振蕩器兩者之間作選擇。這個選擇不受缺少時鐘檢測電路影響。選擇外部振蕩器(復位時的默認狀態)。選擇內部振蕩器2。0OSCCLKSRCSEL01振蕩器時鐘源選擇位。這個位選擇振蕩器的時鐘源。在

為低時和

變為高之后,默認選擇內部振蕩器1。用戶需要在初始化過程中選擇外部振蕩器或內部振蕩器2。只要用戶使用這些位來改變時鐘源,PLLCR寄存器將被自動強制為零。這阻止了潛在的PLL過沖。然后,用戶必須寫PLLCR寄存器來配置合適的分頻比。如果必要,用戶也可以使用PLLLOCKPRD寄存器來配置PLL鎖定周期以縮短鎖定時間。如果缺少時鐘檢測電路檢測到缺少時鐘,那么這個位被自動強制為0,并選擇內部振蕩器1作為時鐘。PLLCR寄存器也將自動強制為0來防止所有潛在的過沖。選擇內部振蕩器1(復位時的默認狀態)。選擇外部振蕩器或內部振蕩器2。注:如果用戶希望使用振蕩器2或外部振蕩器來計時CPU,必須應該先配置這個位,然后再寫OSCCLKSRCSEL位。PLL狀態寄存器(PLLSTS)PLL控制寄存器(PLLCR)基于PLL的配置模式PLL模式注釋PLLSTS[DIVSEL](1)CLKIN和SYSCLKOUT(2)PLL關閉由用戶通過置位PLLSTS寄存器的PLLOFF位來激活。在這種模式下PLL模塊禁用。這對于降低系統噪聲和低功率操作很有用。在進入這個模式之前,PLLCR寄存器必須先被設置成0x0000(PLL旁路)。CPU時鐘(CLKIN)直接從X1/X2,X1或XCLKIN上的輸入時鐘獲得。0,123OSCCLK/4OSCCLK/2OSCCLK/1PLL旁路PLL旁路是上電時或一次外部復位(

)后默認的PLL配置。當PLLCR寄存器被設置成0x0000,或者,在PLLCR寄存器被修改之后PLL鎖定到一個新的頻率時,這個模式被選擇。在這個模式下,PLL本身被旁路,但PLL未關閉。0,123OSCCLK/4OSCCLK/2OSCCLK/1PLL啟用該模式通過將一個非零值n寫入PLLCR寄存器來實現。當寫PLLCR時,器件將切換到PLL旁路模式,直至PLL鎖定。0,12OSCCLK*n/4OSCCLK*n/2PLLSTS[DIVSEL]在寫PLLCR之前必須為零,并且,應該只有在PLLSTS[PLLLOCKS]=1之后才能被修改選擇的輸入時鐘和PLLCR[DIV]位應該使PLL(VCOCLK)的輸出頻率是最小值50MHz。PLL控制寄存器(PLLCR)Flash&OTP相關寄存器FOPT確定是否開啟flash流水線模式寄存器FBANKWAITflash等待寄存器FBANKWAITflash等待寄存器GPIO初始化:1)上拉設置2)MUX設置3)方向設置4)初始值設置5)特殊引腳的設置應用程序舉例:多路復用MUXGPIOMUXGPIOMUXGPIOMUX數字I/O控制GPIO的配置步驟:Step1.Planthedevicepin-out

--安排器件引腳輸出Step2.Enableordisableinternalpull-upresistor--使能或禁能內部上拉電阻Step3.Selectinputqualification--選擇輸入時鐘同步Step4.Selectthepinfunction--選擇引腳功能Step5.FordigitalgeneralpurposeI/O,selectthedirectionofpin--為數字通用I/O選擇引腳的方向輸入或者輸出Step6.Selectlowpowermodewake-upsources--選擇低功率模式喚醒源(是否作為喚醒源)Step7.Selectexternalinterruptsources--選擇外部中斷源GPIO相關寄存器(GPIOXINTnSEL)CPUTimer0初始化:1)關時鐘2)周期設置3)預分頻設置4)初始值設置5)中斷使能6)使能時鐘或?應用程序舉例:定時器原理32位CPU計數器相關寄存器32位CPU計數器寄存器(TIMERxTIM

)TIMERxTIMH與之類似32位CPU周期寄存器(TIMERxPRD

)TIMERxPRDH與之類似TIMERxTCR寄存器描述_續TIMERxTCR寄存器描述_續TIMERxTPR寄存器描述(TIMERxTPRH寄存器與之類似)Xint1初始化:1)Xint1引腳選擇2)外部中斷極性選擇3)中斷使能應用程序舉例:3.6外部中斷控制寄存器:支持3個外部中斷,XINT1-XINT3。每個外部中斷可以選擇負邊沿或正邊沿觸發,也可以被使能或禁能。屏蔽的中斷還包含一個16位自由運行的遞增計數器,在檢測到一個有效的中斷沿時復位為0。這個計數器可以用來精確地計時中斷。表3.14中斷控制和計數器寄存器(不受EALLOW保護)圖3.13外部中斷n控制寄存器(XINTnCR)表3.15外部中斷n控制寄存器(XINTnCR)的域描述對于XINT1/XINT2/XINT3來說,還有一個16位的計數器,只要檢測到一個中斷邊沿,計數器就復位為0

溫馨提示

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

評論

0/150

提交評論