CCS_DSP开发环境经典教程_第1页
CCS_DSP开发环境经典教程_第2页
CCS_DSP开发环境经典教程_第3页
CCS_DSP开发环境经典教程_第4页
CCS_DSP开发环境经典教程_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 CCS概述本章概述 CCS (Code Composer Studio)软件开发过程、 CCS组件及 CCS使用的文件和 变量。CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处 理程序的编制和测试,它能够加速开发进程,提高工作效率。1.1 CCS概述CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS支持如下所示的开发周期的所有阶段。在使用本教程之前,必须完成下述工作:安装目标板和驱动软件。按照随目标板所提供的说明书安装。如果你正在用仿真器或目标板,具驱动软件已随目标板提供,你可以按产品的安装指南逐步安装。安装CCS.遵循安装说明书安装运行

2、CCS安装程序SETUP. SETUP程序允许CCS使用为目标板所安装的驱动程序CCS构成及接口见图1-1 0Code Composer StudioTargetCodtMileriQUfCf fi Pj 卜 #3凸 q。心 QaoAo 仁白P Sa 心 bacccclqLIt)Cade CLmDOisr pre cc!OLE a.pl jatQri using RTDKConfiguritiDH rootj ,一:、;%cd a (Cailg i尸 ,fRTDX口10而DSP.E ICSplug* In iDSP ipplicatian prograntJTGConpfer. arnbter

3、3rd ziariyMug 阊Cod* ytFieidbicin 啪15eKseutebieCo=* CompsercbuggerDSP/B OSTarget r,Wa噂Host entulalion support图1-1 CCS构成及接口代码生成工具奠定了 CCS所提供的开发环境的基础。 图1-2是一个典型的软件开发流 程图,图中阴影部分表示通常的C语言开发途径,其它部分是为了强化开发过程而设置的附加功能。C编译器(C compiler) 产生汇编语言源代码,具细节参见 TMS320C54x最优化C编译器用户指南。汇编器(assembler) 把汇编语言源文件翻译成机器语言目标文件,机器语

4、言格式为 公用目标格式(COFF),其细节参见 TMS320C54X汇编语言工具用户指南。连接器(linker)把多个目标文件组合成单个可执行目标模块。它一边创建可执行模块,一边完成重定位以及决定外部参考。连接器的输入是可重定位的目标文件和目标 库文件,有关连接器的细节参见TMS320C54X最优化C编译器用户指南和汇编语言工具用户指南。归档器(archiver )允许你把一组文件收集到一个归档文件中。归档器也允许你通过删除、替换、提取或添加文件来调整库,其细节参见 TMS320C54X汇编语言工具 用户指南。助记符到代数汇编语言转换公用程序(mnimonic_to_algebric asse

5、mbly translatorutility )把含有助记符指令的汇编语言源文件转换成含有代数指令的汇编语言源文 件,具细节参见 TMS320C54X汇编语言工具用户指南。你可以利用 建库程序(library_build utility )建立满足你自己要求的运行支持库”:其细节参见TMS320C54X最优化C编译器用户指南。运行支持库(run_time_support libraries) 它包括C编译器所支持的 ANSI标准运行 支持函数、编译器公用程序函数、浮点运算函数和C编译器支持的I/O函数,其细节参见TMS320C54X最优化C编译器用户指南。十六进制转换公用程序(hex conv

6、ersion utility) 它把COFF目标文件转换成TI-Tagged、ASCII-hex、 Intel、 Motorola-S、或 Tektronix 等目标格式,可以把转 换好的文件下载到EPROM编程器中,具细节参见TMS320C54x汇编语言工具用户指南。交叉引用列表器(cross_reference lister )它用目标文件产生参照列表文件,可显示符号及其定义,以及符号所在的源文件,具细节参见 TMS320C54x汇编语言工具用 户指南。绝对列表器(absolute lister )它输入目标文件,输出 .abs文件,通过汇编.abs文件 可产生含有绝对地址的列表文件。如果

7、没有绝对列表器,这些操作将需要冗长乏味的手工操作才能完成。1.3 CCS集成开发环境CCS集成开发环境允许编辑、编译和调试DSP目标程序1.3.1 编辑源程序CCS允许编辑C源程序和汇编语言源程序,你还可以在C语句后面显示汇编指令的方式来查看C源程序。集成编辑环境支持下述功能:用彩色加亮关键字、注释和字符串。以圆括弧或大括弧标记 C程序块,查找匹配块或下一个圆括弧或大括弧。在一个或多个文件中查找和替代字符串,能够实现快速搜索。取消和重复多个动作。获得 上下文相关”的帮助。用户定制的键盘命令分配。1.3.2 创建应用程序 _J ijEL 'i-r ip 琳 口 由 b E LLPI Q5

8、PrBlD& Corfig国 HEJjOjCM5bl IfiuLiJr国 HELLQHE | Q Lbiwu日 I Sdutec直 HELL"VECr 口T事的m应用程序通过工程文件来创建。工程文件中包括C源程序、汇编源程序、目标文件、库文件、连 接命令文件和包含文件。编译、汇编和连接文件 时,可以分别指定它们的选项。在 CCS中,可以选 择完全编译或增量编译,可以编译单个文件,也 可以扫描出工程文件的全部包含文件从属树,也 可以利用传统的 makefiles文件编译。1.3.3 调试应用程序CCS提供下列调试功能:设置可选择步数的断点在断点处自动更新窗口查看变量观察和编辑存

9、储器和寄存器观察调用堆栈对流向目标系统或从目标系统流出的数据采用探针工具观察,并收集存储器映象绘制选定对象的信号曲线估算执行统计数据观察反汇编指令和 C指令CCS提供GEL语言,它允许开发者向 CCS菜单中添加功能。TI DSP供在片仿真支持,它使得 CCS能够控制程序的执行,实时监视程序运行。增强型 JTAG连接提供了对在片仿真的支持,它是一种可与任意DSP系统相连的低侵扰式的连接。仿真接口提供主机一侧的JTAG连接,如TI XDS510。为方便起见,评估板提供在板JTAG仿真接口。在片仿真硬件提供多种功能:DSP的启动、停止或复位功能向DSP下载代码或数据检查DSP的寄存器或存储器硬件指令

10、或依赖于数据的断点包括周期的精确计算在内的多种记数能力主机和DSP之间的实时数据交换( RTDX )CCS提供在片能力的嵌入式支持;另外,RTDX通过主机和DSP API提供主机和DSP之间的双向实时数据交换,它能够使开发者实时连续地观察到DSP应用的实际工作方式。在目标系统应用程序运行时,RTDX也允许开发者在主机和 DSP设备之间传送数据,而且这些数据可以在使用自动 OLE的客户机上实时显示和分析,从而缩短研发时间。RTDX由目标系统和主机两部分组成。小的 RTDX库函数在目标系统 DSP上运行。开发 者通过调用RTDX软件库的API函数将数据输入或输出目标系统的 DSP,库函数通过在片仿

11、 真硬件和增强型JTAG接口将数据输入或输出主机平台,数据在DSP应用程序运行时实时传送给主机。PCTMS320 DSPRTDX COM APIRTDX Urgtl API图1-4 RTDX系统组成冬三F1E山>M±i±舀 9xmof在主机平台上,RTDX库函数与CCS一道协同工作。显示和分析工具可以通过COM API与RTDX通信,从而获取目标系统数据,或将数据发送给DSP应用例程。开发者可以使用标准的显示软件包,诸如 National Instruments LabVIEW, Quinn- Curtis Re-aTl ime Graphics Tools ,或Mi

12、crosoft Excel。同时,开发者也可研制他们自己的Visual Basic或Visual C+应用程序。图 1-5 RTDX 实例RTDX 能够记录实时数据,并可将其回放用于非实时分析。下述样本由 NationalInstruments LabVIEW 软件产生。在目标系统上,一个原始信号通过FIR滤波器,然后与原始信号一起通过RTDX 发送给主机。在主机上, LabVIEW 显示屏通过RTDX COM API 获取数据,并将它们显示在显示屏的左边。利用信号的功率谱可以检验目标系统中FIR滤波器是否正常工作。处理后的信号通过LabVIEW ,将其功率谱显示在右上部分;目标系统的原始信号

13、通过LabVIEW的FIR滤波器,再将其功率谱显示在右下部分。比较这两个功率谱便可确 认目标系统的滤波器是否正常工作。RTDX 适合于各种控制、伺服和音频应用。例如,无线电通信产品可以通过RTDX 捕捉语音合成算法的输出以检验语音应用程序的执行情况; 嵌入式系统也可从RTDX 获益; 硬磁盘驱动设计者可以利用 RTDX 测试他们的应用软件, 不会因不正确的信号加到伺服马达上而与驱动发生冲突; 引擎控制器设计者可以利用 RTDX 在控制程序运行的同时分析随环境条件而变化的系数。对于这些应用,用户都可以使用可视化工具,而且可以根据需要选择信息显示方式。1.5 CCS文件和变量本节简述CCS文件夹、

14、CCS的文件类型及 CCS环境变量1.5.1安装文件夹安装进程将在安装 CCS的文件夹(典型情况为:c:ti )中建立子文件夹。止匕外,子文件夹又建立在 Windows 目录下(c:windows or c:winnt )C:ti包含以下目录:bin .各种应用程序C2800bios。DSP/BIOS API的程序编译时使用 的文件C2800cgtools .Texas instruments 源代码生成工 具C2800examples .源程序实例C2800rtdx . RTDX 文件C2800tutorial .本手册中使用的实例文件ccbin .关于CCS环境的文件ccgel.与CCS一

15、起使用的 GEL文件 docs.PDS格式的文件和指南 myprojects .用户文件夹1.5.2文件扩展名bnCFa口口口口Qa严-LJ口 b 0 口B-山由BB田-BH ,口 由.巳 s I M m i M I 三 i:1-im! = i:1-三-E I * < 1|j _J白二 *-_j dirvers- 1 口kigin帛I I urrstdll以下目录结构被添加到Windows目录:tidrivers.各种DSP板驱动文件tiplugins.和CCS一起使用的插件程序tiuninstall.支持卸载 CCS软件的文件当使用CCS时,你将经常遇见下述扩展名文件:project.

16、mak. CCS使用的工程文件program.c. C程序源文件program.asm.汇编程序源文件filename.h. C程序的头文件,包含 DSP/BIOS API模块的头文件filename.lib.库文件project.cmd.连接命令文件program.obj.由源文件编译或汇编而得的目标文件program.out.(经完整的编译、汇编以及连接的)可执行文件project.wks.存储环境设置信息的工作区文件,program.cdb.配置数据库文件。采用 DSP/BIOS API的应用程序需要这类文件,对于 其它应用程序则是可选的。保存配置文件时将产生下列文件:programcf

17、g.cmd. 连接器命令文件programcfg.h28.头文件programcfg.s28.汇编源文件第二章开发一个简单的应用程序本章使用hello world实例介绍在CCS中创建、调试和测试应用程序的基 本步骤;介绍CCS的主要特点,为在 CCS中深入开发DSP软件奠定基础。在使用本实例之前,你应该已经根据安装说明书完成了CCS安装。建议在使用CCS时利用目标板而不是仿真器。如果没有CCS而只有代码生成工具和Code Composer或者是利用仿真器在进行开发,你只要按第二章和第四章中的步骤执行即可。2.1创建工程文件在本章中,将建立一个新的应用程序,它采用标准库函数来显示一条hello

18、 world 消息。1 .如果 CCS 安装在 c:ti中,则可在 c:timyprojects 建立 文件夹 adcshujucaiji 。(若将CCS安装在其它位置,则在相应位置创建文件夹 hellol。)3.2 .将c:tic2800tutorialhello1中的所有文件拷贝到上述新文件夹。从 Windows Start 菜单中选择 Programs -Code Composer StudioC540g CCStudio。(或者在桌面上双击Code Composer Studio 图标。)的伊>?国目DS P HkLTEDF(>i口帕构 FlLn C010 CoiiJOIi

19、 I旗 Ce C<WTnpowsrHH E七号idl t0" grrgK"艮黄kk '廿gi Uci'cn 1 口病史1r&明 det汪:CCS设置如果第一次启动 CCS时出现错误信息,首先确认是否已经安装了CCS。如果利用目标板进行开发,而不是带有CD-ROM 的仿真器,则可参看与目标板一起提供的文档以设置正确的 I/O 端口地址。4 .选择菜单项 Project fNew5 . 在 Save New Project As 窗 口 中 选 择 你 所 建 立 的 工 作 文 件 夹 并 点 击 Open 。 键 入 adcshujucaiji

20、 作 为 文 件 名 并 点 击 Save , CCS 就 创 建 了 adcshujucaiji.mak 的工程文件,它存储你的工程设置,并且提供对工程所使用的各种文件的引用。2.3 查看源代码1 .选择 Project -Add Files to Project,选择 hello.c 并点击 Open。2 .选择 Project - Add Files to Project,在文件类型框中选择*.asm。选择vector.asm并点击Open。该文件包含了设置跳转到该程序的C入口点的RESET中断(c_int00 )所需的汇编指令。(对于更复杂的程序,可 在vector.asm定义附加的中

21、断矢量,或者,可用 3.1节上所说明的 DSP/BIOS来自动定义所有的中断矢量)3 .选择 Project - Add Files to Project,在文件类型框中选择 *cmd。选择 hello.cmd并点击 Open, hello.cmd包含程序段到存储器的映射。里_j GEMeu卜 _j(Ea3D-富仃IICLULI klAK, 口加阍OS Confio国 HELW.IMI1Ml岫匕;j I kori-3 RTSJJR占 _J Soltce-图 HEL0.C4 .选择 Project - Add Files to Project ,进入编译库 文件夹(C:tic2800cgtool

22、slib )。在文件类型框 中选择*o* , *.lib。选择rts.lib并点击 Open, 该库文件对目标系统DSP提供运行支持。5 .点击紧挨着Project、Myhello.mak、Library 和Source旁边的符号+展开Project表,它称之为 Project View。注:打开 Project View如果看不到 Project View ,则选择 View一 Project 。如果这时选择过 Bookmarks 图 标,仍看不到 Project View ,则只须再点击 Project View 底部的文件图标即可。6 .注意包含文件还没有在Project View中出现

23、。在工程的创建过程中,CCS扫描文件间的依赖关系时将自动找出包含文件,因此不必人工地 向工程中添加包含文件。在工程建立之后,包含文件自动出现在ProjectView 中。如果需要从工程中删除文件,则只需在Project View中的相应文件上点击鼠标右键,并从弹出菜单中选择 Remove from project即可。在编译工程文件时,CCS按下述路径顺序搜索文件:包含源文件的目录编译器和汇编器选项的Include Search Path 中列出的目录(从左到右)1. 双击 Project View 中的文件 hello.c ,可在窗口的右半部看到源代码。2. 如想使窗口更大一些,以便能够即时

24、地看到更多的源代码,你可以选择Option fFon使窗口具有更小的字型。/* = hello.c = */#include <stdio.h>#include "hello.h"#define BUFSIZE 30struct PARMS str =2934,9432,213,9432,&str;/* = main =*/void main()#ifdef FILEIOint i;char scanStrBUFSIZE;char fileStrBUFSIZE;size_t readSize;FILE *fptr;#endif/* write a str

25、ing to stdout */puts("hello world!n");#ifdef FILEIO/* clear char arrays */for (i = 0; i < BUFSIZE; i+) scanStri = 0 /* deliberate syntax error */fileStri = 0;/* read a string from stdin */scanf("%s", scanStr);/* open a file on the host and write char array */fptr = fopen("

26、;file.txt", "w");fprintf(fptr, "%s", scanStr);fclose(fptr);/* open a file on the host and read char array */fptr = fopen("file.txt", "r");fseek(fptr, 0L, SEEK_SET);readSize = fread(fileStr, sizeof(char), BUFSIZE, fptr);printf("Read a %d byte char arr

27、ay: %s n", readSize, fileStr);fclose(fptr);#endif当没有定义FILEIO时,采用标准puts()函数显示一条hello world消息它只是一个简单程序。当定义了 FILEIO 后(见2.5节),该程序给出一个输入提示,并将输入字符串存放到一个文件中,然后从文件中读出该字符串,并把它输出到标准输出设备上。2.5修改程序选项和纠正语法错误CCS会自动将你所作的改变保存到工程设置中。在完成上节之后,如 果你退出了 CCS,则通过重新启动 CCS和点击Project -Open,即可返回 到你刚才停止工作处。 注:重新设置目标系统 DSP如果

28、第一次能够启动CCS,但接下来得到 CCS不能初始化目标系统DSP的出错信息则可选择 Debugs Reset DSP 菜单项。若还不能解决上述问题,你可能需要运 行你的目标板所提供的复位程序。为了编译和运行程序,要按照以下步骤进行操作:1 .点击工具栏按钮世 或选择Project -Rebuild All , CCS重新编译、 汇编和连接工程中的所有文件,有关此过程的信息显示在窗口底部的 信息框中。2 .选择File -Load Program,选择刚重新编译过的程序adshujucaiji.out(它应该在c:timyprojectsadshujucaiji 文件夹中,除非你把CCS安装在

29、别的地方)并点击 Open。CCS把程序加载到目标系统DSP上,并打开Dis_Assembly窗口,该窗口显示反汇编指令。(注意,CCS还会自动打开窗口底部一个标有Stdout的区域,该区域用以显示程序送往Stdout的输出。)3 .点击Dis_Assembly窗口中一条汇编指令(点击指令,而不是点击指令 的地址或空白区域)。按Fi键。CCS将搜索有关那条指令的帮助信息。 这是一种获得关于不熟悉的汇编指令的帮助信息的好方法。4 .点击工具栏按钮管 或选择Debugs Run。 注:屏幕尺寸和设置工具栏有些部分可能被Build窗口隐藏起来,这取决于屏幕尺寸和设置。为了看到整个工具栏,请在 Bui

30、ld窗口中点击右键并取消Allow Docking选择。当运行程序时,可在 Stdout窗口中看到hello world消息。在前一节中,由于没有定义FILEIO ,预处理器命令(#ifdef和#6口1。之间的程序没有运行。在本节中,使用CCS设置一个预处理器选项,并找出和纠正语法错误。1 .选择 Project - Options2 .从 Build Option 窗口的 Compiler 栏的 Category 列表中选择 Symbles。 在DefineSymbles框中键入 FILEIO 并按Tab键。注意,现在窗口顶部的编译命令包含-d选项,当你重新编译该程序时,程序中#ifdef

31、FILEIO 语句后的源代码就包含在内了。(其它选项可以是变化的,这取决于正在使用的DSP板。)3 .点击OK保存新的选项设置。4 .点击(Rebuild All)工具栏按钮或, 选择Project -RebuildAll。无 论何时,只要工程选项改变,就必须重新编译所有文件。5 .出现一条说明程序含有编译错误的消息,点击Cancel。在Build tab区£一:二日金二注11 4二人"必绅工自真工文51 NI:二。1二j_h&lla.c TM53I0C54工 ANSI C Cuapilwr 跟工士八曲 J . 10(t?i igq& iqqs Tnitg

32、;E”加州打d"h*l lci+c "-> sioin| 'HELLO ,C", line 5: enm:自印七祠 a "",|Mhj MHLRwd/|域移动滚动条,就可看到一条语法出错信息。6 .双击描述语法错误位置的红色文字。注意到 hello.c源文件是打开的, 光标会落在该行上:fileStri = 07 .修改语法错误(缺少分号)。注意,紧挨着编辑窗口题目栏的文件名旁 出现一个星号(*),表明源代码已被修改过。当文件被保存时,星号 随之消失。8 .选才F File -Save或按Ctrl+S可将所作的改变存入hello.

33、c。9 .点击(Incremental Build)工具栏按钮或选附 择 Project -Build, CCS 重新编译已被更新的文件。2.6使用断点和观察窗口当开发和测试程序时,常常需要在程序执行过程中检查变量的值。在 本节中,可用断点和观察窗口来观察这些值。程序执行到断点后,还可以 使用单步执行命令。1 . 选择 File 一 Reload Program.2 .双击Project View中的文件hello.c。可以加大窗口,以便能看到更多的 源代码。3 .把光标放到以下行上:fprintf(fptr, "S , scacStr);4 .点击工具栏按色 钮或按F9,该行显示为

34、高亮紫红色。(如果愿意的话,可通过 OptionfColor改变颜色。)5 .选才V ViewfWatch Window 。 CCS窗口的右下角会出现一个独立区域, 在程序运行时,该区域将显示被观察变量的值。,从弹出的表中选择Insert New*后藤匕口Str = unkrEFU id4ntifi&r6 .在 Watch Window 区域中点击鼠标Expression。7 .键入表达式*scanStr并点击OK。8 .注意局部变量*scanStr被列在Watch window中,但由于程序当前并未执行到该变量的LlUmain()函数,因此没有定义。9 .选择 Debugs Run

35、或按 F5。10 .在相应提示下,键入goodbye并点击OK。注意,Stdout框以蓝色显示输入的文字。还应注意,Watch Window中显 示出*scanStr的值。TEcanStr 二 joadbyo丹在键入一个输入字符串之后,程序运行并在断点处停止。程序中将要执行的下一行以黄色加亮。11 .点击(Step Over)工具栏按钮或处 按F10以便执行到所调用的函 数 fprintf()之后。12 .用CCS提供的step命令试验: Step Into (F2) Step over (F10) 计 Step Out (Shift F7) t Run to Cursor (Ctrl F10

36、) i;N13.点击工具栏按钮图 或按F5运行程序到结束。3 基于 DSP 的数据采集设计实例3.1 安装驱动程序( 1 )安装仿真器驱动程序连接接仿真器、 DSP 开发板,将仿真器经USB 接口脸上电脑之后系统提示 “使用找到新硬件向导 ” , 选择驱动文件“XDS 510 USB Driver ”, 完成之后系统提示新硬件可用。如下图所示。( 2 )安装仿真器的CCS 驱动找到驱动文件“XDS 510 CCS Driver”, 运行, 安装到 CCS3.3 软件所在的文件夹里面,具体如下图所示。3.2 启动 CCS 前的设置( 1 ) .打开 “Setup CCStudio V3.3 ”

37、,在 “Available Factory Boards ”下选择 “F2812XDS510 Emulator ”( 2) .在 “system configuration 下的” “F2812 XDS510 Emulator” 右键选择“properties ,”对其进项设置,具体设置如下图。( 3 ) . 点击 “Save and Quit ”完成芯片设置,系统自动启动CCS 3.3 操作界面。3.3 创建 AD 数据采集工程 选择“Project f New(程-新建)”,弹出工程建立对话框。(2) 在 Project 栏输入文件名 adshujucaiji 。工作目录是,其他两项也选默

38、认即可。(3) 单击完成按钮,将在工程窗口的 Project 下面创建adshujucaiji 工程。3.4 项工程中添加源文件( 1 ) 将从 ti 官方网站上下载的源文件复制到D:ccstudio_v3.3myprojectsadshujucaiji 文件夹内。(2)在 “projects 下右键点击工程名"adshujucaiji 选择 "add File to project将复制到文件夹“ adshujucaiji 中的源文件全部加载进来。如下图所示。”3.5 程序的编写3.5.1 程序编写思路( 1 ) . 一个 DSP 程序的构成。一个完整的 DSP 程序主要

39、由库文件, .c 源文件, .h 头文件以及.cmd 连接命令文件组成。( 2 ) .DSP 程序的编写思路 一个 DSP 程序要完成设想的功能,需要完成系统初始化,所使用的外设的初始 化,中断初始化,已经终端服务程序的编写。其中系统,外设初始化只需要对相应 的寄存器进行设置即可以完成。 中断服务程序根据我们所需要的处理算法进行编写。( 3) .现在总结起来DSP2812 其实可以分为以下几个部分: 时钟 ( DSP 工作的动力)外设( DSP 实现相应的功能都是有对应的外设来实现的)、中断和中断服务程序。 只要把这四个部分弄懂了, DSP 的使用应该就没多大问题。 DSP 的不同功能主要有

40、对应的外设实现,实际上只要掌握了一种外设的使用方(寄存器、中断、时钟的设 置)其他的都可以用同样的步骤使用。 首先将程序分成:系统初始化、所使用的外设的初始化、三级中断设置、中断服务程序、链接命令文件( .cmd 文件)和头文件几个部分。在系统初始化程序中了 解系统时钟、外设端口、看门狗的设置方法以及相关寄存器的使用,在外设初始化 程序中,对应该外设的使用原理,了解 “这个寄存器起什么作用,这样设置起什么作 用 ” ,掌握该外设设备(联想到所有的外设)初始化时必须设置的内容有哪些,需要 特殊设施的寄存器有哪些。 之后了解外设级、 PIE 级和 CPU 级中断初始化、开中断、关中断的设置方法、顺

41、序和原因。中断服务程序完成特殊的数据处理,按照自己的算法编写就可以,但 要注意在所有的中断服务程序中都要对三级中断进行相应的设置,以保证中断服务 程序能够连续不断地运行下去。在 .CMD 文件中完成对内部存储器外扩存储器的分 配,了解相关指令的作用和使用方法。3.5.2 程序工作流程 在进行软件设计之前,首先明确系统的工作流程,简单介绍如下:( 1 ) DSP 上电,等待采集开始命令。( 2 )使用事件管理器EVA 的通用定时器周期中断来触发ADC 的采集动作。( 3 )进行数据的校正和融合处理。( 4 )将融合后的数据经 eCAN 总线传送到上位机。本系统使用 EVA 的通用定时器1 的周期

42、中断来触发AD 的转换,当 ADC 完成SEQ1 中定义的端口的数据采集转换时,触发中断,进入中断服务程序。 DSP F2812 的 AD 为 12 位精度,由于各种因素的影响,测量值存在误差,需进行校正。校正完 成之后对该次测量获得的两个数值进行联合 kalman 滤波器数据融合, 完成融合操作 后将得到的数据存入 eCAN 总线的发送邮箱,将数据发送到上位机,一次操作完成。 之后退出中断程序,等待下一次中断触发信号的到来。本系统就按照怎样的顺序完 成真空度的数据采集、校正、融合和传输操作 。整个软件系统可以分为如下几个部分:系统初始化,用来完成置,各级中断的清零,系统时钟、外设时钟的设置,

43、踢除看门狗、初始化等操作;终端服务程序的设置,用来完成采样结果的移位操作、校正,联合DSP 寄存器的设AD 、 EVAkalman滤波器数据融合以及eCAN 总线的数据传输;链接命令文件的编写,由于使用了外扩存储器,为保证程序执行的速度,将程序空间分配到片内存储器,程序执行过程中产生的数据存储到片外存储器中。3.5.3 系统初始化sysctrl()( 1 )系统时钟设置,通过高速时钟预订标寄存器(HISPCP) 、低速时钟预订标寄存器(LOSPCP) 和锁相环寄存器设置,获得高、第速时钟,使能相关外设时钟。如下图所示( 2 )中断初始化首先关闭全局中断,关闭外设中断,并清除所左右的中断标志位。

44、DINT;/关闭总中断IER = 0x0000;/关闭外设中断IFR = 0x0000;/清中断标志其次初始化 PIE 控制寄存器, 由函数 InitPiectrl() 实现。 将所有的 PIE 级中断标志位和中断使能位清零。 并将 AD 中断所在组对应的中断应答寄存器中的相应位置零。最后使能PIE 向量表,由函数InitPieVectable() 实现。3.5.4 端口设置数据采集使用同步转换模式,对通道ADCINA0 和 ADCINB0 同时采样8 次。所以将这两个端口设置成普通输入输出端口且为输入模式。? void InitGpio(void)? EALLOW;? EDIS;?3.5.5

45、 数据采集外设AD 的设置F2812 的 ADC 模块有 16 个通道,排序器SEQ1 和 SEQ2 可以作为两个独立的 8通道模块,也可以级联成一个16 通道的模块。 AD 模块的内部结构如图 3.5 所示。虽然有两组输入通道和两个排序器,但是ADC 模块中只有一个转换器,同一时刻只能对 1 路输入信号进行转换,当有多路信号需要进行转换时, ADC 模块通过前端模拟多路复用器的控制,在同一时刻,只允许1 路信号输入到 ADC 的转换器中。在这两种工作方式下, AD 能够通过对相关寄存器的设置对需要转换的通道进行排序,通过模拟多路转换器每次转换的通道。每个排序器转换完成,将所转换通道的值存储在

46、其各自的转换结果寄存器中。我们可以通过设置排序寄存器,达到对一个通道进行多次转换的目的,这就是所说的过采样算法,对比单次采样转换,能够有效提高结果的精度2812的ADC可以工作在顺序采样和同步采样两种工作模式。顺序采样也就是按照 顺序对每个通道依次进行采样。而同步采样,是同时采样一对通道,即 ADCINA0 和ADCINB0 同时采样,ADCINA1 和ADCINB1 同时采样。我们使用级联排序器的同时采样模式。此时排序器SEQ1和SEQ2级联成最多16个通道的排序器。ADC模块只有接收到转换触发信号才可开始转换,如下表所示,我们采用事件管理器A的周期中断触发 AD 。SEQ1SEQ2级联SE

47、Q软件触发(软件 SOC)软件触发(软件 SOC)软件触发(软件 SOC)其件管理器 A (EVA SOC )事件管理器 B ( EVB SOC )事件管理器 A (EVA SOC )事件管理器 B ( EVB SOC )外部SOC引脚外部SOC引脚2812AD的16个通道是可以通过编程来进行选择在某一时刻究竟是哪一个通道 被选通进行采样的。这个功能就需要通过ADC输入通道选择序列控制寄存器ADCCHSELSEQx (x=1,2,3,4 )来实现。每一个输入通道选择序列控制寄存器都是16位的,被分成了 4个功能位 CONVxx ,每一个功能位占据寄存器的4位,在 AD转换的过程中,当前CONV

48、xx位定义了要进行采样和转换的引脚。为了能够对端口进行连续不断的采样,通用定时器1产生的AD采集触发信号频率应高于 AD采集频率。我们采用的ADCLK为1.875M ,每次触发共采集16次,加上采样窗口时间为6个ADCLK,转换频率约为13Ko EVA使用低速时钟HISPCP,它的的通用定时器 1的时钟为 60M ,周期为300,为连续增计数模式,它的周期匹 配频率为0.2M,能够使 ADC连续不断地采集数据。输入到AD的时钟如下图所示3.5.6 EVA的初始化使用EVA通用定时器 1的周期中断触发信号,EVA使用低速时钟 HISPCP,它的的通用定时器 1的时钟为60M ,周期为 300,为连续增计数模式,它的周期匹配频 率为0.2M,能够使ADC连续不断地采集数据。EVA的初始化程序如下? void InitEVA(void)? EALLOW;EvaRegs.

温馨提示

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

评论

0/150

提交评论