第2讲 第2章 F2812结构与最小系统 2013-3-4_第1页
第2讲 第2章 F2812结构与最小系统 2013-3-4_第2页
第2讲 第2章 F2812结构与最小系统 2013-3-4_第3页
第2讲 第2章 F2812结构与最小系统 2013-3-4_第4页
第2讲 第2章 F2812结构与最小系统 2013-3-4_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DSP控制器原理与应用第2章F2812总体结构、最小系统程序开发流程1DSPF2812的总体结构框图14级CPU中断输入2TMS320F2812(DSP)总体结构(1)CPU:32位字长(2)存储器映像:片内18KSARAM,32KFlash,2KOTP,外设寄存器帧(外设帧,相当于存储器映像外设寄存器)(3)引导ROM:每片2812出厂时均在引导ROM固化有一段启动引导程序和常用数学函数如sin的查找表。(4)片外存储器接口(XINTF):可编程外存储器接口的时序参数,实现与各种异步存储器芯片的无缝连接。思考题2-1:什么叫无缝接口与有缝接口?(5)时钟与系统控制单元:时钟模块产生CPU所需的工作频率。系统控制单元包括看门狗和低功耗模式控制。3DSPF2812总体结构(6)CPU定时器:长时定时器,可定时数小时、数天。思考题2-2:当定时器输入时钟频率为上兆赫兹时,用什么办法能定时数小时或更长时间?(7)外设中断扩展模块:DSP内核中断输入(外部不可见)INT1~INT12每个扩展成8个,共计128=96个中断输入。(8)外部中断:DSP引脚中断请求输入XINT1、XINT2、XNMI_XINT13(9)事件管理器模块:比较单元、正交编码单元、捕获单元、事件定时器、事件定时器PWM引脚,PWM引脚,事件中断等。思考题2-3:事件定时器与CPU定时器有什么区别?各用在什么场合?4DSPF2812总体结构(10)模数转换器(A/D):12位单极性A/D转换器,集成两个8通道模拟多路开关和采样保持器。思考题2-4:设A/D转换器模拟电源输入设定为3.3V,则数据D与输入电压V之间的转换表达式是什么?(11)串口外设:包括2个异步串口(SCI-A,SCI-B)和1个同步串口(SPI),一个CAN总线接口,一个多通道缓冲串行接口(McBSP)。思考题2-5:异步/同步串口在异/同上差别是什么?(12)通用输入/输出口(GPIO):56根I/O引脚,可编程配置成特定外设专用引脚。(13)仿真逻辑单元:JTAG(JiontTestActionGroup,联合测试行动组,一个国际标准化组织)接口,要接专用DSP仿真器才能调试。5176引脚LQFP封装TMS320F2812芯片6TMS320F2812外地址总线引脚地址最高位XA[18]AB=19根地址线寻址空间多少?7TMS320F2812外数据总线引脚数据最高位XD[15]8F2812外存储器接口(XINTF)读写引脚写信号XWE读信号XRD9F2812工作模式(微处理器/微计算机模式)

配置引脚工作模式配置引脚XMP/MCXMP/MC=”1“,配置成微处理器模式,外存储器寻址空间Zone7片选信号XZCS7有效,将Zone7作为程序仿真RAM,初始化启动!XMP/MC=”0“,配置成微计算机模式,XZCS7无效,DSP从片内FLASH上电复位初始化启动!10F2812外存储器接口(XINTF)地址信号11F2812外存储器接口(XINTF)数据信号12F2812外存储器接口(XINTF)读写信号13F2812外存储器接口(XINTF)片选信号14F2812的工作模式设置信号15外存储器接口(ExternalInterface,XINTF)Theexternalinterfaceisanon-multiplexed(非多路的)asynchronous(异步)bus,similartotheC240xexternalinterface.Theexternalinterfaceonthe2812ismappedintofivefixedzones(5个存储区块:Zone0,Zone1,Zone2,Zone6,Zone7).16F2812的5个存储器区寻址空间Zone0:8K×16Zone1:8K×16Zone2:512K×16Zone6:512K×16Zone7:16K×16(mappedhereifMP/MC=1)思考题2-6:外寻址空间1M用多少根地址线?32位地址值表示1M地址范围的数值表达式是什么?5个存储器区总容量超过地址总线可寻址的范围时,如何实现一个地址总线寻址多个存储器区?请上网查阅资料解答!17MemoryMap182812XINTFsignals(多存储区Zone)

1920扩展存储器的最小系统需要的控制总线CBXRD(读控制信号,输出/高阻)ReadEnable.Active-lowreadstrobe.Thereadstrobewaveformisspecified,perzonebasis,bytheLead,Active,andTrailperiodsintheXTIMINGxregisters.NOTE:TheXRDandXWEsignalsaremutuallyexclusive.思考题2-7:

输出变高阻在什么情况下发生?高阻有何用?21扩展存储器的最小系统需要的控制总线CBXWE引脚(写控制信号,输出/高阻)WriteEnable.Active-lowwritestrobe.Thewritestrobewaveformisspecified,perzonebasis,bytheLead,Active,andTrailperiodsintheXTIMINGxregisters.22扩展存储器的最小系统需要的控制总线CBXR/W(读高/写低状态信号,输出/高阻)ReadNotWriteStrobe.Normallyheldhigh.Whenlow,XR/Windicateswritecycleisactive;whenhigh,XR/Windicatesreadcycleisactive.23扩展存储器的最小系统需要的控制总线CBXREADY引脚(外设准备好,输入)ReadySignal.Indicatesperipheralisreadytocompletetheaccesswhenassertedto1.XREADYcanbeconfiguredtobeasynchronousoranasynchronousinput.Seethetimingdiagramsformoredetails.24扩展存储器的最小系统需要的控制总线CBXHOLD(外设占用请求,输入)ExternalHoldRequest.XHOLD,whenactive(low),requeststheXINTFtoreleasetheexternalbusandplaceallbusesandstrobesintoahigh-impedancestate.TheXINTFwillreleasethebuswhenanycurrentaccessiscompleteandtherearenopendingaccessesontheXINTF.思考题2-8:无外设占用总线请求时,该引脚设应何处理?25扩展存储器的最小系统需要的控制总线CBXHOLDA(外设占用应答,输出)ExternalHoldAcknowledge.XHOLDAisdrivenactive(low)whentheXINTFhasgrantedaXHOLDrequest.AllXINTFbusesandstrobesignalswillbeinahigh-impedancestate.XHOLDAisreleasedwhentheXHOLDsignalisreleased.ExternaldevicesshouldonlydrivetheexternalbuswhenXHOLDAisactive(low).思考题2-9:无外设占用总线请求时,该引脚设应何处理?26扩展存储器的最小系统需要的控制总线CBXZCS0AND1(外存储器扩展接口块0/块1片选信号)XINTFZone0andZone1ChipSelect.XZCS0AND1isactive(low)whenanaccesstotheXINTFZone0orZone1isperformed.27扩展存储器的最小系统需要的控制总线CBXZCS6AND7(外存储器扩展接口块6/块7片选信号)XINTFZone6andZone7ChipSelect.XZCS6AND7isactive(low)whenanaccesstotheXINTFZone6orZone7isperformed.28扩展存储器的最小系统需要的控制总线CBXZCS2(外存储器扩展接口块片选信号2)XINTFZone2ChipSelect.XZCS2is(low)whenanaccesstotheXINTFZone2isperformed.29扩展存储器的最小系统需要的控制总线CBXMP/MC引脚(工作模式选择,输入)Microprocessor(XMP)/Microcomputer(MC)ModeSelect.Switchesbetweenmicroprocessorandmicrocomputermode.Whenhigh,Zone7isenabledontheexternalinterface.Whenlow,Zone7isdisabledfromtheexternalinterface,andon-chipbootROMmaybeaccessedinstead.ThissignalislatchedintotheXINTCNF2registeronaresetandtheusercanmodifythisbitinsoftware.ThestateoftheXMP/MCpinisignoredafterreset.思考题2-10:当程序存储器映射到外部程序空间时,该引脚设应何处理?30扩展存储器的最小系统需要的控制总线CBXRS(CPU复位引脚,输入)DeviceReset(in)andWatchdogReset(out).Devicereset.XRScausesthedevicetoterminateexecution.ThePCwillpointtotheaddresscontainedatthelocation0x3FFFC0.WhenXRSisbroughttoahighlevel,executionbeginsatthelocationpointedtobythePC.ThispinisdrivenlowbytheDSPwhenawatchdogresetoccurs.Duringwatchdogreset,theXRSpinwillbedrivenlowforthewatchdogresetdurationof512XCLKINcycles.3132扩展存储器的最小系统需要的控制总线CB仿真器JTAG接口引脚(共7根)TRST,TCK,TMS,TDI,TDO,EMU0,EMU1机械接口:IDC1(7×2双排插座)+5V用于烧写片上FLASH+3.3V用于仿真!33DSPF2812的最小应用系统34DSPF2812的软件开发工具35DSPF2812的软件开发工具(1)编译器(2)汇编器(3)链接器(4)归档器(5)运行时支持库(6)建库器(7)HEX转换器(8)绝对列表器和交叉引用列表器(9)C++名称复原器(10)调试器(11)GEL语言(12)DSP/BIOS36DSPF2812的汇编语言开发基础COFF文件与汇编器指令初始化段.text.data.sect“sectionname”未初始化段.bsssymbol,sizeinwordssymbol .usect“sectionname”,sizeinwords37DSPF2812的汇编语言开发基础COFF文件与汇编器指令定义段的指令:如.text,.data,.bss,.sect,.usect等;建立数据表以初始化变量或内存的指令:如.byte,.word,.int,.float,.space等;设置段程序计数器(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的汇编语言开发基础链接器与链接命令文件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的汇编语言开发基础/**************************************************//*demo.cmd*//***************************************************/file1.objfile2.obj /*输入目标文件*/–odemo.out /*链接器选项,用于生成输出文件demo.out*/MEMORY{PAGE0:ROM:origin=0C00h,length=1000h/*定义一个名为ROM的程序内存*/PAGE1:RAM:origin=60h,length=20h/*定义一个名为RAM的数据内存*/}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语言数据类型标识符和常数(IdentifiersandConstants)数据类型(DataType)类型转换(Conversion)表达式(Expression)asm表达式41DSPF2812的C语言编程C语言头文件assert.hcassert.h定义了一些assert宏,这些宏用于在程序运行时插入一些诊断出错信息;ctype.hcctype.h申明了一些字符测试(如测试是字母还是打印字符)及字符转换函数;errno.hcerrno.h申明了一些errno变量,这些errno变量定义了数学函数的调用错误(如无效的参数或无效的结果),在调用math.h中的数学函数时,用户代码可以读取errno的值来检查错误条件;float.h/limits.hcfloat.h/climits.h定义了一些宏,这些宏代表TMS320C28x的数值范围和极限等(如整形和浮点数的范围、上下限等);cmath.hcmath.h包含了浮点数学函数的申明(如三角函数、指数函数等);setjmp.hcsetjmp.h定义了一些类型、宏和函数,经常用于深度嵌套函数的立即返回;stdarg.hcstdarg.h定义了一些宏和类型,可帮助用户使用那些可变参数的函数;stddef.hcstddef.h定义了一些类型和宏,这些类型和宏被某些运行时支持函数使用;stdio.hcstdio.h包含了一些类型、宏和结构体定义以及标准输入/输出函数的申明;stdlib.hcstdlib.h包含一些公共库函数的申明,这些库函数包括内存管理、搜索和排序、字符串转换等;string.h:cstring.h包含一些字符串操作函数的申明,如字符串的移动、组装、比较等;time.hctime.h包含了一些日期和时间的操作函数申明;—new.h申明了一些动态内存管理的C++函数;—Typeinfo.h定义了一个type_info的结构,用于运行时描述C++的类型信息;42DSPF2812的C语言编程C语言预编译器指令

用于宏定义,如:#define,#undef等;用于其它文件的引用,如:#include等;用于条件编译,如:#ifdef,#ifndef,#if,#else,#endif等;其它语句,如:#line,#error,#pragma等;预定义宏名宏功能描述__LINE__该宏展开后用于显示当前行号(ANSI标准)__FILE__该宏展开后用于显示当前源文件名(ANSI标准)__DATE__该宏展开后用于显示当前编译日期(格式mmddyyyy)(ANSI标准)__TIME__该宏展开后用于显示当前编译时间(格式hh:mm:ss)(ANSI标准)_INLINE在编译器使用—x或—x2选项下展开为1,否则未定义†__TMS320C28XX__该宏展开为1(用于标识C28x处理器)43DSPF2812的C语言编程C语言预编译器指令

#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++编译器默认的段和段分配

初始化段

.text段:包含所有的可执行代码以及常数;.cinit段和.pinit段:包含用于全局变量或静态变量初始化所需的表和常数;.const段:包含字符串常数以及用const关键词限定的全局和静态变量以及其初始化值。.econst段:包含大内存模型下的字符串常数以及用farconst限定的全局和静态变量的申明和初始化值(存放于远内存—farmemory中)。.switch段:包含用于switch语句的表。未初始化段.bss段和.ebss段:这个段为全局变量和静态变量保留空间。.stack段:存放C的系统堆栈,堆栈用于为函数传递参数或者为局部变量创建存储空间。.const段:包含字符串常数以及用const关键词限定的全局和静态变量以及其初始化值。.system段和.esystem段:保留空间用于动态内存分配,如调用malloc()函数。45DSPF2812的C语言编程C/C++编译器默认的段和段分配

段内存类型页.textROM或RAMPage0.cinitROM或RAMPage0.pinitROM或RAMPage0.switchROM或RAMPage0,1.constROM或RAMPage1.econstROM或RAMPage1.bssRAMPage1.ebssRAMPage1.stackRAMPage1.sysmemRAMPage1.esysmemRAMPage146DSPF2812的C语言编程工程模板

47DSPF2812的C语言编程工程模板

文件名文件内容介绍头文件(*.h)DSP281x_GlobalPrototypes.h包含DSP外设初始化函数的全局申明DSP281x_Device.h包含CPU寄存器定义和全局位控制的宏定义、类型宏定义以及所有的外设头文件DSP281x_DefaultIsr.h包含所有缺省中断服务子程序的函数申明DSP281x_PieVect.h包含中断向量表结构体的定义DSP281x_SWPrioritizedIsrLevels.h包含中断优先级的宏定义DSP281x_DevEmu.h外设头文件,包含片内仿真单元寄存器的位定义DSP281x_SysCtrl.h外设头文件,包含系统控制寄存器的位定义DSP281x_CpuTimers.h外设头文件,包含CPU32位定时器外设寄存器的位定义DSP281x_Adc.h外设头文件,包含片内ADC外设寄存器的位定义DSP281x_PieCtrl.h外设头文件,包含PIE外设寄存器的位定义DSP281x_XIntrupt.h外设头文件,包含外部中断寄存器的位定义DSP281x_Xintf.h外设头文件,包含外设接口寄存器的位定义DSP281x_ECan.h外设头文件,包含ECAN接口寄存器的位定义DSP281x_Ev.h外设头文件,包含事件管理器外设寄存器的位定义DSP281x_Gpio.h外设头文件,包含通用I/O外设寄存器的位定义DSP281x_Mcbsp.h外设头文件,包含McBSPs外设寄存器的位定义48DSPF2812的C语言编程工程模板

DSP281x_Sci.h外设头文件,包含SCI接口寄存器的位定义DSP281x_Spi.h外设头文件,包含SPI接口寄存器的位定义DSP281x_Examples.h——User.h用户自定义的头文件源文件(*.c,*.asm)DSP281x_CodeStartBranch.asm汇编语言程序,包含一条调转指令,将程序分支到_c_int00处DSP281x_DefaultIsr.c缺省的中断服务程序的定义文件DSP281x_GlobalVariableDefs.c采用pragma预编译器指令为外设寄存器结构体分配数据段DSP281x_PieCtrl.c外设扩展模块(PIE)的控制寄存器初始化程序DSP281x_PieVect.cPIE向量表的初始化程序DSP281x_SysCtrl.c时钟与系统控制外设的初始化程序User.c用户自定义的源文件(包含主函数main)运行时支持库文件(*.lib)Rts2800.lib运行时支持函数库Rts2800_ml.lib大内存模型下的运行时支持函数库链接器命令文件(*.cmd)DSP281x_Headers_nonBIOS.cmd用于外设的内存映像寄存器分配的命令文件F2812_EzDSP_RAM_lnk.cmd一个将代码和数据段分配到DSPF2812的片内存储器H0中的命令文件的例子(用户可修改它以符合实际目标系统的情况)49DSPF2812的C语言编程寄存器定义和使用

/*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论