版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章CCS概述本章概述 CCS (Code Composer Studio)软件开发过程、CCS组件及 CCS使用的文件和变量。CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。1.1 CCS概述CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力 CCS支持如下所示的开发周期的所有阶段。在使用本教程之前,必须完成下述工作:。安装目标板和驱动软件。按照随目标板所提供的说明书安装。如果你正在用仿真器或目标板,具驱动软件已随目标板提供,你可以按产品的安装指南逐步安装。安装CCS.遵循安装说明书安装。运行CC
2、S安装程序SETUP. SETUP程序允许 CCS使用为目标板所安 装的驱动程序。CCS构成及接口见图1-1图1-1 CCS 构成及接口1.2 代码生成工具代码生成工具奠定了 CCS所提供的开发环境的基础。图 1-2是一个典型的软件开发流程图,图中阴影部分表示通常的C语言开发途径,其它部分是为了强化开发过程而设置的附加功能。C cofinc-ikirEPROMI MS520C54Xpragranwner图1-2tmnlion 日古©言的ntExecuxlable COFF file出脑如附 WarUbrafy Of 叫6cl * hlBS :Hew conversion Mil%45
3、 、 &DS£-relHlWlCHlisterAfcniwerMacro libraryArtiiwerwuroB配击白mgLinkifLibrary-buildLriiNtyRun-Umc-s 叩 pa"library口日山g卬舒自kin4s软件开发流程图1-2描述的工具如下:o C 编译器(C compiler)产生汇编语1=1源代码,具细节参见TMS320C54X最优化C编译器用户指南。口汇编器(assembler) 把汇编语言源文件翻译成机器语言目标文 件,机器语言格式为公用目标格式( COFF,其细节参见 TMS320C54X 汇编语言工具用户指南。连接器
4、(linker)把多个目标文件组合成单个可执行目标模块。它一边创建可执行模块,一边完成重定位以及决定外部参考。连接器的输入是可重定位的目标文件和目标库文件,有关连接器的细节参见 TMS320C54X最优化C编译器用户指南和汇编语言工具用户指南。口归档器(archiver )允许你把一组文件收集到一个归档文件中。归 档器也允许你通过删除、替换、提取或添加文件来调整库,具细节参 见TMS320C54X汇编语言工具用户指南。o助记符到代数汇编语言转换公用程序(mnimonic_to_algebricassembly translator utility)把含有助记符指令的汇编语言源文件转换成含有代数
5、指令的汇编语言源文件,具细节参见TMS320C54X汇编语言工具用户指南。o你可以利用 建库程序(library_build utility)建立满足你自己要求的“运行支持库”,其细节参见 TMS320C54X最优化C编译器用 户指南。o运行支持库(run_time_support libraries)它包括C编译器所支持的ANSI标准运行支持函数、编译器公用程序函数、浮点运算函数和C编译器支持的I/O函数,其细节参见 TMS320C54X最优化C编译 器用户指南。o 十六进制转换公用程序(hex conversion utility)它把COFF目标文件 转换成 TI-Tagged、ASCI
6、I-hex、 Intel 、 Motorola-S、或 Tektronix 等目标格式,可以把转换好的文件下载到EPRO哪程器中,其细节参见TMS320C54X汇编语言工具用户指南。o 交叉引用列表器(cross_reference lister )它用目标文件产生参 照列表文件,可显示符号及其定义,以及符号所在的源文件,具细节 参见TMS320C54X汇编语言工具用户指南。o绝对列表器(absolute lister )它输入目标文件,输出 .abs文件, 通过汇编.abs文件可产生含有绝对地址的列表文件。如果没有绝对 列表器,这些操作将需要冗长乏味的手工操作才能完成。1.3 CCS集成开发
7、环境CCS1成开发环境允许编冷?、编译和调试dsp目标程序。1.3.1 编辑源程序CCSfc许编辑C源程序和汇编语言源程序,你还可以在C语句后面显示汇编指令的方式来查看 C源程序。集成编辑环境支持下述功能:。用彩色加亮关键字、注释和字符串。以圆括弧或大括弧标记 C®序块,查找匹配块或下一个圆括弧或大括 弧。在一个或多个文件中查找和替代字符串,能够实现快速搜索。取消和重复多个动作。获得“上下文相关”的帮助。用户定制的键盘命令分配。1.3.2 创建应用程序应用程序通过工程文件来创建。工程文件中包申 _| GELhtea白_1 口邛值R 卓 HELLOJMMO DGP/EIOG Co而囱
8、HELLO.CMDEl LJ Indu*国 HELLO.HF-tl _ Libiaiie-s-1 " Sciurce图 HELLO.C图 VECTORS.ASMSSC源程序、汇编源程序、目标文件、库文件、连 接命令文件和包含文件。编译、汇编和连接文件 时,可以分别指定它们的选项。在CCSK可以选择完全编译或增量编译,可以编译单个文件,也 可以扫描出工程文件的全部包含文件从属树,也 可以利用传统的 makefiles文件编译。1.3.3 调试应用程序CCSI供下列调试功能:。设置可选择步数的断点O在断点处自动更新窗口o 查看变量。观察和编辑存储器和寄存器。观察调用堆栈。对流向目标系统或
9、从目标系统流出的数据采用探针工具观察,并收 集存储器映象。绘制选定对象的信号曲线。估算执行统计数据。观察反汇编指令和 C 指令CCS1供GE印言,它允许开发者向 CCS1单中添加功能。1.4 硬件仿真和实时数据交换TI DSP供在片仿真支持,它使得 CCSlt够控制程序的执行,实时监视程序运行。增强型JTAG4接提供了对在片仿真的支持,它是一种可与任意DSP系统相连的低侵扰式的连接。仿真接口提供主机一侧的JTAG4接,如TI XDS51Q为方便起见,评估板提供在板JTAG©真接口。在片仿真硬件提供多种功能:DSP勺启动、停止或复位功能。向DSPF载代码或数据。检查DSP勺寄存器或存储
10、器。硬件指令或依赖于数据的断点。包括周期的精确计算在内的多种记数能力口主机和DS吆问的实时数据交换( RTDXCCSI供在片能力的嵌入式支持;另外,RTDXffi过主机和DSP API提供主机和DS吆问的双向实时数据交换,它能够使开发者实时连续地观察到 DS而用的实际工作方式。在目标系统应用程序运行时,RTDXi允许开发者在主机和DS股备之间传送数据,而且这些数据可以在使用自动OLE的客户机上实时显示和分析,从而缩短研发时间。RTDH目标系统和主机两部分组成。小的RTDX?函数在目标系统 DSP1运行。开发者通过调用 RTD漱件库的API函数将数据输入或输出目标系统的 DSP库函数通过在片仿真
11、硬件和增强型JTAG® 口将数据输入或输出主机平台,数据在DSFS用程序运行时实时传送给主机。图1-4RTDXI统组成RTDX target API在主机平台上,RTDXI函数与CCS-道协同工作。显示和分析工具可以 通过COM API与RTDXS信,从而获取目标系统数据,或将数据发送给 DSFS用例程。开发者可以使用标准的显示软件包,诸如National Instruments 'LabVIEW, Quinn-Curtis ' Real-Time Graphics Tools,或 Microsoft Excel。同时,开发者也可研制他们自己的Visual Basic
12、 或Visual C+应用程序。图1-5 RTD双例RTDXt够记录实时数据,并可将其回放用于非实时分析。下述样本由National Instruments ' LabVIEW 软件产生。在目标系统上,一个原始信号通过FIR滤波器,然后与原始信号一起通过RTDXg送给主机。在主机上,LabVIEW显示屏通过RTDXCOMAPI获取数据,并将它们显示在显示屏的左边。 利用信号的功率谱可以检验目标系统中FIR滤波器是否正常工作。处理后的信号通过LabVIEW,将其功率谱显示在右上部分;目标系统的原始信号通过 LabVIEWFIR滤波器,再将其功率谱显示在右下部分。比较这两个功率谱 便可确认
13、目标系统的滤波器是否正常工作。RTDXS合于各种控制、伺服和音频应用。例如,无线电通信产品可以通 过RTDX甫捉语音合成算法的输出以检验语音应用程序的执行情况;嵌入式 系统也可从RTDXK益;硬磁盘驱动设计者可以利用RTDXW试他们的应用软件,不会因不正确的信号加到伺服马达上而与驱动发生冲突;引擎控制器设计者可以利用RTDXt控制程序运行的同时分析随环境条件而变化的系 数。对于这些应用,用户都可以使用可视化工具,而且可以根据需要选择 信息显小方式。1.5 CCS文件和变量本节简述CCS文件夹、CCS的文件类型及 CC的境变量。1.5.1 安装文件夹安装进程将在安装 CCS勺文件夹(典型情况为:
14、c:ti )中建立子文件夹。止匕外,子文件夹又建立在Windows目录下(c:windows or c:winntC:ti包含以下目录:c5400 _| biq?I cc l""l egtooJi _I docs _| ekamples _| Mdx _I lutarialh-U口&,田出"田±1H口.向-口 bin .各种应用程序口 C2800bios 。 DSP/BIOS API的程序编译时使用 的文件。C2800cgtools .Texas instruments 源代码生 成工具口 C2800examples .源程序实例二 C2800r
15、tdx . RTD戏件。C2800tutorial .本手册中使用的实例文件口 ccbin .关于CC绑境的文件。ccgel .与CCS-起使用的 GELC件臼u whn裳。docs .PDS格式的文件和指南-'dzo myprojects .用户文件夹: g 口|国描_| unrstdll1.5.2 文件扩展名以下目录结构被添加到Windows目录:o tidrivers.各种DSPfi驱动文件。tiplugins.和CCS-起使用的插件程序口 tiuninstall. 支持卸载CC漱件的文件当使用CCS寸,你将经常遇见下述扩展名文件:- project.mak.CCS6用的工程文件
16、:- program.c. C程序源文件program.asm. filename.h.filename.lib. project.cmd. program.obj. program.out. project.wks. program.cdb.汇编程序源文件C程序的头文彳包含 DSP/BIOS API模块的头文件库文件连接命令文件由源文件编译或汇编而得的目标文件(经完整的编译、汇编以及连接的)可执行文件存储环境设置信息的工作区文件,配置数据库文件。采用DSP/BIOS API的应用程序需要这类文件,对于其它应用程序则是可选的。保存配置文件时将产生下列文件:programcfg.cmd. 连接器
17、命令文件programcfg.h28.头文件汇编源文件programcfg.s28.第二章开发一个简单的应用程序本章使用hello world 实例介绍在CCS创建、调试和测试应用程序的 基本步骤;介绍 CCS勺主要特点,为在 CCSH采入开发DS啾件奠定基础。在使用本实例之前,你应该已经根据安装说明书完成了CCSe装。建议在使用CCS寸利用目标板而不是仿真器。如果没有CCS5只有代码生成工具和Code Composer或者是利用仿真器在进行开发,你只要按第二章和第四章 中的步骤执行即可。2.1创建工程文件在本章中,将建立一个新的应用程序,它采用标准库函数来显示一条 hello world 消
18、息。1 .如果CCS安装在 c:ti 中,则可在 c:timyprojects建立文件夹adcshujucaiji 。(若将CCS安装在其它位置,则在相应位置创建文件 夹 hellol o)2 .将c:tic2800tutorialhello1中的所有文件拷贝到上述新文件夹。3.从 Windows Start 菜单中选择 Programs - Code Composer StudioC5400一 CCStudio。(或者在桌面上双击 Code Composer Studio 图标。)注:CCS设置如果第一次启动 CCS时出现错误信息,首先确认是否已经安装了CCS如果利用目标板进行开发,而不是带
19、有CD-ROM勺仿真器,则可参看与目标板一起提供的文档以设置正确的I/O端口地址。4 .选择菜单项 Project - Newt5 .在Save New Project As 窗口中选择你所建立的工作文件夹并点击 Open。键入 adcshujucaiji作为文件名并点击Save, CCS就创建了adcshujucaiji.mak的工程文件,它存储你的工程设置,并且提供对工程所使用的各种文件的引用。2.2向工程添加文件1 .选择 Project -Add Files to Project,选择 hello.c 并点击 Open2 .选择 Project -Add Files to Projec
20、t,在文件类型框中选择 *asm。选才? vector.asm 并点击Open。该文件包含了设置跳转到该程序的C入口点的 RESET中断(c_int00 )所需的汇编指令。(对于更复杂的程序,可在vector.asm 定义附加的中断矢量,或者,可用 3.1节上所说 明的DSP/BIOS来自动定义所有的中断矢量 )3 .选择 Project - Add Files to Project ,在文件类型框中选择*cmd。选才? hello.cmd 并点击Open, hello.cmd 包含程序段到存储器的映射。LJ GEL hiesProjectw MyHEUUO.MAK '1 r SF7B
21、IOS Config g HELU0,CMD _ IndudsJ L brans?B RTS.UB凹 _| Squcs 图 HEL.O.C 图 VECTORSM4 .选择 Project -Add Files to Project ,进入编译库文件夹(C:tic2800cgtoolslib )。在 文件类型框中选择 *o* , *.lib 。选择rts.lib 并点击Open,该库文件对目标系统DSP提供运行支持。5 .点击紧挨着 Project 、Myhello.mak、Library 和Source旁边的符号+展开Project 表,它称 之为 Project View 。注:打开 Pro
22、ject View如果看不到 Project View,则选择 View-Project 。如果这时选择过 Bookmarks图标,仍看不到 Project View ,则只须再点击 Project View 底部的文件图标即可。6 .注意包含文件还没有在Project View 中出现。在工程的创建过程中,CCS扫描文件间的依赖关系时将自动找出包含文件,因此不必人工地向工程中添加包含文件。 在工程建立之后, 包含文件自动出现在 Project View 中。如果需要从工程中删除文件,则只需在 Project View中的相应文件上点击鼠标右键,并从弹出菜单中选择Remove from pro
23、ject 即可。在编译工程文件时,CCS按下述路径顺序搜索文件:口包含源文件的目录口编译器和汇编器选项的Include Search Path 中列出的目录(从左到右)2.3查看源代码1 .双击Project View 中的文件hello.c ,可在窗口的右半部看到源代码2 .如想使窗口更大一些,以便能够即时地看到更多的源代码,你可以选择Option - Font使窗口具有更小的字型。/* = hello.c = */#include <stdio.h>#include "hello.h"#define BUFSIZE 30struct PARMS str =
24、2934,9432,213,9432,&str;/* = main =*/void main() #ifdef FILEIOint i;char scanStrBUFSIZE;char fileStrBUFSIZE;size_t readSize;FILE *fptr;#endif/* write a string to stdout */ puts("hello world!n");#ifdef FILEIO/* clear char arrays */for (i = 0; i < BUFSIZE; i+) scanStri = 0 /* delibera
25、te syntax error */fileStri = 0; /* read a string from stdin */ scanf("%s", scanStr);/* open a file on the host and write char array */ fptr = fopen("file.txt", "w");fprintf(fptr, "%s", scanStr); fclose(fptr);/* open a file on the host and read char array */ fp
26、tr = fopen("file.txt", "r");fseek(fptr, 0L, SEEK_SET);readSize = fread(fileStr, sizeof(char), BUFSIZE, fptr);printf("Read a %d byte char array: %s n", readSize, fileStr); fclose(fptr);#endif 当没有定义FILEIO时,采用标准puts()函数显示一条hello world消息 它只是一个简单程序。当定义了FILEIO后(见2.5节),该程序给出一个
27、输入提示,并将输入字符串存放到一个文件中,然后从文件中读出该字符串, 并把它输出到标准输出设备上。2.4编译和运行程序CCS会自动将你所作的改变保存到工程设置中。在完成上节之后,如果你退出了 CCS则通过重新启动 CCSU点击Project -Open,即可返回到你刚才停止工作处。注:重新设置目标系统DSP如果第一次能够启动 CCS但接下来得到 CCS不能初始化目标系统 DSP的出错信息则可选择 Debug- Reset DSP菜单项。若还不能解决上述问题,你可能需要运行你的目标板所提供的复位程序。为了编译和运行程序,要按照以下步骤进行操作:1 .点击工具栏按钮 或选择Project - Re
28、build All , CCS重新编译、汇编和连接工程中的所有文件,有关此过程的信息显示在窗口底部的 信息框中。2 .选择 File - Load Program ,选择刚重新编译过的程序adshujucaiji.out(它应该在 c:timyprojectsadshujucaiji文件夹中,除非你把 CCS安装在别的地方)并点击Open。CCS把程序加载到目 标系统 DSP上,并打开 Dis_Assembly 窗口,该窗口显示反汇编指令。(注意,CCS还会自动打开窗口底部一个标有Stdout的区域,该区域用以显示程序送往Stdout的输出。)3 .点击Dis_Assembly窗口中一条汇编指
29、令(点击指令,而不是点击指令 的地址或空白区域)。按Fi键。CCS等搜索有关那条指令的帮助信息。 这是一种获得关于不熟悉的汇编指令的帮助信息的好方法。一一 W一4 .点 击工具栏按钮或选择 Debugs Run。注:屏幕尺寸和设置工具栏有些部分可能被 Build窗口隐藏起来,这取决于屏幕尺寸和设置。为了看 到整个工具栏,请在 Build窗口中点击右键并取消Allow Do函ng 选择。当运行程序时,可在 Stdout窗口中看到hello world 消息。hell5" I T八/ dwt/IHI IDEP RUNNING|Ln1rCol15 .5修改程序选项和纠正语法错误在前一节中,
30、由于没有定义 FILEIO ,预处理器命令 (#ifdef 和#6口1£ ) 之间的程序没有运行。在本节中,使用CCS设置一个预处理器选项,并找出和纠正语法错误。1 .选择 Project - Options 。2 .从 Build Option 窗口 的 Compiler 栏的 Category 列表中选择 Symbles。 在Define Symbles 框中键入 FILEIO 并按Tab键。注意,现在窗口顶部的编译命令包含-d选项,当你重新编译该程序时,程序中#ifdef FILEIO语句后的源代码就包含在内了。(其它选项可以是变化的,这取决于正在使用的DSP板。)3 .点击O
31、K保存新的选项设置。出选择 Project - Rebuild4 .点击(Rebuild All)工具栏按钮或All。无论何时,只要工程选项改变,就必须重新编译所有文件。5 .出现一条说明程序含有编译错误的消息,点击Cancel。在Build tab区-as -rtFlLElU -FrC ! XT! JECTSELLU 1 HtLLi.l1hello.c'WS320C54x ANSI C Compiler Version 3.10Copyright (c) 1996-1998 T白二am InStruraentE neorporatad ' hello.c"=*>
32、; main"HELLO .C"r line 53: error: expected a ""Mnppi域移动滚动条,就可看到一条语法出错信息。6 .双击描述语法错误位置的红色文字。注意到 hello.c 源文件是打开的, 光标会落在该行上:fileStri = 07 .修改语法错误(缺少分号)。注意,紧挨着编辑窗口题目栏的文件名旁 出现一个星号(*),表明源代码已被修改过。当文件被保存时,星号 随之消失。8 .选才F File - Save或按Ctrl+S 可将所作的改变存入hello.c 。蜡9 .点击(Incremental Build)工具栏按钮
33、或选择 Project - Build ,CCS重新编译已被更新的文件。*scanStr = unknown identifier2.6使用断点和观察窗口当开发和测试程序时,常常需要在程序执行过程中检查变量的值。在 本节中,可用断点和观察窗口来观察这些值。程序执行到断点后,还可以 使用单步执行命令。1. 选择 File -Reload Program.2 .双击Project View 中的文件hello.c 。可以加大窗口,以便能看到更 多的源代码。3 .把光标放到以下行上:fprintf(fptr," S , scacStr);4 .点击工具栏按色 钮或按F9,该行显示为高亮紫红
34、色。(如果愿意的话,可通过 Option f Color改变颜色。)5 .选才? View -Watch Window。CCS窗口的右下角会出现一个独立区域,在程序运行时,该区域将显示被观察变量的值6 .在 Watch Window区域中点击鼠标右键,从弹出的表中选择Insert NewExpression 。7 .键入表达式scanStr = gacdbye| | 卜业 Wat的1片 Wri |*| |scanStr 并点击OK8 .注意局部变量*scanStr 被列在 Watch window中,但由于程序 当前并未执行到该变量的 main()函数,因此没有定义。9 .选择 Debug-
35、Run 或按 F5。10 .在相应 提示下,键入goodbye 并点击OK)注意,Stdout框以 蓝色显示输入的文字。还应注意,Watch Window中显示出*scanStr 的值。在键入一个输入字符串之后,程序运行并在断点处停止。程序中将要执行的下一行以黄色加亮。11 .点击(Step Over)工具栏按钮或 乖 按F10以便执行到所调用的函数 fprintf() 之后。12 .用CCS提供的step命令试验:科 Step Into (F2) Step over (F10): Step Out (Shift F7) l Run to Cursor (Ctrl F10)13.点击工具栏按钮
36、/或按F5运行程序到结束。3基于DSP的数据采集设计实例3.1 安装驱动程序(1)安装仿真器驱动程序连接接仿真器、DSP开发板,将仿真器经USB接口脸上电脑之后系统提示“使用找到新硬件向导”,选择驱动文件“XDS 510 USB Driver ”,完成之后系统提示新硬件可用。如下图所示。>1浏览®在这些位置上拽索培隹赊姆序母.富根皿修珑彼限制或T餐歌u荆聚,道拓本峻铳和国目劫蝶怀,装安装找度大第3/L:M&小0L . 钺 F&EI用拍(2)安装仿真器的CCS驱动找到驱动文件“XDS 510 CCS Driver ",运行,安装到 CCS3.3软件所在的
37、文件夹里面,具体如下图所示。3.2 启动CCS前的设置(1) .打开 “Setup CCStudio V3.3",在 "Available Factory Boards ”下选择“F2812 XDS510 Emulator ”(2) .在“system configuration ”下的 "F2812 XDS510 Emulator ”右键选择“properties ”,对其进项设置,具体设置如下图。(3) .点击“Save and Quit ”完成芯片设置,系统自动启动 CCS 3.3操作界面。S 碎 5nl 卬 g3nCiBiuiH-nt i«m P
38、rnji»r1 Cw*H»i*n Hi * UH+ fiU |c4bMe>Um IY吟鑫仇h 31E5LD EadrlHr JiBSii Ioj,krw4Ql:x?J|&口|1-口口.1111q biw4 £ilw fjl« ti th 工 emiE_JConf i fir itarjFil*.酎*,*I酊开£Rj3.SCl : !_J An:r4li«L沏 yrlL M J ? TL I_ll-l板:S由 3工吃引口呢.=£*文伟名on恒鬲而F-N*划IB IcwrJpff+UfflTTdw N 而3.3 创
39、建AD数据采集工程 选择“Project New(工程一新建)”,弹出工程建立对话框。(2) 在Project 栏输入文件名 adshujucaiji 。工作目录是,其他两项也选默认即可。单击完成按钮,将在工程窗口的Project 下面创建 adshujucaiji 工程。SiiuUtor/CPO - TlS32CC2Bn (Siaulotar) - Code Caati: Studio|3Em*5. pj 中 |d+m<si付|。目sa回国g d I pr.jIF1 ?t it*f Fklii+. 口 皿 Fdlai+ 冷 kdsrujiu-u ji . >j tFr ojcin
40、t Ceeat lari?roj*clhllluiJUC ULockUxxn|D: XDCSli o9v2 -sj chiXidiftEktettblt C ou.1)Zl南口500IXI工yTHE型施片Sil3.4 项工程中添加源文件(1) 将从ti官方网站上下载的源文件复制到D:ccstudio_v3.3myprojectsadshujucaiji文件夹内。(2)在 “projects ”下右键点击工程名"adshujucaiji "选择 "add File toproject",将复制到文件夹“adshujucaiji ”中的源文件全部加载进来。如
41、下图所示。-曰凹由片匕,口馨一 .皆军| uliujuc*i j i. pjt.也j网 餐后i曰加 s Eu a i*梦 Filu-Q >el aiix t 'jj FrdiJAiC'Ll.+ & blvJvetlJiL. iJIAdri Fil/W t(i Frajiipptpjih尚且用EKBLx_C«diEtwl3rtrF=h F2«Lx_rjuT»«-x :h EKBLaJJiIiulllM-.s :i. _i -1. ii : . K::EPESliJv, STcSIi.iALibilTr il-ilrpia三4的
42、E?d.h hd-,h- -SffS Ij|Buj<eujii j>jf" "wd3UjuetlJl.iblB BD5| 打开以2J交年55sL (JJ|a11 Filax C" ")V 堪1rtl.HlLtEt.羽F-sr Ha lip, friTE II3.5 程序的编写3.5.1 程序编写思路(1) . 一个DSP程序的构成。一个完整的 DSP程序主要由库文件,.c源文件,.h头文件以及.cmd连接命令文件组成。(2) .DSP程序的编写思路一个DSP程序要完成设想的功能,需要完成系统初始化,所使用的外设的初始 化,中断初始化,已经终端
43、服务程序的编写。其中系统,外设初始化只需要对相应 的寄存器进行设置即可以完成。中断服务程序根据我们所需要的处理算法进行编写。(3) .现在总结起来 DSP2812其实可以分为以下几个部分:时钟(DSP工作的动力)外设(DSP实现相应的功能都是有对应的外设来实现的)、中断和中断服务程序。只要把这四个部分弄懂了,DSP的使用应该就没多大问题。DSP的不同功能主要有对应的外设实现,实际上只要掌握了一种外设的使用方(寄存器、中断、时钟的设置) 其他的都可以用同样的步骤使用。首先将程序分成:系统初始化、所使用的外设的初始化、三级中断设置、中断服务程序、链接命令文件( .cmd文件)和头文件几个部分。在系
44、统初始化程序中了解系统时钟、外设端口、看门狗的设置方法以及相关寄存器的使用,在外设初始化程序中,对应该外设的使用原理,了解这个寄存器起什么作用,这样设置起什么作用”,掌握该外设设备(联想到所有的外设)初始化时必须设置的内容有哪些, 需要特殊设施的寄存器有哪些。之后了解外设级、PIE级和CPU级中断初始化、开中断、关中断的设置方法、顺序和原因。中断服务程序完成特殊的数据处理,按照自己的算法编写就可以,但要注意在所有的中断服务程序中都要对三级中断进行相应的设置,以保证中断服务程序能够连续不断地运行下去。在.CMD文件中完成对内部存储器外扩存储器的分配,了解相关指令的作用和使用方法。3.5.2 程序
45、工作流程在进行软件设计之前,首先明确系统的工作流程,简单介绍如下:(1) DSP上电,等待采集开始命令。(2)使用事件管理器EVA的通用定时器周期中断来触发ADC的采集动作。(3)进行数据的校正和融合处理。(4)将融合后的数据经eCAN总线传送到上位机。本系统使用 EVA的通用定时器 1的周期中断来触发AD的转换,当ADC完成SEQ1中定义的端口的数据采集转换时,触发中断,进入中断服务程序。DSP F2812的AD为12位精度,由于各种因素的影响,测量值存在误差,需进行校正。校正完成之 后对该次测量获得的两个数值进行联合kalman滤波器数据融合,完成融合操作后将得到的数据存入eCAN总线的发
46、送邮箱,将数据发送到上位机,一次操作完成。之后退出中断程序,等待下一次中断触发信号的到来。本系统就按照怎样的顺序完成真 空度的数据采集、校正、融合和传输操作。DSP寄存器的设整个软件系统可以分为如下几个部分:系统初始化,用来完成置,各级中断的清零,系统时钟、外设时钟的设置,踢除看门狗、初始化AD EVA等操作;终端服务程序的设置,用来完成采样结果的移位操作、校正,联合kalman滤波器数据融合以及eCAN总线的数据传输;链接命令文件的编写,由于使用了外扩存储器,为保证程序执行的速度,将程序空间分配到片内存储器,程序执行过程中 产生的数据存储到片外存储器中。系统上电系统初始化检测开始?3.5.3
47、 系统初始化 sysctrl()(1)系统时钟设置,通过高速时钟预订标寄存器(HISPCP)、低速时钟预订标寄存器(LOSPCP)和锁相环寄存器设置,获得高、第速时钟,使能相关外设时钟。如下图所示void InitPeripheralUlocks(void) (EALLOW;SysCtrlR«gs .HISPCP .all =设置高速时钟 艺分频SysCtrlRegs .LOSPCP .all = 0x0002;册添4使能外围模块时钟SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;SysCtrlRgs.PCLKCR.bit.EVBEWCLK=1;SysCtrlRe
48、gs,PCLKCR.bit.SCIAEKCLK=l;SysCtrlRegs.PCLKCR.bit.SCIBENCLK=l;SysCtrlRegs.PCLRCR.bit.MCBSPEMCLK=1;SysCtrlRegs.PCLKCR.bit,SPIEUCLK=1;SysCtrlRegs.PCLKCR.bit.ECANENCLKl:SysCtrlRegs.PCLKCR.bit,ADCEWCLK=1二EDIS;J aa .声(2)中断初始化首先关闭全局中断,关闭外设中断,并清除所左右的中断标志位。DINT;/关闭总中断IER = 0x0000;/关闭外设中断IFR = 0x0000;/清中断标志其次
49、初始化 PIE控制寄存器,由函数 InitPiectrl() 实现。将所有的 PIE级中断 标志位和中断使能位清零。并将AD中断所在组对应的中断应答寄存器中的相应位置零。最后使能 PIE向量表,由函数 InitPieVectable() 实现。3.5.4 端口设置数据采集使用同步转换模式,对通道ADCINA0和ADCINB0同时采样 8次。所以将这两个端口设置成普通输入输出端口且为输入模式。? void InitGpio(void)? ? EALLOW;? GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2=0;? GpioMuxRegs.GPADIR.bit.GPIOA0=
50、0;? GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0=0;? GpioMuxRegs.GPBDIR.bit.GPIOB0=0;? GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4=1;? GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1;? GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=1;? GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=1;? GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1;? EDIS; ? 3.5.5 数据采
51、集外设 AD的设置F2812的ADC模块有16个通道,排序器SEQ1和SEQ2可以作为两个独立的8通道模块,也可以级联成一个16通道的模块。AD模块的内部结构如图3.5所示。虽然有两组输入通道和两个排序器,但是ADC模块中只有一个转换器,同一时刻只能对1路输入信号进行转换,当有多路信号需要进行转换时,ADC模块通过前端模拟多路复用器的控制,在同一时刻,只允许1路信号输入到ADC的转换器中。在这两种工作方式下,AD能够通过对相关寄存器的设置对需要转换的通道进行排序,通过模拟多路转换器每次转换的通道。每个排序器转换完成,将所转换通道 的值存储在其各自的转换结果寄存器中。我们可以通过设置排序寄存器,
52、达到对一 个通道进行多次转换的目的,这就是所说的过采样算法,对比单次采样转换,能够 有效提高结果的精度2812的ADC可以工作在顺序采样和同步采样两种工作模式。顺序采样也就是按照顺序对每个通道依次进行采样。而同步采样,是同时采样一对通道,即 ADCINA0和ADCINB0同时采样, ADCINA1和ADCINB1同时采样。我们使用级联排序器的同时采样模式。此时排序器SEQ1和SEQ2级联成最多 16个通道的排序器。ADC模块只有接收到转换触发信号才可开始转换,如下表所示,我们采用事件管理 器A的周期中断触发ADSEQ1SEQ2级联SEQ软件触发(软件SO。软件触发(软件 SO。软件触发(软件S
53、O。事件管理器 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个功能位 CONV型每一个功能位占据寄存器的4位,在 AD转换的过程中,当前 CONVxx位定义了要进行采样和转换的引脚。为了能够对端口进行连续不断的采样,通用定时器
54、1产生的AD采集触发信号频率应高于 AD采集频率。我彳门采用的ADCLK为1.875M ,每次触发共采集16次,加上采样窗口时间为6个ADCLK,转换频率约为13K。EVA使用低速时钟 HISPCP,它的的通用定日器 1的时钟为 60M,周期为300,为连续增计数模式,它的周期匹配频率为 0.2M,能够使ADC连续不断地采集数据。输入到AD的时钟如下图所示SYSCLKOUTHSPCLK3.5.6 EVA的初始化使用EVA通用定时器 1的周期中断触发信号,EVA使用低速时钟 HISPCP,它的的通用定日器1的时钟为 60M,周期为300,为连续增计数模式,它的周期匹配频率为0.2M,能够使 ADC连续不断地采集数据。EVA的初始化程序如下void InitEVA(void)? ? EALLOW; ? EvaRegs.T1CMPR=0x0080; ? EvaRegs.T1PR=0x012C;? EvaRegs.GPTCONA.bit.T1TOADC=1;? EvaRegs.T1CON.all=0x1042;? EvaRegs.T1CNT=0x0000;? EDIS; ? 3.5.7 中断设置(1) DSP的中断分为外设级
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年财达证券股份有限公司资产管理业务委员会招聘备考题库附答案详解
- 合肥市庐江县工业投资有限公司2025年公开招聘工作人员备考题库及答案详解(考点梳理)
- 2026年美区海怡实验幼儿园非在编教职工招聘备考题库含答案详解
- 2026年西藏一市公开遴选(招聘)公务员(工作人员)备考题库(含答案详解)
- 瓮安县公开引进2026届公费师范及“优师计划”毕业生招聘教师备考题库及完整答案详解1套
- 2026年临高县中等职业技术学校招聘同工同酬教师备考题库及完整答案详解一套
- 海安市文化艺术中心2026年公开招聘事业编制工作人员备考题库及答案详解(新)
- 2025年区块链跨境电商供应链金融的监管分析报告
- 2025年工业CT在工业自动化质量控制报告
- 安全信号实操模拟卷
- 2024人形机器人产业半年研究报告
- 筋膜刀的临床应用
- 生物医学分析化学方程式总结
- 中国石化《炼油工艺防腐蚀管理规定》实施细则(最终版)
- 家庭系统疗法
- JCT640-2010 顶进施工法用钢筋混凝土排水管
- 四川省遂宁市2024届高三上学期零诊考试高三生物答案
- GB/T 70.3-2023降低承载能力内六角沉头螺钉
- 锅炉焊接工艺规程
- 中学生地理奥林匹克竞赛(高中组)试题
- fy17起搏器销售-t10t20说明书ifu pacetchinese livetec
评论
0/150
提交评论