




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章
DSP的軟件開發(fā)與C語言編程本章內(nèi)容:4.1DSP開發(fā)工具與軟件開發(fā)流程4.2集成開發(fā)環(huán)境CCS4.3DSP的C工程文件
4.4DSPC語言程序設(shè)計基礎(chǔ)4.5DSPC2023/7/2414.1DSP開發(fā)工具與軟件開發(fā)流程1.DSP開發(fā)工具硬件TIXDS510(ExtendedDevelopmentSystem)硬件仿真器。DSK(DSPStarterKit)初學(xué)者開發(fā)套件。瑞泰ICETEK-5100PP/USBDSP開發(fā)系統(tǒng)。評估板。DSP教學(xué)實驗系統(tǒng)。開發(fā)工具包括硬件、軟件兩部分。硬件部分主要是仿真器(Emulator),軟件主要是集成開發(fā)環(huán)境CCS(CodeComposerStudio)。DSP開發(fā)系統(tǒng)(仿真器)有PCI插卡式、并口式、USB接口式,目前多用USB接口式,即DSP開發(fā)系統(tǒng)通過USB接口與PC機(jī)相連,開發(fā)系統(tǒng)通過JTAG(基于掃描的仿真)接口與用戶目標(biāo)板相連,實現(xiàn)DSP軟硬件調(diào)試與程序燒寫。7/24/20232山東大學(xué)控制學(xué)院張東亮
DSP評估板(也稱為EVM板、目標(biāo)板、DEMO板、實驗板等),包括基本的DSP芯片及必要的電源、時鐘、復(fù)位電路外,還經(jīng)常包括用于程序調(diào)試的片外擴(kuò)展存儲器、擴(kuò)展的A/D、D/A轉(zhuǎn)換器、鍵盤顯示電路、EEPROM、RS232串行接口、SPI接口、CAN接口驅(qū)動電路、簡單應(yīng)用電路等。F2812DSP評估板7/24/20233山東大學(xué)控制學(xué)院張東亮F2812DSP評估板原理框圖開發(fā)系統(tǒng)與評估板7/24/20234山東大學(xué)控制學(xué)院張東亮2812EVM板的主要性能指標(biāo)如下:(1)TMS320F2812,運行速度150MIPS。(2)片內(nèi)RAM18K字。(3)擴(kuò)展RAM64K字。(4)片內(nèi)16路12位A/D轉(zhuǎn)換器,最大采樣速率12.5MSPS。(5)擴(kuò)展的4路12位D/A轉(zhuǎn)換器DAC7617。(6)兩路UART串行接口,符合RS-232C標(biāo)準(zhǔn)。(7)16路PWM輸出。(8)CAN總線標(biāo)準(zhǔn)接口。(9)用戶開關(guān)與指示燈。(10)片內(nèi)128K字Flash存儲器,帶128位加密位。(11)IEEE1149.1兼容的邏輯掃描電路即JTAG接口,用于仿真調(diào)試。(12)+5V電源輸入,板上3.3V,1.8V電源管理。7/24/20235山東大學(xué)控制學(xué)院張東亮7/24/20236山東大學(xué)控制學(xué)院張東亮2.軟件開發(fā)流程軟件開發(fā)流程框圖7/24/20237山東大學(xué)控制學(xué)院張東亮
軟件開發(fā)流程
1)編輯:生成源程序(*.asm,*.c)、頭文件(*.h)與命令文件(*.cmd)。2)編譯與匯編:生成目標(biāo)文件(*.obj,公共目標(biāo)文件COFF格式)及列表文件(*.lst)。3)連接:生成可執(zhí)行代碼文件(*.out)及映射文件(*.map)。4)調(diào)試:通過JTAG接口下載到目標(biāo)系統(tǒng)EVM。5)通過JTAG接口將程序固化燒寫到Flash存儲器。7/24/20238山東大學(xué)控制學(xué)院張東亮軟件開發(fā)工具主要有源程序編輯器(Editor)編譯器(Compiler)匯編器(Assembler)鏈接器(Linker)歸檔器(Archiver)運行時支持庫(Run-Time-SupportLibrary)庫建立程序(Library-buildUtility)HEX轉(zhuǎn)換程序(HexConversionUtility)3.軟件工具7/24/20239山東大學(xué)控制學(xué)院張東亮絕對列表器(AbsoluteLister)和交叉引用列表器(Cross-ReferenceLister)調(diào)試工具(Debuggingtools)C++名稱復(fù)原程序(C++NameDemanglingUtility)GEL語言(GeneralExtensionLanguage,通用擴(kuò)展語言)DSP/BIOS等。7/24/202310山東大學(xué)控制學(xué)院張東亮1.CCS軟件安裝與設(shè)置CCS2.0’C2000(CCS3.3)驅(qū)動程序設(shè)置。Simulator:PC模擬軟件仿真。Emulator:實時DSP硬件仿真。4.2集成開發(fā)環(huán)境CCS7/24/202311山東大學(xué)控制學(xué)院張東亮CCS運行主窗口
7/24/202312山東大學(xué)控制學(xué)院張東亮CCS主要工具源程序編輯器(Editor)。C編譯器(CCompiler)。匯編器(Assembler)。連接器(Linker)。調(diào)試工具(Debug)。十六進(jìn)制轉(zhuǎn)換公用程序(HexConversionUtility)。7/24/202313山東大學(xué)控制學(xué)院張東亮2.CCS主要菜單與功能典型的CCS運行界面如圖所示。CCS的功能可以通過菜單或工具條按鈕實現(xiàn)。主要的菜單項有File、Edit、View、Project、Debug等。這些菜單的使用與常用的集成開發(fā)軟件VisualC++等使用方法基本一樣。7/24/202314山東大學(xué)控制學(xué)院張東亮典型CCS運行界面7/24/202315山東大學(xué)控制學(xué)院張東亮CodeComposerStudio?Components
Robust,Easy-to-UseDevelopmentEnvironmentHelpCPUWindowMemorywindowGraphwindowProjectManager:Source&objectfilesFiledependenciesCompiler,Assembler&LinkerbuildoptionsStatuswindowFullC/C++&AssemblyDebugging:C&ASMSourceMixedmodeDisassembly(patch)SetBreakPointsSetprobePointsWatchwindowProductiveEditor:StructureExpansionMenusorIcons7/24/202316山東大學(xué)控制學(xué)院張東亮Real-timeDebuggingAllowsyoutohaltinnon-criticalcodefordebugwhiletime-criticalinterruptscontinuetobeserviced.Accessmemoryandregisterswithoutstoppingtheprocessor.Implementedinsilicon,notbyadebugmonitor:Easy-to-use,noapplicationresourcesrequiredInterruptvoidISR_1(){………}Main(){……}function(){
……}Haltandsinglestepnon-timecriticalcodeTime-criticalinterruptsarestillserviced.InControl,IfTheProcessorStops,TheSystemCanGoOutOfControl7/24/202317山東大學(xué)控制學(xué)院張東亮File菜單7/24/202318山東大學(xué)控制學(xué)院張東亮Project菜單7/24/202319山東大學(xué)控制學(xué)院張東亮View菜單7/24/202320山東大學(xué)控制學(xué)院張東亮Debug菜單7/24/202321山東大學(xué)控制學(xué)院張東亮3.采用CCS開發(fā)應(yīng)用程序的步驟創(chuàng)建一個新工程(project)。編輯源程序(*.asm,*.c)與連接命令文件(*.cmd)。將文件添加到該工程中(*.asm,*.c,*.h,*.cmd)。編譯匯編連接。裝載程序。調(diào)試程序。程序固化。7/24/202322山東大學(xué)控制學(xué)院張東亮調(diào)試程序連續(xù)運行與單步運行。設(shè)置斷點。查看與修改存儲單元。查看與修改寄存器內(nèi)容。觀察和編輯變量。程序Animate運行和數(shù)據(jù)圖形顯示。7/24/202323山東大學(xué)控制學(xué)院張東亮C工程(Project)幾種基本文件CCS工程文件(擴(kuò)展名為.pjt)。由CCS自動生成。在CC(CodeComposer)軟件環(huán)境中,擴(kuò)展名為.mak。
源程序:匯編語言文件(*.asm),C文件(*.c)。頭文件(*.h):定義寄存器映射地址,用戶自定義的常量等。例如,頭文件DSP281x_Adc.h定義了ADC寄存器,頭文件DSP281x_PieVec.h定義了PIE中斷矢量。鏈接命令文件(*.cmd)。庫文件(*.lib)。運行時支持庫rts2800_ml.lib。目標(biāo)文件(*.obj):COFF公共目標(biāo)文件格式。列表文件(*.lst):匯編生成的文件。映射文件(*.map):存儲器分配。可執(zhí)行代碼文件(*.out)。4.3DSP的C工程文件7/24/202324山東大學(xué)控制學(xué)院張東亮4.3.1公共目標(biāo)文件格式COFF編譯、匯編與鏈接程序建立的目標(biāo)文件采用共用目標(biāo)文件格式(CommonObjectFileFormat,COFF),便于模塊化編程、管理代碼段和存儲器,即不必為程序代碼或變量指定目標(biāo)地址。匯編器根據(jù)命令用適當(dāng)?shù)亩螌⒏鞑糠殖绦虼a和數(shù)據(jù)連在一起,構(gòu)成目標(biāo)文件。鏈接器分配存儲單元,即把各個段重新定位到目標(biāo)存儲器中。段(section,也稱為塊)是目標(biāo)文件的最小單位,是在存儲器中占據(jù)連續(xù)空間的代碼和數(shù)據(jù)塊,各段相互獨立。7/24/202325山東大學(xué)控制學(xué)院張東亮目標(biāo)文件中段與目標(biāo)存儲器之間的關(guān)系
匯編器的COFF文件格式包括三個默認(rèn)的段:.text段,即程序段,該段通常包含可執(zhí)行代碼即程序。.data段,即數(shù)據(jù)段,該段通常包含已初始化的數(shù)據(jù)。.bss段,即保留數(shù)據(jù)空間段,該段通常為未初始化的數(shù)據(jù)保留空間。7/24/202326山東大學(xué)控制學(xué)院張東亮匯編器和鏈接器允許用戶建立和鏈接自定義的段。所有段可以分為初始化段和未初始化段兩類。初始化段包含程序代碼和數(shù)據(jù)。未初始化段則為未初始化的數(shù)據(jù)保留存儲空間。匯編命令.sect和.usect可以分別用來創(chuàng)建自定義的初始化段和未初始化段。C編譯器對C程序編譯后也產(chǎn)生初始化段和未初始化段兩類,具體的段名稍有不同,除了不使用.data段之外,還產(chǎn)生一些新的段。7/24/202327山東大學(xué)控制學(xué)院張東亮編譯器對C語言編譯后除了生成2個基本段,即.text、.bss外,還生成其他一些段??煞譃槌跏蓟魏臀闯跏蓟?。初始化段包含可執(zhí)行代碼或常數(shù)表。C編譯器產(chǎn)生的初始化段有.pint、.const、.econst、.text、.cinit、.switch。.text段,包含可執(zhí)行代碼和常量(constant)。.cinit段和.pint段,包含初始化變量和常量。.const段,包含串常量,全局變量、靜態(tài)變量的聲明和初始化。.econst段,包含串常量,全局變量、靜態(tài)變量的聲明和初始化。變量由farconst修飾,或用大存儲器模型,初始化后放進(jìn)遠(yuǎn)(far)存儲器。.switch段,包含switch語句表。7/24/202328山東大學(xué)控制學(xué)院張東亮未初始化段用于保留存儲器(通常為RAM)空間。C編譯器產(chǎn)生的為初始化段有.bss、.ebss、.stack、.sysmem和.esysmem段。.bss段,為全局和靜態(tài)變量保留空間。.ebss段,為全局和靜態(tài)變量保留空間。變量由far修飾,或用大存儲器模型使用。.stack段,為C系統(tǒng)堆棧。用于保護(hù)函數(shù)的返回地址、分配局部變量、調(diào)用函數(shù)時傳遞參數(shù)。.sysmem段,為動態(tài)存儲器分配保留空間,malloc函數(shù)使用。.esysmem段,為動態(tài)存儲器分配保留空間,farmalloc函數(shù)使用。7/24/202329山東大學(xué)控制學(xué)院張東亮初始化段鏈接
段名稱描述限制.text可執(zhí)行代碼和常量程序.cint已初始化的全局與靜態(tài)變量的C初始化記錄低64K數(shù)據(jù).pint全局構(gòu)造器(C++constructor)表程序.switch實現(xiàn)switch語句表程序/低64K數(shù)據(jù).const已初始化的全局與靜態(tài)const修飾變量,串常量低64K數(shù)據(jù).econstfarcostant變量數(shù)據(jù)任何位置7/24/202330山東大學(xué)控制學(xué)院張東亮未初始化段鏈接
段名稱內(nèi)容限制.bss全局與靜態(tài)變量低64K數(shù)據(jù).ebssfar全局與靜態(tài)變量數(shù)據(jù)任何位置.stack堆棧空間低64K數(shù)據(jù).sysmemmalloc函數(shù)存儲區(qū)低64K數(shù)據(jù).esysmemfarmalloc函數(shù)存儲區(qū)數(shù)據(jù)任何位置7/24/202331山東大學(xué)控制學(xué)院張東亮存儲器映射表
段(Section)存儲器類型(TypeofMemory)頁面(Page).textROM或RAM0.cintROM或RAM0.pintROM或RAM0.switchROM或RAM0,1.constROM或RAM1.econstROM或RAM1.bssRAM1.ebssRAM1.stackRAM1.sysmemRAM1.esysmemRAM17/24/202332山東大學(xué)控制學(xué)院張東亮4.3.2鏈接命令文件CCS的鏈接器可以有很多選項,如-l(包含庫文件)、-stack(定義堆棧)、-o(定義輸出文件)等,并且將用戶軟件定義的段與目標(biāo)系統(tǒng)存儲器物理地址對應(yīng)關(guān)系定義清楚。鏈接器選項的實現(xiàn)通常采用工程選項菜單或鏈接器命令文件(.cmd)兩種方法。編寫一個鏈接器命令文件,將所有鏈接器選項寫在文件中,并將此文件加入到工程,這樣CCS在進(jìn)行編譯鏈接時,會自動按照鏈接器命令文件中的選項進(jìn)行。有兩條鏈接器命令MEMORY和SECTIONS可以實現(xiàn)對程序存儲器和數(shù)據(jù)存儲器空間的分配。MEMORY命令定義目標(biāo)存儲器的配置,SECTIONS命令定義編程段與目標(biāo)存儲器的關(guān)系。7/24/202333山東大學(xué)控制學(xué)院張東亮MEMORY命令
MEMORY命令定義目標(biāo)系統(tǒng)中可以使用的存儲器范圍,每個存儲器范圍具有名字、起始地址和長度。一般形式為MEMORY{PAGE0:name:origin=constant,length=constant;…PAGEn:name:origin=constant,length=constant;}PAGEn:定義存儲器空間。n=0~254.通常PAGE0定義程序存儲器,PAGE1定義數(shù)據(jù)存儲器。name:存儲器范圍名字??梢允?~8個字符。origin或簡寫為o:存儲器范圍的起始地址。length或簡寫為l:存儲器范圍的長度。7/24/202334山東大學(xué)控制學(xué)院張東亮SECTIONS命令SECTIONS命令用于將輸出各段定位到所定義的存儲器。一般形式為SECTIONS{name:[property,property,…]name:[property,property,…]…}在段名之后是是特性列表,定義段的內(nèi)容以及是怎樣分配的。段的特性(property)是裝載位置、運行位置、輸入段、段類型等。通常的特性符號“>”表示輸出段裝載位置。
7/24/202335山東大學(xué)控制學(xué)院張東亮4.4DSPC語言程序設(shè)計基礎(chǔ)4.4.1數(shù)據(jù)類型4.4.2C語言運算符與基本語句4.4.3函數(shù)4.4.4指針4.4.5編譯預(yù)處理命令4.4.6C語言與匯編語言混合編程4.4.7C28xDSP編譯器的關(guān)鍵字7/24/202336山東大學(xué)控制學(xué)院張東亮C語言程序設(shè)計優(yōu)缺點匯編語言程序設(shè)計:
執(zhí)行速度快。開發(fā)周期長、移植性和可讀性差。C語言程序設(shè)計:開發(fā)周期短、移植性和可讀性好。執(zhí)行速度可以滿足要求。7/24/202337山東大學(xué)控制學(xué)院張東亮C28xDSP具有優(yōu)化的C編譯器,它支持ANSIC標(biāo)準(zhǔn)。還具有一些不同于標(biāo)準(zhǔn)C的特征。DSP的基本數(shù)據(jù)類型如表所示,還具有數(shù)組、結(jié)構(gòu)、聯(lián)合等構(gòu)造類型數(shù)據(jù)。4.4.1數(shù)據(jù)類型7/24/202338山東大學(xué)控制學(xué)院張東亮TMS320C28xC的數(shù)據(jù)類型
1.C28x編譯器基本數(shù)據(jù)類型7/24/202339山東大學(xué)控制學(xué)院張東亮片內(nèi)外設(shè)寄存器通常通過結(jié)構(gòu)與聯(lián)合變量的方法進(jìn)行訪問。2.結(jié)構(gòu)例如,GPIOA口的MUX復(fù)用控制寄存器可用位段(bitfield)結(jié)構(gòu)表示structGPAMUX_BITS{
unsignedintPWM1_GPIOA0:1; //第0位
unsignedintPWM2_GPIOA1:1; //
…
unsignedintC2TRIP_GPIOA14:1; //
unsignedintC3TRIP_GPIOA15:1; //第15位
};7/24/202340山東大學(xué)控制學(xué)院張東亮例如,GPIOD口的MUX復(fù)用控制寄存器結(jié)構(gòu)structGPDMUX_BITS{
unsignedintT1CTRIP_PDPA_GPIOD0:1; //第0位
unsignedintT2CTRIP_PDPA_GPIOD1:1; //1
unsignedintrsvd1:3; //4:2,保留unsignedintT3CTRIP_PDPA_GPIOD5:1; //5
unsignedintT4CTRIP_PDPA_GPIOD6:1; //6
unsignedintrsvd2:9; //15:7,保留
};當(dāng)一個結(jié)構(gòu)中有效字段(位段)的長度不足16位時,可以加入保留字段,以保證數(shù)據(jù)的完整性。結(jié)構(gòu)變量的定義與成員變量的引用,例如,
structGPDMUX_BITSbit;//bit為GPDMUX_BITS類型變量
bit.T1CTRIP_PDPA_GPIOD0=1//將D0位定義為PDPA功能7/24/202341山東大學(xué)控制學(xué)院張東亮聯(lián)合體類型,可以將不同類型的數(shù)據(jù)存放在同一個地方,且占據(jù)同樣大小的存儲空間。例如,定義聯(lián)合體類型GPDMUX_REG,
unionGPDMUX_REG{
unsignedintall; //all為無符號整型變量 structGPDMUX_BITSbit;//bit為結(jié)構(gòu)型變量
};聯(lián)合變量的定義與成員變量的引用,例如,
unionGPDMUX_REGGPDMUX;//GPDMUX為聯(lián)合類型變量
GPDMUX.all=1;//將D0引腳定義為PDPA功能,其他為數(shù)字I/O3.聯(lián)合7/24/202342山東大學(xué)控制學(xué)院張東亮聯(lián)合可以出現(xiàn)在結(jié)構(gòu)和數(shù)組中,結(jié)構(gòu)和數(shù)組也可以出現(xiàn)在聯(lián)合中。例如,結(jié)構(gòu)類型GPIO_MUX_REGS,
structGPIO_MUX_REGS{
unionGPAMUX_REGGPAMUX;
unionGPDMUX_REGGPDMUX;
};結(jié)構(gòu)變量的定義與成員變量的引用,例如,
structGPIO_MUX_REGSGpioMuxRegs;
//表示GpioMuxRegs是結(jié)構(gòu)GPIO_MUX_REGS的一個變量
可以采用點運算符的方法引用各成員變量,
GpioMuxRegs.GPAMUX.all=0x077F;//CAP1-3,PWM1-6,T1pwm
GpioMuxRegs.GPDMUX.bit.T1CTRIP_PDPA__GPIOD0=1;//PDPA
GpioMuxRegs.GPDMUX.bit.T2CTRIP_SOCA__GPIOD1=0;//GPIOD1
GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB__GPIOD5=0;//GPIOD5
GpioMuxRegs.GPDMUX.bit.T4CTRIP_SOCB__GPIOD6=0;//GPIOD6
定義GPIOA口時,采用了一條C語句。而定義GPIOD口時,采用了4條C語句。編程風(fēng)格可以編程者自己決定。7/24/202343山東大學(xué)控制學(xué)院張東亮4.4.2C語言運算符與基本語句
1.C語言運算符2.C語言基本語句C語言運算符有算術(shù)運算符、關(guān)系運算符、邏輯運算符、位操作運算符等。不同的運算符可以有不同的優(yōu)先級、運算對象個數(shù)與結(jié)合方向。C語句有控制語句、表達(dá)式語句、函數(shù)調(diào)用語句、空語句和復(fù)合語句五類。控制語句有9種。7/24/202344山東大學(xué)控制學(xué)院張東亮
與普通的C語言程序類似,DSPC程序是由若干模塊化的函數(shù)構(gòu)成。函數(shù)是C程序的基本模塊,子程序就是由函數(shù)來實現(xiàn)的。用戶可以根據(jù)需要定義自己的功能函數(shù),也可以調(diào)用C編譯器提供的標(biāo)準(zhǔn)函數(shù)(庫函數(shù))來完成某種特定的功能。注意函數(shù)調(diào)用的規(guī)則。4.4.3函數(shù)7/24/202345山東大學(xué)控制學(xué)院張東亮C函數(shù)的一般格式為類型函數(shù)名(形式參數(shù)及其類型表){變量聲明部分;執(zhí)行語句部分;}一個函數(shù)在程序中可以三種形態(tài)出現(xiàn):函數(shù)定義(Definition)、函數(shù)調(diào)用和函數(shù)聲明(Declaration)。函數(shù)定義相當(dāng)于匯編語言中的一般子程序。函數(shù)調(diào)用相當(dāng)于調(diào)用子程序。函數(shù)定義和函數(shù)調(diào)用不分先后,但若調(diào)用在定義之前,那么在調(diào)用前必須先進(jìn)行函數(shù)聲明。函數(shù)聲明是一個沒有函數(shù)體的函數(shù)定義,而函數(shù)調(diào)用則要求有函數(shù)名和實際參數(shù)表。7/24/202346山東大學(xué)控制學(xué)院張東亮
可以用指針的方法訪問變量,用指針訪問數(shù)組、結(jié)構(gòu)、聯(lián)合變量非常方便。4.4.4指針
例如,指向結(jié)構(gòu)類型的指針變量p
structGPDMUX_BITS*p;
structGPDMUX_BITSbit;
p=&bit;
bit的成員T1CTRIP_PDPA_GPIOD0可用下述3種形式之一訪問
bit.T1CTRIP_PDPA_GPIOD0
(*p).T1CTRIP_PDPA_GPIOD0
p->T1CTRIP_PDPA_GPIOD07/24/202347山東大學(xué)控制學(xué)院張東亮ANSIC新標(biāo)準(zhǔn)增加了一種void*指針類型,即可以定義一個指針變量,但不指定它是指向哪一種數(shù)據(jù)類型,例
unsignedlong
*Source=(void*)&PieVectTableInit;地址&PieVectTableInit被(void*)強(qiáng)制成了void*類型。指針Source為unsignedlong類型。例如,描述中斷矢量表的指針PINTtypedef
unsignedintUnit16; //定義一種類型Uint16Uint16i;typedefinterruptvoid(*PINT)(void);//指針PINT指向中斷函數(shù)struct PIE_VECT_TABLE{ PINTPIE1_RESERVED; PINTPIE2_RESERVED;…}7/24/202348山東大學(xué)控制學(xué)院張東亮C語言用指針訪問數(shù)據(jù)存儲器(或片內(nèi)外設(shè)寄存器)可以用指針方法實現(xiàn)。例如,從擴(kuò)展的外設(shè)接口讀取開關(guān)狀態(tài),然后輸出到擴(kuò)展的指示燈外設(shè)接口。#defineLBDS(*((unsignedint*)0xc0000))//擴(kuò)展的外設(shè)寄存器,指示燈#defineDIPS(*(unsignedint*)0xc0001)//擴(kuò)展的外設(shè)寄存器,開關(guān)LBDS=DIPS; //讀取撥碼開關(guān)狀態(tài)直接送指示燈顯示一般將這些定義放到一個頭文件,使用時,用編譯預(yù)處理命令include包含該頭文件即可。7/24/202349山東大學(xué)控制學(xué)院張東亮main(){
inti;
unsignedint*px,*py,*pz; px=(unsignedint*)0x80000; py=(unsignedint*)0x80100; for(i=0,pz=px;i<16;i++,pz++) (*pz)=i; for(i=0,pz=py;i<16;i++,pz++) (*pz)=0x1234; for(i=0;i<16;i++,px++,py++) (*py)=(*px); while(1){;}}例4-3,將數(shù)據(jù)存儲器80000H開始的16個單元復(fù)制到80100H開始的單元。7/24/202350山東大學(xué)控制學(xué)院張東亮例4-4擴(kuò)展外部接口,編寫C程序?qū)?個開關(guān)狀態(tài)反應(yīng)到4個指示燈。#include"DSP281x_Device.h"http://DSP281xHeadfileIncludeFile//定義指示燈控制寄存器地址和寄存器類型#defineLBDS(*((unsignedint*)0xc0000))//定義撥碼開關(guān)控制寄存器地址和寄存器類型#defineDIPS(*(unsignedint*)0xc0001)main(){ InitSysCtrl(); //初始化DSP運行時鐘,自定義函數(shù) while(1) LBDS=DIPS; //讀取撥碼開關(guān)狀態(tài)直接送指示燈顯示} 7/24/202351山東大學(xué)控制學(xué)院張東亮宏定義#define #definePI3.14159 #defineUint16unsignedint(typedefunsignedintUint16;) #defineEINTasm(“clrcINTM”) EINT; #defineEALLOWasm(“EALLOW”)4.4.5編譯預(yù)處理
文件包含#include #include<math.h> #include“DSP281x_Device.h”1.宏定義、文件包含與條件編譯7/24/202352山東大學(xué)控制學(xué)院張東亮條件編譯 #ifdef標(biāo)識符 程序段1 #else 程序段2 #endif7/24/202353山東大學(xué)控制學(xué)院張東亮pragma是一類編譯預(yù)處理命令(directive),通知編譯預(yù)處理器如何處理函數(shù)。C28xC/C++支持如下pragma命令, CODE_SECTION(func,“sectionname”) DATA_SECTION(symbol,“sectionname”) INTERRUPT(func) FUNC_EXT_CALLED(func) FAST_CALL(func)2.pragma命令7/24/202354山東大學(xué)控制學(xué)院張東亮
CODE_SECTION代碼段它為函數(shù)func在一個名為sectionname的段(section)中指定空間。將一個代碼對象連接到一個不同于.text段的空間時,該語法非常有用。例如charbufferA[80];#pragmaCODE_SECTION(funA,“codeA”)charfunA(inti);voidmain(){charc;c=funA(1);}charfunA(inti){returnbufferA[i[];}7/24/202355山東大學(xué)控制學(xué)院張東亮
DATA_SECTION數(shù)據(jù)段它為符號symbol在一個名為sectionname的段中指定空間。將一個數(shù)據(jù)對象連接到一個不同于.bss段的空間時,該語法非常有用。例如#pragmaDATA_SECTION(bufferB,“my_sect”)charbufferB(512);數(shù)據(jù)塊bufferB被定位于my_sect段中,my_sect段在.cmd文件中規(guī)定物理地址。7/24/202356山東大學(xué)控制學(xué)院張東亮4.4.6C語言與匯編語言混合編程在C程序中直接嵌入?yún)R編語句。獨立的C模塊和匯編模塊接口。獨立編寫C程序與匯編程序,分別編譯、匯編生成目標(biāo)代碼模塊,然后用連接器連接起來。從C程序中訪問匯編程序變量。7/24/202357山東大學(xué)控制學(xué)院張東亮1.在C程序中直接嵌入?yún)R編語句C程序嵌入?yún)R編語句是一種直接的C模塊和匯編模塊接口方法。可以在C程序中實現(xiàn)用C語言難以實現(xiàn)的一些硬件控制功能。另一方面,也可以用這種方法在C程序中的關(guān)鍵部分用匯編語句代替C語句以優(yōu)化程序。這種方法的一個缺點是它比較容易破壞C環(huán)境,因為C編譯器在編譯嵌入了匯編語句的C程序時并不檢查或分析所嵌入的匯編語句。直接在C語言程序中相應(yīng)位置嵌入?yún)R編語句,只需在匯編語句加上雙引號和小括號,前面加asm標(biāo)識符號,雙引號內(nèi)第一個字符應(yīng)是空格。即,
asm(“匯編語句”)例如asm(“NOP”);#defineEINTasm(“CLRCINTM”)//開放中斷 EINT;7/24/202358山東大學(xué)控制學(xué)院張東亮2.獨立的C模塊和匯編模塊接口在編寫?yīng)毩⒌膮R編程序時,必須注意以下幾點:(1)不論是用C語言編寫的函數(shù)還是用匯編語言編寫的函數(shù),都必須遵循寄存器使用規(guī)則。(2)必須保護(hù)函數(shù)要用到的幾個特定寄存器。(3)中斷程序必須保護(hù)所有用到的寄存器。(4)從匯編程序調(diào)用C函數(shù)時,第一個參數(shù)(最左邊)必須放入累加器A中,剩下的參數(shù)按自右向左的順序壓入堆棧。(5)調(diào)用C函數(shù)時,注意C函數(shù)只保護(hù)了幾個特定的寄存器,而其他寄存器可以自由使用。(6)長整型和浮點數(shù)在存儲器中存放的順序是低位字在高地址,高位字在低地址。7/24/202359山東大學(xué)控制學(xué)院張東亮(7)如果函數(shù)有返回值,返回值存放在累加器中。(8)匯編語言模塊不能改變由C模塊產(chǎn)生的.cinit段,如果改變其內(nèi)容將會引起不可預(yù)測的后果。(9)編譯器在所有標(biāo)識符(函數(shù)名、變量名等)前加下劃線“_”。(10)任何在匯編程序中定義的對象或函數(shù),如果需要在C程序中訪問或調(diào)用,則必須用匯編指令.global定義。7/24/202360山東大學(xué)控制學(xué)院張東亮3.從C程序中訪問匯編程序變量從C程序中訪問在匯編程序中定義的變量或常數(shù),可以分為以下3種情況:(1)訪問在.bss段中定義的變量。(2)訪問不在.bss段中定義的變量。(3)對于在匯編程序中用.set和.global偽指令定義的全局常數(shù),也可以使用特殊的操作從C程序中訪問它們。7/24/202361山東大學(xué)控制學(xué)院張東亮例4-5,在C程序中訪問在.bss段中定義的變量。匯編程序:.bss_var,1 ;定義變量.global_var ;聲明為外部變量C程序:externintvar //聲明為外部變量var=1 //訪問變量7/24/202362山東大學(xué)控制學(xué)院張東亮例4-6,在C程序中訪問不在.bss段中定義的變量。匯編程序:.global_sine ;聲明為外部變量.sect“sine_tab” ;建立一個獨立的段_sine: ;常數(shù)表起始地址.float0.0.float0.015987.float0.022145C程序:externfloatsine[] //聲明為外部變量float*sine_p=sine; //聲明一個指針指向該變量f=sine_p[4]; //作為普通數(shù)組訪問sine數(shù)組7/24/202363山東大學(xué)控制學(xué)院張東亮4.4.6C28xDSP編譯器的關(guān)鍵字C28xDSPC/C++編譯器,支持標(biāo)準(zhǔn)的const、register、volatile等關(guān)鍵字,還擴(kuò)展了cregister、interrupt、far、near等關(guān)鍵字。關(guān)鍵字const
該關(guān)鍵字可以優(yōu)化存儲器的分配。加const到任何變量的定義可以確保其內(nèi)的值不變。7/24/202364山東大學(xué)控制學(xué)院張東亮關(guān)鍵字volatile該關(guān)鍵字所定義的變量是可變的,可以被其他硬件修改,而不僅僅只能由C程序修改。優(yōu)化器會盡量減少存儲器的訪問,所以有時必須禁止優(yōu)化,特別是循環(huán)控制變量。例子
volatileunsignedint*ctrl;while(*ctrl!=0xff);//循環(huán)等待,直到ctrl地址的內(nèi)容為0xff7/24/202365山東大學(xué)控制學(xué)院張東亮關(guān)鍵字cregster該擴(kuò)展關(guān)鍵字允許高級語言讀/寫控制寄存器。在F281xC中,cregister僅限于中斷使能寄存器IER和中斷標(biāo)志寄存器IFR,程序中應(yīng)有如下聲明externcregistervolatileunsignedintIER;externcregistervolatileunsignedintIFR;可以用|(位或)和&(位與)進(jìn)行操作,例如IFR|=0x100;IFR&=0x100; 7/24/202366山東大學(xué)控制學(xué)院張東亮關(guān)鍵字interrupt該擴(kuò)展關(guān)鍵字用來說明函數(shù)是一個中斷函數(shù)。中斷函數(shù)被定義成返回void類型,而且無參數(shù)調(diào)用,例如,
interruptvoidint_handler() { unsignedintflags; … }7/24/202367山東大學(xué)控制學(xué)院張東亮關(guān)于中斷函數(shù)中斷的使能和屏蔽必須由程序員自己設(shè)置。中斷程序沒有參數(shù)傳遞,既使說明,也會被忽略。中斷處理程序不能被正常的C程序調(diào)用。為了使中斷程序與中斷一致,在相應(yīng)的中斷矢量中必須放置一條轉(zhuǎn)移指令,可以用.sect匯編偽指令建立一個簡單的跳轉(zhuǎn)指令表來完成此項功能。在匯編語言中斷程序中,注意在符號名前面加上一個下劃線,例如c_int00記為_c_int00。中斷程序使用的所有寄存器,包括狀態(tài)寄存器和程序中調(diào)用函數(shù)使用的寄存器都必須予以保護(hù)。7/24/202368山東大學(xué)控制學(xué)院張東亮關(guān)鍵字farC/C++編譯器的默認(rèn)尋址空間是64K。所有指針的默認(rèn)大小為16位。C28x支持的尋址空間達(dá)4M字,即22位。加上far關(guān)鍵字限定符的指針大小為22位,可以尋址4M字空間。7/24/202369山東大學(xué)控制學(xué)院張東亮#include"DSP281x_Device.h"http://DSP281xHeaderfileIncludeFile//定義指示燈寄存器地址和寄存器類型#defineLBDS(*((unsignedint*)0xc0000))//指定地址的整型變量voidDelay(unsignedintnDelay); //延時子程序,函數(shù)聲明main(){ unsignedintuLED[4]={1,2,4,8};//控制字0001,0010,0100,1000數(shù)組 inti; InitSysCtrl(); //初始化DSP運行時鐘,自定義函數(shù) //系統(tǒng)時鐘150MHz,使能外設(shè)時鐘,禁止WDwhile(1)例4-7
4個LED指示燈接到DSP通過CPLD擴(kuò)展的外部簡單接口電路,其地址為0xc0000。用C語言編程使之閃爍。+3.3V1kLED4.5DSPC程序舉例7/24/202370山東大學(xué)控制學(xué)院張東亮{for(i=0;i<4;i++) { LBDS=uLED[i]; //正向順序送控制字 Delay(256); //延時 }for(i=3;i>=0;i--) { LBDS=uLED[i]; //反向順序送控制字 Delay(256); //延時 } }}7/24/202371山東大學(xué)控制學(xué)院張東亮voidDelay(unsignedintnDelay)//延時程序,自定義函數(shù){ intii,jj,kk=0; for(ii=0;ii<nDelay;ii++) { for(jj=0;jj<512;jj++){kk++;} }}7/24/202372山東大學(xué)控制學(xué)院張東亮#include"DSP281x_Device.h" //DSP281xHeaderfileIncludeFile//定義指示燈寄存器地址和寄存器類型voidDelay(unsignedintnDelay); //延時子程序,函數(shù)聲明#defineCTRGR*(int*)0x108000 //控制板全局控制寄存器#defineCTRLR*(int*)0x108007 //控制板輔助控制寄存器main(){
InitSysCtrl(); //初始化PLL,CLKOUT=150M,使能外設(shè)時鐘,禁止WDEALLOW;//GpioMuxRegs.GPBMUX.all=00;//ConfigureMUXsasdigitalI/OsGpioMuxRegs.GPBDIR.all=0x00FF;//GPIODIRselectGPIOB7:1asoutputEDIS;
例4-81個LED指示燈接到DSP的通用輸入輸出接口GPIOB5。用C語言編程使之閃爍。+3.3V1kLED7/24/202373山東大學(xué)控制學(xué)院張東亮voidDelay(unsignedintnDelay)//延時程序,自定義函數(shù){ intii,jj,kk=0; for(ii=0;ii<nDelay;ii++) for(jj=0;jj<512;jj++)kk++;} CTRGR=0; //初始化ICETEK-CTR CTRGR=0x80; CTRGR=0; CTRLR=0; //關(guān)閉東西方向的交通燈 CTRLR=0x40; //關(guān)閉南北方向的交通燈 CTRGR=2;while(1){GpioDataRegs.GPBDAT.bit.GPIOB5=0;Delay(10);GpioDataRegs.GPBDAT.bit.GPIOB5=1;Delay(10);}}
7/24/202374山東大學(xué)控制學(xué)院張東亮例4-9,1個LED指示燈接到DSP通過擴(kuò)展的外部簡單接口電路的最低位,其地址為0xc0000。采用通用定時器T1中斷方式定時200ms,用C語言編程使之閃爍,即引腳上產(chǎn)生周期為400ms的方波,XCLKIN=30MHz,SYSCLKOUT=150MHz。#include"DSP281x_Device.h" //DSP281x寄存器頭文件#defineLBDS*((unsignedint*)0xc0000) //定義指示燈寄存器地址interruptvoideva_timer1_isr(void);void EVA_Timer1() //定時器初始化{EvaRegs.GPTCONA.all=0; //初始化EVATimer1EvaRegs.T1PR=0x9895;//定時周期為5.12us*(T1PR+1)=0.2sEvaRegs.EVAIMRA.bit.T1PINT=1;//使能定時器1的周期中斷EvaRegs.EVAIFRA.bit.T1PINT=1;//寫1清除定時器1的周期中斷標(biāo)志EvaRegs.T1CNT=0x0000; //計數(shù)寄存器從0開始EvaRegs.T1CON.all=0x1740;//連續(xù)增計數(shù),128分頻,打開定時器}7/24/202375山東大學(xué)控制學(xué)院張東亮main(){ InitSysCtrl(); //初始化DSP運行時鐘,時鐘頻率150MHz EALLOW; SysCtrlRegs.HISPCP.all=0x0003;//高速時鐘頻率=25MHz EDIS; DINT; //關(guān)閉總中斷 IER=0x0000; //清中斷使能 IFR=0x0000; //清中斷標(biāo)志 InitPieCtrl(); //初始化PIE控制寄存器 InitPieVectTable(); //初始化PIE中斷向量表 EVA_Timer1(); //初始化EVATimer1 EALLOW; PieVectTable.T1PINT=&eva_timer1_isr; //中斷服務(wù)程序入口地址放入中斷向量表 EDIS;7/24/202376山東大學(xué)控制學(xué)院張東亮//依次使能各級中斷:外設(shè)中相應(yīng)中斷位->PIE控制器->CPU PieCtrlRegs.PIEIER2.all=M_INT4; //GP定時器1使能位于PIE第2組第4個,將其使能 IER|=M_INT2;//使能的PIE第2組可屏蔽中斷2(INT2) EINT; //開總中斷 LBDS=0; //指示燈全滅 while(1){;} //等待中斷}interruptvoideva_timer1_isr(void){LBDS^=1; //產(chǎn)生方波,最低位指示燈亮滅切換EvaRegs.EVAIMRA.bit.T1PINT=1; //使能定時器1的周期中斷EvaRegs.EVAIFRA.bit.T1PINT=1; //寫1清除定時器1的周期中斷標(biāo)志PieCtrlRegs.PIEACK.all=PIEACK_GROUP2; //清零PIEACK中的第2組中斷對應(yīng)位}7/24/202377山東大學(xué)控制學(xué)院張東亮思考題與習(xí)題DSP應(yīng)用系統(tǒng)的軟件開發(fā)流程是什么?采用CCS集成開發(fā)環(huán)境進(jìn)行軟件開發(fā)調(diào)試的步驟是什么?DSP的硬件仿真器與軟件仿真器有什么異同點?什么是COFF格式?它有什么特點?說明.text段、.data段、.bss段分別包含什么內(nèi)容?鏈接命令文件包括哪些內(nèi)容?MEMORY命令和SECTION命令分別有什么作用?DSPC語言有哪些特點?C28xDSP編譯器有哪些數(shù)據(jù)類型?7/24/202378山東大學(xué)控制學(xué)院張東亮如何訪問片內(nèi)外設(shè)寄存器的某些位?如何直接訪問存儲器單元?pragma編譯預(yù)處理命令有什么用途?C語言與匯編語言混合編程有哪些方法?C28xDSP的C編譯器擴(kuò)展了哪幾個關(guān)鍵字?1個LED指示燈接到DSP的通用I/O引腳GPIOB4。采用通用定時器T1中斷方式定時200ms,用C語言編程使之閃爍,XCLKIN=30MHz,SYSCLKOUT=150MHz。7/24/202379山東大學(xué)控制學(xué)院張東亮安全閥基本知識如果壓力容器(設(shè)備/管線等)壓力超過設(shè)計壓力…1.盡可能避免超壓現(xiàn)象堵塞(BLOCKED)火災(zāi)(FIRE)熱泄放(THERMALRELIEF)如何避免事故的發(fā)生?2.使用安全泄壓設(shè)施爆破片安全閥如何避免事故的發(fā)生?01安全閥的作用就是過壓保護(hù)!一切有過壓可能的設(shè)施都需要安全閥的保護(hù)!這里的壓力可以在200KG以上,也可以在1KG以下!設(shè)定壓力(setpressure)安全閥起跳壓力背壓(backpressure)安全閥出口壓力超壓(overpressure)表示安全閥開啟后至全開期間入口積聚的壓力.幾個壓力概念彈簧式先導(dǎo)式重力板式先導(dǎo)+重力板典型應(yīng)用電站鍋爐典型應(yīng)用長輸管線典型應(yīng)用罐區(qū)安全閥的主要類型02不同類型安全閥的優(yōu)缺點結(jié)構(gòu)簡單,可靠性高適用范圍廣價格經(jīng)濟(jì)對介質(zhì)不過分挑剔彈簧式安全閥的優(yōu)點預(yù)漏--由于閥座密封力隨介質(zhì)壓力的升高而降低,所以會有預(yù)漏現(xiàn)象--在未達(dá)到安全閥設(shè)定點前,就有少量介質(zhì)泄出.100%SEATINGFORCE75502505075100%SETPRESSURE彈簧式安全閥的缺點過大的入口壓力降會造成閥門的頻跳,縮短閥門使用壽命.ChatterDiscGuideDiscHolderNozzle彈簧式安全閥的缺點彈簧式安全閥的缺點=10090807060500102030405010%OVERPRESSURE%BUILT-UPBACKPRESSURE%RATEDCAPACITY普通產(chǎn)品平衡背壓能力差.在普通產(chǎn)品基礎(chǔ)上加裝波紋管,使其平衡背壓的能力有所增強(qiáng).能夠使閥芯內(nèi)件與高溫/腐蝕性介質(zhì)相隔離.平衡波紋管彈簧式安全閥的優(yōu)點優(yōu)異的閥座密封性能,閥座密封力隨介質(zhì)操作壓力的升高而升高,可使系統(tǒng)在較高運行壓力下高效能地工作.ResilientSeatP1P1P2先導(dǎo)式安全閥的優(yōu)點平衡背壓能力優(yōu)秀有突開型/調(diào)節(jié)型兩種動作特性可遠(yuǎn)傳取壓先導(dǎo)式安全閥的優(yōu)點對介質(zhì)比較挑剃,不適用于較臟/較粘稠的介質(zhì),此類介質(zhì)會堵塞引壓管及導(dǎo)閥內(nèi)腔.成本較高.先導(dǎo)式安全閥的缺點重力板式產(chǎn)品的優(yōu)點目前低壓儲罐呼吸閥/緊急泄放閥的主力產(chǎn)品.結(jié)構(gòu)簡單.價格經(jīng)濟(jì).重力板式產(chǎn)品的缺點不可現(xiàn)場調(diào)節(jié)設(shè)定值.閥座密封性差,并有較嚴(yán)重的預(yù)漏.受背壓影響大.需要很高的超壓以達(dá)到全開.不適用于深冷/粘稠工況.幾個常用規(guī)范ASMEsectionI-動力鍋爐(FiredVessel)ASMEsectionVIII-非受火容器(UnfiredVessel)API2000-低壓安全閥設(shè)計(LowpressurePRV)API520-火災(zāi)工況計算與選型(FireSizing)API526-閥門尺寸(ValveDimension)API527-閥座密封(SeatTightness)介質(zhì)狀態(tài)(氣/液/氣液雙相).氣態(tài)介質(zhì)的分子量&Cp/Cv值.液態(tài)介質(zhì)的比重/黏度.安全閥泄放量要求.設(shè)定壓力.背壓.泄放溫度安全閥不以連接尺寸作為選型報價依據(jù)!如何提供高質(zhì)量的詢價?彈簧安全閥的結(jié)構(gòu)彈簧安全閥起跳曲線彈簧安全閥結(jié)構(gòu)彈簧安全閥結(jié)構(gòu)導(dǎo)壓管活塞密封活塞導(dǎo)向不平衡移動副(活塞)導(dǎo)管導(dǎo)閥彈性閥座P1P1P2先導(dǎo)式安全閥結(jié)構(gòu)先導(dǎo)式安全閥的工作原理頻跳安全閥的頻跳是一種閥門高頻反復(fù)開啟關(guān)閉的現(xiàn)象。安全閥頻跳時,一般來說密封面只打開其全啟高度的幾分只一或十幾分之一,然后迅速回座并再次起跳。頻跳時,閥瓣和噴嘴的密封面不斷高頻撞擊會造成密封面的嚴(yán)重?fù)p傷。如果頻跳現(xiàn)象進(jìn)一步加劇還有可能造成閥體內(nèi)部其他部分甚至系統(tǒng)的損傷。安全閥工作不正常的因素頻跳后果1、導(dǎo)向平面由于反復(fù)高頻磨擦造成表面劃傷或局部材料疲勞實效。2、密封面由于高頻碰撞造成損傷。3、由于高頻振顫造成彈簧實效。4、由頻跳所帶來的閥門及管道振顫可能會破壞焊接材料和系統(tǒng)上其他設(shè)備。5、由于安全閥在頻跳時無法達(dá)到需要的排放量,系統(tǒng)壓力有可能繼續(xù)升壓并超過最大允許工作壓力。安全閥工作不正常的因素A、系統(tǒng)壓力在通過閥門與系統(tǒng)之間的連接管時壓力下降超過3%。當(dāng)閥門處于關(guān)閉狀態(tài)時,閥門入口處的壓力是相對穩(wěn)定的。閥門入口壓力與系統(tǒng)壓力相同。當(dāng)系統(tǒng)壓力達(dá)到安全閥的起跳壓力時,閥門迅速打開并開始泄壓。但是由于閥門與系統(tǒng)之間的連接管設(shè)計不當(dāng),造成連接管內(nèi)局部壓力下降過快超過3%,是閥門入口處壓力迅速下降到回座壓力而導(dǎo)致閥門關(guān)閉。因此安全閥開啟后沒有達(dá)到完全排放,系統(tǒng)壓力仍然很高,所以閥門會再次起跳并重復(fù)上述過程,既發(fā)生頻跳。導(dǎo)致頻跳的原因?qū)е陆庸軌航蹈哂?%的原因1、閥門與系統(tǒng)間的連接管內(nèi)徑小于閥門入口管內(nèi)徑。2、存在嚴(yán)重的渦流現(xiàn)象。3、連接管過長而且沒有作相應(yīng)的補償(使用內(nèi)徑較大的管道)。4、連接管過于復(fù)雜(拐彎過多甚至在該管上開口用作它途。在一般情況下安全閥入口處不允許安裝其他閥門。)導(dǎo)致頻跳的原因B、閥門的調(diào)節(jié)環(huán)位置設(shè)置不當(dāng)。安全閥擁有噴嘴環(huán)和導(dǎo)向環(huán)。這兩個環(huán)的位置直接影響安全閥的起跳和回座過程。如果噴嘴環(huán)的位置過低或?qū)颦h(huán)的位置過高,則閥門起跳后介質(zhì)的作用力無法在閥瓣座和調(diào)節(jié)環(huán)所構(gòu)成的空間內(nèi)產(chǎn)生足夠的托舉力使閥門保持排放狀態(tài),從而導(dǎo)致閥門迅速回座。但是系統(tǒng)壓力仍然保持較高水平,因此回座后閥門會很快再次起跳。導(dǎo)致頻跳的原因C、安全閥的額定排量遠(yuǎn)遠(yuǎn)大于所需排量。
由于所選的安全閥的喉徑面積遠(yuǎn)遠(yuǎn)大于所需,安全閥排放時過大的排量導(dǎo)致壓力容器內(nèi)局部壓力下降過快,而系統(tǒng)本身的超壓狀態(tài)沒有得到緩解,使安全閥不得不再次起跳頻跳的原因閥門拒跳:當(dāng)系統(tǒng)壓力達(dá)到安全閥的起跳壓力時,閥門不起跳的現(xiàn)象。安全閥工作不正常的因素1、閥門整定壓力過高。2、閥門內(nèi)落入大量雜質(zhì)從而使閥辦座和導(dǎo)套間卡死或摩擦力過大。3、彈簧之間夾入雜物使彈簧無法被正常壓縮。4、閥門安裝不當(dāng),使閥門垂直度超過極限范圍(正負(fù)兩度)從而使閥桿組件在起跳過程中受阻。5、排氣管道沒有被可靠支撐或由于管道受熱膨脹移位從而對閥體產(chǎn)生扭轉(zhuǎn)力,導(dǎo)致閥體內(nèi)機(jī)構(gòu)發(fā)生偏心而卡死。安全閥拒跳的原因閥門不回座或回座比過大:安全閥正常起跳后長時間無法回座,閥門保持排放狀態(tài)的現(xiàn)象。安全閥工作不正常的因素1、閥門上下調(diào)整環(huán)的位置設(shè)置不當(dāng)。2、排氣管道設(shè)計不當(dāng)造成排氣不暢,由于排氣管道過小、拐彎過多或被堵塞,使排放的蒸汽無法迅速排出而在排氣管和閥體內(nèi)積累,這時背壓會作用在閥門內(nèi)部機(jī)構(gòu)上并產(chǎn)生抑制閥門關(guān)閉的趨勢。3、閥門內(nèi)落入大量雜質(zhì)從而使閥瓣座和導(dǎo)套之間卡死后摩擦力過大。安全閥不回座或回座比過大的因素:4、彈簧之間夾入雜物從而使彈簧被正常壓縮后無法恢復(fù)。5、由于對閥門排放時的排放反力計算不足,從而在排放時閥體受力扭曲損壞內(nèi)部零件導(dǎo)致卡死。6、閥桿螺母(位于閥桿頂端)的定位銷脫落。在閥門排放時由于振動使該螺母下滑使閥桿組件回落受阻。安全閥不回座或回座比過大的因素:7、由于彈簧壓緊螺栓的鎖緊螺母松脫,在閥門排放時由于振動時彈簧壓緊螺栓松動上滑導(dǎo)致閥門的設(shè)定起跳值不斷減小。
8、閥門安裝不當(dāng),使閥門垂直度超過極限范圍(正負(fù)兩度)從而使閥桿組件在回落過程中受阻。
9、閥門的密封面中有雜質(zhì),造成閥門無法正常關(guān)閉。
10、鎖緊螺母沒有鎖緊,由于管道震動下環(huán)向上運動,上平面高于密封面,閥門回座時無法密封安全閥不回座或回座比過大的因素:謝謝觀看癌基因與抑癌基因oncogene&tumorsuppressorgene24135基因突變概述.癌基因和抗癌基因的概念.癌基因的分類.癌基因產(chǎn)物的作用.癌基因激活的機(jī)理主要內(nèi)容疾?。?/p>
——是人體某一層面或各層面形態(tài)和功能(包括其物質(zhì)基礎(chǔ)——代謝)的異常,歸根結(jié)底是某些特定蛋白質(zhì)結(jié)構(gòu)或功能的變異,而這些蛋白質(zhì)又是細(xì)胞核中相應(yīng)基因借助細(xì)胞受體和細(xì)胞中信號轉(zhuǎn)導(dǎo)分子接收信號后作出應(yīng)答(表達(dá))的產(chǎn)物。TranscriptionTranslationReplicationDNARNAProtein中心法規(guī)Whatisgene?基因:
—是遺傳信息的載體
—是一段特定的DNA序列(片段)
—是編碼RNA或蛋白質(zhì)的一段DNA片段
—是由編碼序列和調(diào)控序列組成的一段DNA片段基因主宰生物體的命運:微效基因的變異——生物體對生存環(huán)境的敏感度變化關(guān)鍵關(guān)鍵基因的變異——生物體疾病——死亡所以才有:“人類所有疾病均可視為基因病”之說注:如果外傷如燒傷、骨折等也算疾病的話,外傷應(yīng)該無法歸入基因病的行列。Genopathy問:兩個不相干的人,如果他們患得同一疾病,致病基因是否相同?再問:同卵雙生的孿生兄弟,他們患病的機(jī)會是否一樣,命運是否相同?┯┯┯┯
ATGC
TACG
┷┷┷┷┯┯┯┯┯
ATAGC
TATCG
┷┷┷┷┷┯┯┯┯
ATGC
TACG
┷┷┷┷┯┯┯
AGC
TCG
┷┷┷┯┯┯┯
ACGC
TGCG
┷┷┷┷┯┯┯┯
ATGC
TACG
┷┷┷┷增添缺失替換DNA分子(復(fù)制)中發(fā)生堿基對的______、______
和
,而引起的
的改變。替換增添缺失基因結(jié)構(gòu)基因變異的概念:英語句子中的一個字母的改變,可能導(dǎo)致句子的意思發(fā)生怎樣的變化?可能導(dǎo)致句子的意思不變、變化不大或完全改變THECATSATONTHEMATTHECATSITONTHEMATTHEHATSATONTHEMATTHECATONTHEMAT同理:替換、增添、缺失堿基對,可能會使性狀不變、變化不大或完全改變?;虻慕Y(jié)構(gòu)改變,一定會引起性狀的改變??原句:1.基因多態(tài)性與致病突變基因變異與疾病的關(guān)系2.單基因病、多基因病3.疾病易感基因
基因多態(tài)性polymorphism是指DNA序列在群體中的變異性(差異性)在人群中的發(fā)生概率>1%(SNP&CNP)<1%的變異概率叫做突變基因多態(tài)性特定的基因多態(tài)性與疾病相關(guān)時,可用致病突變加以描述SNP:散在單個堿基的不同,單個堿基的缺失、插入和置換。
CNP:DNA片段拷貝數(shù)變異,包括缺失、插入和重復(fù)等。同義突變、錯義突變、無義突變、移碼突變
致病突變生殖細(xì)胞基因突變將突變的遺傳信息傳給下一代(代代相傳),即遺傳性疾病。體細(xì)胞基因突變局部形成突變細(xì)胞群(腫瘤)。受精卵分裂基因突變的原因物理因素化學(xué)因素生物因素基因突變的原因(誘發(fā)因素)紫外線、輻射等堿基類似物5BU/疊氮胸苷等病毒和某些細(xì)菌等自發(fā)突變DNA復(fù)制過程中堿基配對出現(xiàn)誤差。UV使相鄰的胸腺嘧啶產(chǎn)生胸腺嘧啶二聚體,DNA復(fù)制時二聚體對應(yīng)鏈空缺,堿基隨機(jī)添補發(fā)生突變。胸腺嘧啶二聚體胸腺嘧啶胸腺嘧啶紫外線誘變物理誘變(physicalinduction)
5溴尿嘧啶(5BU)與T類似,多為酮式構(gòu)型。間期細(xì)胞用酮式5BU處理,5BU能插入DNA取代T與A配對;插入DNA后異構(gòu)成烯醇式5BU與G配對。兩次DNA復(fù)制后,使A/T轉(zhuǎn)換成G/C,發(fā)生堿基轉(zhuǎn)換,產(chǎn)生基因突變?;瘜W(xué)誘變(chemicalinduction)堿基類似物(baseanalogues)誘變AT5-BUA5-BUAAT5-BU5-BU(烯醇式)
(酮式)GGC1.生物變異的根本來源,為生物進(jìn)化提供了最初的原始材料,能使生物的性狀出現(xiàn)差別,以適應(yīng)不同的外界環(huán)境,是生物進(jìn)化的重要因素之一。2.致病突變是導(dǎo)致人類遺傳病的病變基礎(chǔ)?;蛲蛔兊囊饬x概述:腫瘤細(xì)胞惡性增殖特性(一)腫瘤細(xì)胞失去了生長調(diào)節(jié)的反饋抑制正常細(xì)胞受損,一旦恢復(fù)原狀,細(xì)胞就會停止增殖,但是腫瘤細(xì)胞不受這一反饋機(jī)制抑制。(二)腫瘤細(xì)胞失去了細(xì)胞分裂的接觸抑制。正常細(xì)胞體外培養(yǎng),相鄰細(xì)胞相接觸,長在一起,細(xì)胞就會停止增殖,而腫瘤細(xì)胞生長滿培養(yǎng)皿后,細(xì)胞可以重疊起生長。(三)腫瘤細(xì)胞表現(xiàn)出比正常細(xì)胞更低的營養(yǎng)要求。(四)腫瘤細(xì)胞生長有一種自分泌作用,自己分泌生長需要的生長因子和調(diào)控信號,促進(jìn)自身的惡性增殖。Whatisoncogene?癌基因——是基因組內(nèi)正常存在的基因,其編碼產(chǎn)物通常作為正調(diào)控信號,促進(jìn)細(xì)胞的增殖和生長。癌基因的突變或表達(dá)異常是細(xì)胞惡性轉(zhuǎn)化(癌變)的重要原因?!彩悄芫幋a生長因子、生長因子受體、細(xì)胞內(nèi)信號轉(zhuǎn)導(dǎo)分子以及與生長有關(guān)的轉(zhuǎn)錄調(diào)節(jié)因子等的基因。如何發(fā)現(xiàn)癌基因的呢?11910年,洛克菲勒研究院一個年輕的研究員Rous發(fā)現(xiàn),雞肉瘤細(xì)胞裂解物在通過除菌濾器以后,注射到正常雞體內(nèi),可以引起肉瘤,首次提出雞肉瘤可能是由病毒引起的。0.2m孔徑細(xì)菌過不去但病毒可以通過從病毒癌基因到細(xì)胞原癌基因的研究歷程:Roussarcomavirus,RSVthefirstcancer-causingretrovirus1958年,Stewart和Eddy分離出一種病毒,注射到小鼠體內(nèi)可以引起肝臟、腎臟、乳腺、胸腺、腎上腺等多種組織器官的腫瘤,因而把這種病毒稱為多瘤病毒。50年代末、60年代初,癌病毒研究成了一個極具想像力的研究領(lǐng)域,主流科學(xué)家開始進(jìn)入癌病毒研究領(lǐng)域polyomavirus這期間,Temin發(fā)現(xiàn)RSV有不同亞型,且引起細(xì)胞惡變程度不同,推測RNA病毒將其遺傳信息傳遞給了正常細(xì)胞的DNA。這與Crick提出的中心法則是相違背的讓事實屈從于理論還是堅持基于實驗的結(jié)果?VSTemin發(fā)現(xiàn)逆轉(zhuǎn)錄酶,1975年獲諾貝爾獎TeminCrickTemin的實驗設(shè)計:實驗設(shè)計簡單而巧妙:將合成DNA所需的“原料”,即A、T、C、G四種脫氧核苷酸,與破壞了外殼的RSV一起在體外40℃的條件下溫育一段時間結(jié)果在試管里獲得了一種新合成的大分子,它不能被RNA酶破壞,但卻可以被DNA酶所分解,證明這種新合成的大分子是DNA用RNA酶預(yù)先破壞RSV的RNA,再重復(fù)上述的試驗,則不能獲得這種大分子,說明這個DNA大分子是以RSV的RNA為模板合成的1969年,一個日本學(xué)者里子水谷來到Temin的實驗室,這是一個非常擅長實驗的年輕科學(xué)家。按Temin的設(shè)想,他們開始尋找RSV中存在“逆轉(zhuǎn)錄酶”的證據(jù)DNA
RNA
ProteinTranscriptionTranslationReplicationReplicationRe-Transcription修正中心法規(guī)據(jù)說,1975年Temin因發(fā)現(xiàn)逆轉(zhuǎn)錄酶而獲諾貝爾獎時,Bishop懊惱不已,因為早在1969年他就認(rèn)為Temin的RNADNA的“前病毒理論”有可能是正確的,并且也進(jìn)行了一些實驗,但不久由于資深同事的規(guī)勸而放棄了這方面的努力。但Bishop馬上意識到:逆轉(zhuǎn)錄酶的發(fā)現(xiàn)為逆轉(zhuǎn)錄病毒致癌的研究提供了一條新途徑。一個RSV,三個諾貝爾獎!??!1989年,UCSF的Bishop和Var
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供貨合同買賣合同范本
- 礦資源贈送合同范本
- 2025年多翼式鼓風(fēng)機(jī)項目合作計劃書
- 單位長期包車合同范本
- 寫轉(zhuǎn)賬合同范本
- 買賣介紹居間合同范本
- 2025年單相電能表項目建議書
- 農(nóng)村基建安全施工合同范本
- 個體企業(yè)轉(zhuǎn)讓合同范本
- 模具加工報價合同范本
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)項目驗收技術(shù)方案
- 2024年甘肅天水麥積山石窟藝術(shù)研究所招聘工作人員考試真題
- 人效的指標(biāo)體系及其“落地雙引擎”
- 2025年山東省榮成市屬事業(yè)單位招聘崗位及歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 醫(yī)學(xué)三基知識考試題庫及答案(護(hù)理+臨床)
- 火星表面材料分析-深度研究
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 《職業(yè)技能等級評價規(guī)范編制指南編制說明》
- 《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 畜禽養(yǎng)殖場惡臭污染物排放及其處理技術(shù)研究進(jìn)展
- 超聲內(nèi)鏡引導(dǎo)下穿刺活檢術(shù)的配合及護(hù)理
評論
0/150
提交評論