第2講 第2章 F2812結(jié)構(gòu)與最小系統(tǒng) 2013-3-4_第1頁
第2講 第2章 F2812結(jié)構(gòu)與最小系統(tǒng) 2013-3-4_第2頁
第2講 第2章 F2812結(jié)構(gòu)與最小系統(tǒng) 2013-3-4_第3頁
第2講 第2章 F2812結(jié)構(gòu)與最小系統(tǒng) 2013-3-4_第4頁
第2講 第2章 F2812結(jié)構(gòu)與最小系統(tǒng) 2013-3-4_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

DSP控制器原理與應(yīng)用第2章F2812總體結(jié)構(gòu)、最小系統(tǒng)程序開發(fā)流程1DSPF2812的總體結(jié)構(gòu)框圖14級CPU中斷輸入2TMS320F2812(DSP)總體結(jié)構(gòu)(1)CPU:32位字長(2)存儲器映像:片內(nèi)18KSARAM,32KFlash,2KOTP,外設(shè)寄存器幀(外設(shè)幀,相當(dāng)于存儲器映像外設(shè)寄存器)(3)引導(dǎo)ROM:每片2812出廠時均在引導(dǎo)ROM固化有一段啟動引導(dǎo)程序和常用數(shù)學(xué)函數(shù)如sin的查找表。(4)片外存儲器接口(XINTF):可編程外存儲器接口的時序參數(shù),實現(xiàn)與各種異步存儲器芯片的無縫連接。思考題2-1:什么叫無縫接口與有縫接口?(5)時鐘與系統(tǒng)控制單元:時鐘模塊產(chǎn)生CPU所需的工作頻率。系統(tǒng)控制單元包括看門狗和低功耗模式控制。3DSPF2812總體結(jié)構(gòu)(6)CPU定時器:長時定時器,可定時數(shù)小時、數(shù)天。思考題2-2:當(dāng)定時器輸入時鐘頻率為上兆赫茲時,用什么辦法能定時數(shù)小時或更長時間?(7)外設(shè)中斷擴展模塊:DSP內(nèi)核中斷輸入(外部不可見)INT1~INT12每個擴展成8個,共計128=96個中斷輸入。(8)外部中斷:DSP引腳中斷請求輸入XINT1、XINT2、XNMI_XINT13(9)事件管理器模塊:比較單元、正交編碼單元、捕獲單元、事件定時器、事件定時器PWM引腳,PWM引腳,事件中斷等。思考題2-3:事件定時器與CPU定時器有什么區(qū)別?各用在什么場合?4DSPF2812總體結(jié)構(gòu)(10)模數(shù)轉(zhuǎn)換器(A/D):12位單極性A/D轉(zhuǎn)換器,集成兩個8通道模擬多路開關(guān)和采樣保持器。思考題2-4:設(shè)A/D轉(zhuǎn)換器模擬電源輸入設(shè)定為3.3V,則數(shù)據(jù)D與輸入電壓V之間的轉(zhuǎn)換表達式是什么?(11)串口外設(shè):包括2個異步串口(SCI-A,SCI-B)和1個同步串口(SPI),一個CAN總線接口,一個多通道緩沖串行接口(McBSP)。思考題2-5:異步/同步串口在異/同上差別是什么?(12)通用輸入/輸出口(GPIO):56根I/O引腳,可編程配置成特定外設(shè)專用引腳。(13)仿真邏輯單元:JTAG(JiontTestActionGroup,聯(lián)合測試行動組,一個國際標(biāo)準(zhǔn)化組織)接口,要接專用DSP仿真器才能調(diào)試。5176引腳LQFP封裝TMS320F2812芯片6TMS320F2812外地址總線引腳地址最高位XA[18]AB=19根地址線尋址空間多少?7TMS320F2812外數(shù)據(jù)總線引腳數(shù)據(jù)最高位XD[15]8F2812外存儲器接口(XINTF)讀寫引腳寫信號XWE讀信號XRD9F2812工作模式(微處理器/微計算機模式)

配置引腳工作模式配置引腳XMP/MCXMP/MC=”1“,配置成微處理器模式,外存儲器尋址空間Zone7片選信號XZCS7有效,將Zone7作為程序仿真RAM,初始化啟動!XMP/MC=”0“,配置成微計算機模式,XZCS7無效,DSP從片內(nèi)FLASH上電復(fù)位初始化啟動!10F2812外存儲器接口(XINTF)地址信號11F2812外存儲器接口(XINTF)數(shù)據(jù)信號12F2812外存儲器接口(XINTF)讀寫信號13F2812外存儲器接口(XINTF)片選信號14F2812的工作模式設(shè)置信號15外存儲器接口(ExternalInterface,XINTF)Theexternalinterfaceisanon-multiplexed(非多路的)asynchronous(異步)bus,similartotheC240xexternalinterface.Theexternalinterfaceonthe2812ismappedintofivefixedzones(5個存儲區(qū)塊:Zone0,Zone1,Zone2,Zone6,Zone7).16F2812的5個存儲器區(qū)尋址空間Zone0:8K×16Zone1:8K×16Zone2:512K×16Zone6:512K×16Zone7:16K×16(mappedhereifMP/MC=1)思考題2-6:外尋址空間1M用多少根地址線?32位地址值表示1M地址范圍的數(shù)值表達式是什么?5個存儲器區(qū)總?cè)萘砍^地址總線可尋址的范圍時,如何實現(xiàn)一個地址總線尋址多個存儲器區(qū)?請上網(wǎng)查閱資料解答!17MemoryMap182812XINTFsignals(多存儲區(qū)Zone)

1920擴展存儲器的最小系統(tǒng)需要的控制總線CBXRD(讀控制信號,輸出/高阻)ReadEnable.Active-lowreadstrobe.Thereadstrobewaveformisspecified,perzonebasis,bytheLead,Active,andTrailperiodsintheXTIMINGxregisters.NOTE:TheXRDandXWEsignalsaremutuallyexclusive.思考題2-7:

輸出變高阻在什么情況下發(fā)生?高阻有何用?21擴展存儲器的最小系統(tǒng)需要的控制總線CBXWE引腳(寫控制信號,輸出/高阻)WriteEnable.Active-lowwritestrobe.Thewritestrobewaveformisspecified,perzonebasis,bytheLead,Active,andTrailperiodsintheXTIMINGxregisters.22擴展存儲器的最小系統(tǒng)需要的控制總線CBXR/W(讀高/寫低狀態(tài)信號,輸出/高阻)ReadNotWriteStrobe.Normallyheldhigh.Whenlow,XR/Windicateswritecycleisactive;whenhigh,XR/Windicatesreadcycleisactive.23擴展存儲器的最小系統(tǒng)需要的控制總線CBXREADY引腳(外設(shè)準(zhǔn)備好,輸入)ReadySignal.Indicatesperipheralisreadytocompletetheaccesswhenassertedto1.XREADYcanbeconfiguredtobeasynchronousoranasynchronousinput.Seethetimingdiagramsformoredetails.24擴展存儲器的最小系統(tǒng)需要的控制總線CBXHOLD(外設(shè)占用請求,輸入)ExternalHoldRequest.XHOLD,whenactive(low),requeststheXINTFtoreleasetheexternalbusandplaceallbusesandstrobesintoahigh-impedancestate.TheXINTFwillreleasethebuswhenanycurrentaccessiscompleteandtherearenopendingaccessesontheXINTF.思考題2-8:無外設(shè)占用總線請求時,該引腳設(shè)應(yīng)何處理?25擴展存儲器的最小系統(tǒng)需要的控制總線CBXHOLDA(外設(shè)占用應(yīng)答,輸出)ExternalHoldAcknowledge.XHOLDAisdrivenactive(low)whentheXINTFhasgrantedaXHOLDrequest.AllXINTFbusesandstrobesignalswillbeinahigh-impedancestate.XHOLDAisreleasedwhentheXHOLDsignalisreleased.ExternaldevicesshouldonlydrivetheexternalbuswhenXHOLDAisactive(low).思考題2-9:無外設(shè)占用總線請求時,該引腳設(shè)應(yīng)何處理?26擴展存儲器的最小系統(tǒng)需要的控制總線CBXZCS0AND1(外存儲器擴展接口塊0/塊1片選信號)XINTFZone0andZone1ChipSelect.XZCS0AND1isactive(low)whenanaccesstotheXINTFZone0orZone1isperformed.27擴展存儲器的最小系統(tǒng)需要的控制總線CBXZCS6AND7(外存儲器擴展接口塊6/塊7片選信號)XINTFZone6andZone7ChipSelect.XZCS6AND7isactive(low)whenanaccesstotheXINTFZone6orZone7isperformed.28擴展存儲器的最小系統(tǒng)需要的控制總線CBXZCS2(外存儲器擴展接口塊片選信號2)XINTFZone2ChipSelect.XZCS2is(low)whenanaccesstotheXINTFZone2isperformed.29擴展存儲器的最小系統(tǒng)需要的控制總線CBXMP/MC引腳(工作模式選擇,輸入)Microprocessor(XMP)/Microcomputer(MC)ModeSelect.Switchesbetweenmicroprocessorandmicrocomputermode.Whenhigh,Zone7isenabledontheexternalinterface.Whenlow,Zone7isdisabledfromtheexternalinterface,andon-chipbootROMmaybeaccessedinstead.ThissignalislatchedintotheXINTCNF2registeronaresetandtheusercanmodifythisbitinsoftware.ThestateoftheXMP/MCpinisignoredafterreset.思考題2-10:當(dāng)程序存儲器映射到外部程序空間時,該引腳設(shè)應(yīng)何處理?30擴展存儲器的最小系統(tǒng)需要的控制總線CBXRS(CPU復(fù)位引腳,輸入)DeviceReset(in)andWatchdogReset(out).Devicereset.XRScausesthedevicetoterminateexecution.ThePCwillpointtotheaddresscontainedatthelocation0x3FFFC0.WhenXRSisbroughttoahighlevel,executionbeginsatthelocationpointedtobythePC.ThispinisdrivenlowbytheDSPwhenawatchdogresetoccurs.Duringwatchdogreset,theXRSpinwillbedrivenlowforthewatchdogresetdurationof512XCLKINcycles.3132擴展存儲器的最小系統(tǒng)需要的控制總線CB仿真器JTAG接口引腳(共7根)TRST,TCK,TMS,TDI,TDO,EMU0,EMU1機械接口:IDC1(7×2雙排插座)+5V用于燒寫片上FLASH+3.3V用于仿真!33DSPF2812的最小應(yīng)用系統(tǒng)34DSPF2812的軟件開發(fā)工具35DSPF2812的軟件開發(fā)工具(1)編譯器(2)匯編器(3)鏈接器(4)歸檔器(5)運行時支持庫(6)建庫器(7)HEX轉(zhuǎn)換器(8)絕對列表器和交叉引用列表器(9)C++名稱復(fù)原器(10)調(diào)試器(11)GEL語言(12)DSP/BIOS36DSPF2812的匯編語言開發(fā)基礎(chǔ)COFF文件與匯編器指令初始化段.text.data.sect“sectionname”未初始化段.bsssymbol,sizeinwordssymbol .usect“sectionname”,sizeinwords37DSPF2812的匯編語言開發(fā)基礎(chǔ)COFF文件與匯編器指令定義段的指令:如.text,.data,.bss,.sect,.usect等;建立數(shù)據(jù)表以初始化變量或內(nèi)存的指令:如.byte,.word,.int,.float,.space等;設(shè)置段程序計數(shù)器(SPC)來配置段邊界的指令:如.align;輸出列表文件的格式配置指令:如.list,.title,.width,.length等;引用其它文件或其它文件中符號的指令:如.copy,.def,.global,.include,.ref等;控制條件匯編的指令:如.if,.elseif,.else,.endif,.break,.loop,.endloop等;定義符號的指令:.label,.set,.struct等;指定匯編模式的指令:.c28_amode,.lp_amode等;其它指令:.end,.emsg,.clink等。38DSPF2812的匯編語言開發(fā)基礎(chǔ)鏈接器與鏈接命令文件MEMORY{[PAGE0:]name[(attr)]:origin=constant,length=constant[,fill=constant];[PAGE1

:]name[(attr)]:origin=constant,length=constant[,fill=constant];}SECTIONS{name:[property[,property][,property]...]name:[property[,property][,property]...]name:[property[,property][,property]...]}load=namedmemory/address或load>namedmemory/address或>namedmemory/address/*

Load和Run的地址相同,則Run分配被忽略*/run=namedmemory/address或run>namedmemory/address

39DSPF2812的匯編語言開發(fā)基礎(chǔ)/**************************************************//*demo.cmd*//***************************************************/file1.objfile2.obj /*輸入目標(biāo)文件*/–odemo.out /*鏈接器選項,用于生成輸出文件demo.out*/MEMORY{PAGE0:ROM:origin=0C00h,length=1000h/*定義一個名為ROM的程序內(nèi)存*/PAGE1:RAM:origin=60h,length=20h/*定義一個名為RAM的數(shù)據(jù)內(nèi)存*/}SECTIONS{.text: load=ROM,run=800h/*.text段裝載到ROM中,而從地址800h處開始運行*/.vectors:>0FF80h/*.vectors段從地址0FF80h開始裝載*/.const:load>ROM/*.const段裝載到ROM中*/.bss: load>RAM/*.bss段分配到RAM中*/}40DSPF2812的C語言編程C語言數(shù)據(jù)類型標(biāo)識符和常數(shù)(IdentifiersandConstants)數(shù)據(jù)類型(DataType)類型轉(zhuǎn)換(Conversion)表達式(Expression)asm表達式41DSPF2812的C語言編程C語言頭文件assert.hcassert.h定義了一些assert宏,這些宏用于在程序運行時插入一些診斷出錯信息;ctype.hcctype.h申明了一些字符測試(如測試是字母還是打印字符)及字符轉(zhuǎn)換函數(shù);errno.hcerrno.h申明了一些errno變量,這些errno變量定義了數(shù)學(xué)函數(shù)的調(diào)用錯誤(如無效的參數(shù)或無效的結(jié)果),在調(diào)用math.h中的數(shù)學(xué)函數(shù)時,用戶代碼可以讀取errno的值來檢查錯誤條件;float.h/limits.hcfloat.h/climits.h定義了一些宏,這些宏代表TMS320C28x的數(shù)值范圍和極限等(如整形和浮點數(shù)的范圍、上下限等);cmath.hcmath.h包含了浮點數(shù)學(xué)函數(shù)的申明(如三角函數(shù)、指數(shù)函數(shù)等);setjmp.hcsetjmp.h定義了一些類型、宏和函數(shù),經(jīng)常用于深度嵌套函數(shù)的立即返回;stdarg.hcstdarg.h定義了一些宏和類型,可幫助用戶使用那些可變參數(shù)的函數(shù);stddef.hcstddef.h定義了一些類型和宏,這些類型和宏被某些運行時支持函數(shù)使用;stdio.hcstdio.h包含了一些類型、宏和結(jié)構(gòu)體定義以及標(biāo)準(zhǔn)輸入/輸出函數(shù)的申明;stdlib.hcstdlib.h包含一些公共庫函數(shù)的申明,這些庫函數(shù)包括內(nèi)存管理、搜索和排序、字符串轉(zhuǎn)換等;string.h:cstring.h包含一些字符串操作函數(shù)的申明,如字符串的移動、組裝、比較等;time.hctime.h包含了一些日期和時間的操作函數(shù)申明;—new.h申明了一些動態(tài)內(nèi)存管理的C++函數(shù);—Typeinfo.h定義了一個type_info的結(jié)構(gòu),用于運行時描述C++的類型信息;42DSPF2812的C語言編程C語言預(yù)編譯器指令

用于宏定義,如:#define,#undef等;用于其它文件的引用,如:#include等;用于條件編譯,如:#ifdef,#ifndef,#if,#else,#endif等;其它語句,如:#line,#error,#pragma等;預(yù)定義宏名宏功能描述__LINE__該宏展開后用于顯示當(dāng)前行號(ANSI標(biāo)準(zhǔn))__FILE__該宏展開后用于顯示當(dāng)前源文件名(ANSI標(biāo)準(zhǔn))__DATE__該宏展開后用于顯示當(dāng)前編譯日期(格式mmddyyyy)(ANSI標(biāo)準(zhǔn))__TIME__該宏展開后用于顯示當(dāng)前編譯時間(格式hh:mm:ss)(ANSI標(biāo)準(zhǔn))_INLINE在編譯器使用—x或—x2選項下展開為1,否則未定義?__TMS320C28XX__該宏展開為1(用于標(biāo)識C28x處理器)43DSPF2812的C語言編程C語言預(yù)編譯器指令

#pragma#pragma

CODE_SECTION(func,”sectionname”);#pragma

DATA_SECTION(symbol,”sectionname”)#pragma

INTERRUPT(func)#pragmaFAST_FUNC_CALL(func)#pragma

FUNC_EXT_CALLED(func)44DSPF2812的C語言編程C/C++編譯器默認(rèn)的段和段分配

初始化段

.text段:包含所有的可執(zhí)行代碼以及常數(shù);.cinit段和.pinit段:包含用于全局變量或靜態(tài)變量初始化所需的表和常數(shù);.const段:包含字符串常數(shù)以及用const關(guān)鍵詞限定的全局和靜態(tài)變量以及其初始化值。.econst段:包含大內(nèi)存模型下的字符串常數(shù)以及用farconst限定的全局和靜態(tài)變量的申明和初始化值(存放于遠內(nèi)存—farmemory中)。.switch段:包含用于switch語句的表。未初始化段.bss段和.ebss段:這個段為全局變量和靜態(tài)變量保留空間。.stack段:存放C的系統(tǒng)堆棧,堆棧用于為函數(shù)傳遞參數(shù)或者為局部變量創(chuàng)建存儲空間。.const段:包含字符串常數(shù)以及用const關(guān)鍵詞限定的全局和靜態(tài)變量以及其初始化值。.system段和.esystem段:保留空間用于動態(tài)內(nèi)存分配,如調(diào)用malloc()函數(shù)。45DSPF2812的C語言編程C/C++編譯器默認(rèn)的段和段分配

段內(nèi)存類型頁.textROM或RAMPage0.cinitROM或RAMPage0.pinitROM或RAMPage0.switchROM或RAMPage0,1.constROM或RAMPage1.econstROM或RAMPage1.bssRAMPage1.ebssRAMPage1.stackRAMPage1.sysmemRAMPage1.esysmemRAMPage146DSPF2812的C語言編程工程模板

47DSPF2812的C語言編程工程模板

文件名文件內(nèi)容介紹頭文件(*.h)DSP281x_GlobalPrototypes.h包含DSP外設(shè)初始化函數(shù)的全局申明DSP281x_Device.h包含CPU寄存器定義和全局位控制的宏定義、類型宏定義以及所有的外設(shè)頭文件DSP281x_DefaultIsr.h包含所有缺省中斷服務(wù)子程序的函數(shù)申明DSP281x_PieVect.h包含中斷向量表結(jié)構(gòu)體的定義DSP281x_SWPrioritizedIsrLevels.h包含中斷優(yōu)先級的宏定義DSP281x_DevEmu.h外設(shè)頭文件,包含片內(nèi)仿真單元寄存器的位定義DSP281x_SysCtrl.h外設(shè)頭文件,包含系統(tǒng)控制寄存器的位定義DSP281x_CpuTimers.h外設(shè)頭文件,包含CPU32位定時器外設(shè)寄存器的位定義DSP281x_Adc.h外設(shè)頭文件,包含片內(nèi)ADC外設(shè)寄存器的位定義DSP281x_PieCtrl.h外設(shè)頭文件,包含PIE外設(shè)寄存器的位定義DSP281x_XIntrupt.h外設(shè)頭文件,包含外部中斷寄存器的位定義DSP281x_Xintf.h外設(shè)頭文件,包含外設(shè)接口寄存器的位定義DSP281x_ECan.h外設(shè)頭文件,包含ECAN接口寄存器的位定義DSP281x_Ev.h外設(shè)頭文件,包含事件管理器外設(shè)寄存器的位定義DSP281x_Gpio.h外設(shè)頭文件,包含通用I/O外設(shè)寄存器的位定義DSP281x_Mcbsp.h外設(shè)頭文件,包含McBSPs外設(shè)寄存器的位定義48DSPF2812的C語言編程工程模板

DSP281x_Sci.h外設(shè)頭文件,包含SCI接口寄存器的位定義DSP281x_Spi.h外設(shè)頭文件,包含SPI接口寄存器的位定義DSP281x_Examples.h——User.h用戶自定義的頭文件源文件(*.c,*.asm)DSP281x_CodeStartBranch.asm匯編語言程序,包含一條調(diào)轉(zhuǎn)指令,將程序分支到_c_int00處DSP281x_DefaultIsr.c缺省的中斷服務(wù)程序的定義文件DSP281x_GlobalVariableDefs.c采用pragma預(yù)編譯器指令為外設(shè)寄存器結(jié)構(gòu)體分配數(shù)據(jù)段DSP281x_PieCtrl.c外設(shè)擴展模塊(PIE)的控制寄存器初始化程序DSP281x_PieVect.cPIE向量表的初始化程序DSP281x_SysCtrl.c時鐘與系統(tǒng)控制外設(shè)的初始化程序User.c用戶自定義的源文件(包含主函數(shù)main)運行時支持庫文件(*.lib)Rts2800.lib運行時支持函數(shù)庫Rts2800_ml.lib大內(nèi)存模型下的運行時支持函數(shù)庫鏈接器命令文件(*.cmd)DSP281x_Headers_nonBIOS.cmd用于外設(shè)的內(nèi)存映像寄存器分配的命令文件F2812_EzDSP_RAM_lnk.cmd一個將代碼和數(shù)據(jù)段分配到DSPF2812的片內(nèi)存儲器H0中的命令文件的例子(用戶可修改它以符合實際目標(biāo)系統(tǒng)的情況)49DSPF2812的C語言編程寄存器定義和使用

/*

溫馨提示

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

評論

0/150

提交評論