CCS_DSP开发环境经典教程

上传人:馨*** 文档编号:158222434 上传时间:2022-10-03 格式:DOC 页数:22 大小:340.50KB
收藏 版权申诉 举报 下载
CCS_DSP开发环境经典教程_第1页
第1页 / 共22页
CCS_DSP开发环境经典教程_第2页
第2页 / 共22页
CCS_DSP开发环境经典教程_第3页
第3页 / 共22页
资源描述:

《CCS_DSP开发环境经典教程》由会员分享,可在线阅读,更多相关《CCS_DSP开发环境经典教程(22页珍藏版)》请在装配图网上搜索。

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

2、装。o 运行CCS安装程序SETUP. SETUP程序允许CCS使用为目标板所安装的驱动程序。CCS构成及接口见图1-1。图1-1 CCS构成及接口1.2 代码生成工具 代码生成工具奠定了CCS所提供的开发环境的根基。图1-2是一个典型的软件开发流程图,图中阴影局部表示通常的C语言开发途径,其它局部是为了强化开发过程而设置的附加功能。图1-2 软件开发流程图1-2描述的工具如下:o C编译器(C compiler) 产生汇编语言源代码,其细节参见TMS320C54x最优化C编译器用户指南。o 汇编器(assembler)把汇编语言源文件翻译成机器语言目标文件,机器语言格式为公用目标格式COFF

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

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

5、目标文件转换成TI-Tagged、ASCII-hex、 Intel、 Motorola-S、或 Tektronix 等目标格式,可以把转换好的文件下载到EPROM编程器中,其细节参见TMS320C54x汇编语言工具用户指南。o 穿插引用列表器cross_reference lister它用目标文件产生参照列表文件,可显示符号及其定义,以及符号所在的源文件,其细节参见TMS320C54x汇编语言工具用户指南。o 绝对列表器absolute lister它输入目标文件,输出.abs文件,通过汇编.abs文件可产生含有绝对地址的列表文件。如果没有绝对列表器,这些操作将需要冗长乏味的手工操作才能完成。

6、1.3 CCS集成开发环境CCS集成开发环境允许编辑、编译和调试DSP目标程序。1.3.1 编辑源程序CCS允许编辑C源程序和汇编语言源程序,你还可以在C语句后面显示汇编指令的方式来查看C源程序。集成编辑环境支持下述功能:o 用彩色加亮关键字、注释和字符串。o 以圆括弧或大括弧标记C程序块,查找匹配块或下一个圆括弧或大括弧。 o 在一个或多个文件中查找和替代字符串,能够实现快速搜索。o 取消和重复多个动作。o 获得“上下文相关的帮助。o 用户定制的键盘命令分配。1.3.2创立应用程序应用程序通过工程文件来创立。工程文件中包括C源程序、汇编源程序、目标文件、库文件、连接命令文件和包含文件。编译、

7、汇编和连接文件时,可以分别指定它们的选项。在CCS中,可以选择完全编译或增量编译,可以编译单个文件,也可以扫描出工程文件的全部包含文件附属树,也可以利用传统的makefiles文件编译。1.3.3 调试应用程序CCS提供以下调试功能:o 设置可选择步数的断点o 在断点处自动更新窗口o 查看变量o 观察和编辑存储器和存放器o 观察调用堆栈o 对流向目标系统或从目标系统流出的数据采用探针工具观察,并收集存储器映象o 绘制选定对象的信号曲线o 估算执行统计数据o 观察反汇编指令和C指令CCS提供GEL语言,它允许开发者向CCS菜单中添加功能。1.4 硬件仿真和实时数据交换TI DSPDSP供在片仿真

8、支持,它使得CCS能够控制程序的执行,实时监视程序运行。增强型JTAG连接提供了对在片仿真的支持,它是一种可与任意DSP系统相连的低侵扰式的连接。仿真接口提供主机一侧的JTAG连接,如TI XDS510XDS510 仿真器。为方便起见,评估板提供在板JTAG仿真接口。在片仿真硬件提供多种功能:o DSP的启动、停顿或复位功能o 向DSP下载代码或数据o 检查DSP的存放器或存储器o 硬件指令或依赖于数据的断点o 包括周期的准确计算在内的多种记数能力o 主机和DSP之间的实时数据交换RTDXCCS提供在片能力的嵌入式支持;另外,RTDX通过主机和DSPAPIAPI:Application Pro

9、gramming Interface,应用程序编程接口提供主机和DSP之间的双向实时数据交换,它能够使开发者实时连续地观察到DSP应用的实际工作方式。在目标系统应用程序运行时,RTDX也允许开发者在主机和DSP设备之间传送数据,而且这些数据可以在使用自动OLE的客户机上实时显示和分析,从而缩短研发时间。RTDX由目标系统和主机两局部组成。小的RTDX库函数在目标系统DSP上运行。开发者通过调用RTDX软件库的API函数将数据输入或输出目标系统的DSP,库函数通过在片仿真硬件和增强型JTAG接口将数据输入或输出主机平台,数据在DSP应用程序运行时实时传送给主机。图1-4RTDX系统组成在主机平台

10、上,RTDX库函数与CCS一道协同工作。显示和分析工具可以通过COM API与RTDX通信,从而获取目标系统数据,或将数据发送给DSP应用例程。开发者可以使用标准的显示软件包,诸如National Instruments LabVIEW,Quinn-Curtis Real-Time Graphics Tools,或Microsoft Excel。同时,开发者也可研制他们自己的Visual Basic或Visual C+应用程序。图1-5RTDX实例RTDX能够记录实时数据,并可将其回放用于非实时分析。下述样本由National Instruments LabVIEW 软件产生。在目标系统上,一

11、个原始信号通过FIR滤波器,然后与原始信号一起通过RTDX发送给主机。在主机上,LabVIEW显示屏通过RTDX COM API获取数据,并将它们显示在显示屏的左边。利用信号的功率谱可以检验目标系统中FIR滤波器是否正常工作。处理后的信号通过LabVIEW,将其功率谱显示在右上局部;目标系统的原始信号通过LabVIEW的FIR滤波器,再将其功率谱显示在右下局部。比拟这两个功率谱便可确认目标系统的滤波器是否正常工作。RTDX适合于各种控制、伺服和音频应用。例如,无线电通信产品可以通过RTDX捕捉语音合成算法的输出以检验语音应用程序的执行情况;嵌入式系统也可从RTDX获益;硬磁盘驱动设计者可以利用

12、RTDX测试他们的应用软件,不会因不正确的信号加到伺服马达上而与驱动发生冲突;引擎控制器设计者可以利用RTDX在控制程序运行的同时分析随环境条件而变化的系数。对于这些应用,用户都可以使用可视化工具,而且可以根据需要选择信息显示方式。1.5 CCS文件和变量本节简述CCS文件夹、CCS的文件类型及CCS环境变量。1.5.1安装文件夹安装进程将在安装CCS的文件夹典型情况为:c:ti中建设子文件夹。此外,子文件夹又建设在Windows目录下c:windows or c:winnt。C:ti包含以下目录:o bin.各种应用程序o C2800bios。DSP/BIOS API的程序编译时使用的文件o

13、 C2800cgtools.Texas instruments源代码生成工具o C2800examples.源程序实例o C2800rtdx.RTDX文件o C2800tutorial.本手册中使用的实例文件o ccbin.关于CCS环境的文件o ccgel.与CCS一起使用的GEL文件o docs.PDS格式的文件和指南o myprojects.用户文件夹1.5.2文件扩展名以下目录构造被添加到Windows目录:o tidrivers.各种DSP板驱动文件o tiplugins.和CCS一起使用的插件程序o tiuninstall.支持卸载CCS软件的文件当使用CCS时,你将经常遇见下述扩

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

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

16、建设一个新的应用程序,它采用标准库函数来显示一条hello world 消息。1. 如果CCS安装在c:ti中,则可在c:timyprojects建设文件夹adcshujucaiji hello1。假设将CCS安装在其它位置,则在相应位置创立文件夹hello1。2. 将c:tic2800tutorialhello1中的所有文件拷贝到上述新文件夹。3. 从Windows Start菜单中选择ProgramsCode Composer Studio C5400CCStudio。(或者在桌面上双击Code Composer Studio图标。) 注:CCS设置如果第一次启动CCS时出现错误信息,首先

17、确认是否已经安装了CCS。如果利用目标板进展开发,而不是带有CD-ROM的仿真器,则可参看与目标板一起提供的文档以设置正确的I/O端口地址。 4. 选择菜单项ProjectNew。5. 在Save New Project As窗口中选择你所建设的工作文件夹并点击Open。键入adcshujucaiji作为文件名并点击Save,CCS就创立了adcshujucaiji.mak的工程文件,它存储你的工程设置,并且提供对工程所使用的各种文件的引用。2.2 向工程添加文件1. 选择ProjectAdd Files to Project,选择hello.c并点击Open。2. 选择ProjectAdd

18、Files to Project,在文件类型框中选择*.asm。选择vector.asm并点击Open。该文件包含了设置跳转到该程序的C入口点的RESET中断c_int00所需的汇编指令。(对于更复杂的程序,可在vector.asm定义附加的中断矢量,或者,可用3.1节上所说明的DSP/BIOS来自动定义所有的中断矢量)3. 选择ProjectAdd Files to Project,在文件类型框中选择* d。选择hello d并点击Open,hello d包含程序段到存储器的映射。4. 选择ProjectAdd Files to Project,进入编译库文件夹C:tic2800cgtool

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

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

21、tionFont使窗口具有更小的字型。/* = hello.c = */#include #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 string to stdout */puts(hello world!n);#ifdef FILEIO

22、/* 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(file.txt, w);fprintf(fptr, %s, scanStr);fclose(fptr);/* open a file on the host and

23、 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 array: %s n, readSize, fileStr);fclose(fptr);#endif当没有定义FILEIO时,采用标准puts()函数显示一条hello world消息,它只是一个简单程序。当定义了FILEIO后见2.5节,该程序给出一个输入提示,并将输入字符串存放到一个文件

24、中,然后从文件中读出该字符串,并把它输出到标准输出设备上。2.4 编译和运行程序CCS会自动将你所作的改变保存到工程设置中。在完成上节之后,如果你退出了CCS,则通过重新启动CCS和点击ProjectOpen,即可返回到你刚刚停顿工作处。注:重新设置目标系统DSP如果第一次能够启动CCS,但接下来得到CCS不能初始化目标系统DSP的出错信息则可选择DebugReset DSP菜单项。假设还不能解决上述问题,你可能需要运行你的目标板所提供的复位程序。 为了编译和运行程序,要按照以下步骤进展操作:1. 点击工具栏按钮或选择ProjectRebuild All ,CCS重新编译、汇编和连接工程中的所

25、有文件,有关此过程的信息显示在窗口底部的信息框中。2. 选择FileLoad Program,选择刚重新编译过的程序adshujucaiji.out(它应该在c:timyprojectsadshujucaiji文件夹中,除非你把CCS安装在别的地方)并点击Open。CCS把程序加载到目标系统DSP上,并翻开Dis_Assembly窗口,该窗口显示反汇编指令。注意,CCS还会自动翻开窗口底部一个 标有Stdout的区域,该区域用以显示程序送往Stdout的输出。3. 点击Dis_Assembly窗口中一条汇编指令点击指令,而不是点击指令的地址或空白区域。按F1键。CCS将搜索有关那条指令的帮助信

26、息。这是一种获得关于不熟悉的汇编指令的帮助信息的好方法。4. 点击工具栏按钮或选择DebugRun。 注:屏幕尺寸和设置工具栏有些局部可能被Build窗口隐藏起来,这取决于屏幕尺寸和设置。为了看到整个工具栏,请在Build窗口中点击右键并取消Allow Docking选择。当运行程序时,可在Stdout窗口中看到hello world消息。2.5 修改程序选项和纠正语法错误在前一节中,由于没有定义FILEIO,预处理器命令#ifdef 和#endif之间的程序没有运行。在本节中,使用CCS设置一个预处理器选项,并找出和纠正语法错误。1. 选择ProjectOptions。2. 从Build O

27、ption窗口的Compiler栏的Category列表中选择Symbles。在Define Symbles框中键入FILEIO并按Tab键。注意,现在窗口顶部的编译命令包含-d选项,当你重新编译该程序时,程序中#ifdef FILEIO语句后的源代码就包含在内了。其它选项可以是变化的,这取决于正在使用的DSP板。3. 点击OK保存新的选项设置。4. 点击(Rebuild All)工具栏按钮或选择ProjectRebuild All。无论何时,只要工程选项改变,就必须重新编译所有文件。5. 出现一条说明程序含有编译错误的消息,点击Cancel。在Build tab 区域移动滚动条,就可看到一条

28、语法出错信息。6. 双击描述语法错误位置的红色文字。注意到hello.c源文件是翻开的,光标会落在该行上: fileStri = 07. 修改语法错误缺少分号。注意,紧挨着编辑窗口题目栏的文件名旁出现一个星号*,说明源代码已被修改正。当文件被保存时,星号随之消失。8. 选择FileSave 或按Ctrl+S可将所作的改变存入hello.c。9. 点击(Incremental Build)工具栏按钮或选择ProjectBuild,CCS重新编译已被更新的文件。2.6 使用断点和观察窗口当开发和测试程序时,常常需要在程序执行过程中检查变量的值。在本节中,可用断点和观察窗口来观察这些值。程序执行到断

29、点后,还可以使用单步执行命令。1. 选择FileReload Program.2. 双击Project View中的文件hello.c。可以加大窗口,以便能看到更多的源代码。3. 把光标放到以下行上: fprintf(fptr, “%S, scacStr);4. 点击工具栏按钮或按F9,该行显示为高亮紫红色。如果愿意的话,可通过OptionColor改变颜色。5. 选择ViewWatch Window。CCS窗口的右下角会出现一个独立区域,在程序运行时,该区域将显示被观察变量的值。6. 在Watch Window区域中点击鼠标右键,从弹出的表中选择Insert New Expression。7

30、. 键入表达式*scanStr并点击OK。8. 注意局部变量*scanStr被列在Watch window中,但由于程序当前并未执行到该变量的main()函数,因此没有定义。9. 选择DebugRun或按F5。10. 在相应提示下,键入goodbye并点击OK。注意,Stdout框以蓝色显示输入的文字。还应注意,Watch Window中显示出*scanStr的值。在键入一个输入字符串之后,程序运行并在断点处停顿。程序中将要执行的下一行以黄色加亮。11. 点击(Step Over)工具栏按钮或按F10以便执行到所调用的函数fprintf()之后。12. 用CCS提供的step命令试验: Ste

31、p Into (F2) Step over (F10) Step Out (Shift F7) Run to Cursor (Ctrl F10) 13. 点击工具栏按钮或按F5运行程序到完毕。3 基于DSP的数据采集设计实例3.1 安装驱动程序1安装仿真器驱动程序连接接仿真器、DSP开发板,将仿真器经USB接口脸上电脑之后系统提示“使用找到新硬件向导,选择驱动文件“XDS 510 USB Driver,完成之后系统提示新硬件可用。如以以下图所示。2安装仿真器的CCS驱动找到驱动文件“XDS 510 CCS Driver,运行,安装到CCS3.3软件所在的文件夹里面,具体如以以下图所示。3.2

32、启动CCS前的设置1.翻开“Setup CCStudio V3.3 ”,在“Available Factory Boards下选择“F2812 XDS510 Emulator2.在“system configuration下的“F2812 XDS510 Emulator右键选择“properties,对其进项设置,具体设置如以以下图。3. 点击“Save and Quit完成芯片设置,系统自动启动CCS 3.3操作界面。3.3 创立AD数据采集工程(1) 选择“ProjectNew(工程新建),弹出工程建设对话框。 (2) 在Project栏输入文件名adshujucaiji。工作目录是D:c

33、cstudio_v3.3myprojects,其他两项也选默认即可。 (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程序主要由库文

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

35、用同样的步骤使用。 首先将程序分成:系统初始化、所使用的外设的初始化、三级中断设置、中断服务程序、链接命令文件 d文件和头文件几个局部。在系统初始化程序中了解系统时钟、外设端口、看门狗的设置方法以及相关存放器的使用,在外设初始化程序中,对应该外设的使用原理,了解“这个存放器起什么作用,这样设置起什么作用,掌握该外设设备联想到所有的外设初始化时必须设置的内容有哪些,需要特殊设施的存放器有哪些。之后了解外设级、PIE级和CPU级中断初始化、开中断、关中断的设置方法、顺序和原因。中断服务程序完成特殊的数据处理,按照自己的算法编写就可以,但要注意在所有的中断服务程序中都要对三级中断进展相应的设置,以保

36、证中断服务程序能够连续不断地运行下去。在 D文件中完成对内部存储器外扩存储器的分配,了解相关指令的作用和使用方法。3.5.2 程序工作流程在进展软件设计之前,首先明确系统的工作流程,简单介绍如下:1DSP上电,等待采集开场命令。2使用事件管理器EVA的通用定时器周期中断来触发ADC的采集动作。3进展数据的校正和融合处理。4将融合后的数据经eCAN总线传送到上位机。本系统使用EVA的通用定时器1的周期中断来触发AD的转换,当ADC完成 SEQ1中定义的端口的数据采集转换时,触发中断,进入中断服务程序。DSP F2812的AD为12 位精度,由于各种因素的影响,测量值存在误差,需进展校正。校正完成

37、之后对该次测量获得的两个数值进展联合kalman滤波器数据融合,完成融合操作后将得到的数据存入eCAN总线的发送邮箱,将数据发送到上位机,一次操作完成。之后退出中断程序,等待下一次中断触发信号的到来。本系统就按照怎样的顺序完成真空度的数据采集、校正、融合和传输操作 。整个软件系统可以分为如下几个局部:系统初始化,用来完成DSP存放器的设置,各级中断的清零,系统时钟、外设时钟的设置,踢除看门狗、初始化AD、EVA等操作;终端服务程序的设置,用来完成采样结果的移位操作、校正,联合kalman滤波器数据融合以及eCAN总线的数据传输;链接命令文件的编写,由于使用了外扩存储器,为保证程序执行的速度,将

38、程序空间分配到片内存储器,程序执行过程中产生的数据存储到片外存储器中。3.5.3系统初始化 sysctrl()1系统时钟设置,通过高速时钟预订标存放器标志存放器简称标存放器或标器(HISPCP)、低速时钟预订标存放器(LOSPCP)和锁相环存放器设置,获得高、第速时钟,使能相关外设时钟。如以以下图所示2中断初始化首先关闭全局中断,关闭外设中断,并去除所左右的中断标志位。 DINT; / 关闭总中断 IER = 0x0000; / 关闭外设中断 IFR = 0x0000; / 清中断标志其次初始化PIE控制存放器,由函数InitPiectrl()实现。将所有的PIE级中断标志位和中断使能位清零。

39、并将AD中断所在组对应的中断应答存放器中的相应位置零。最后使能PIE向量表,由函数InitPieVectable()实现。3.5.4端口设置数据采集使用同步转换模式,对通道ADCINA0和ADCINB0同时采样8次。所以将这两个端口设置成普通输入输出端口且为输入模式。 void InitGpio(void) EALLOW; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2=0; GpioMuxRegs.GPADIR.bit.GPIOA0=0; GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0=0; GpioMuxRegs.GPBDIR.bit.GPIOB

40、0=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数据采集外设AD的设置F2812的ADC模块有16个通道,排序器SEQ1和SEQ2可以作为两个独立的8通道模块,也可以级联成一个16通道的模块。AD模块的内部构造如图

41、3.5所示。虽然有两组输入通道和两个排序器,但是ADC模块中只有一个转换器,同一时刻只能对1路输入信号进展转换,当有多路信号需要进展转换时,ADC模块通过前端模拟多路复用器的控制,在同一时刻,只允许1路信号输入到ADC的转换器中。在这两种工作方式下,AD能够通过对相关存放器的设置对需要转换的通道进展排序,通过模拟多路转换器每次转换的通道。每个排序器转换完成,将所转换通道的值存储在其各自的转换结果存放器中。我们可以通过设置排序存放器,到达对一个通道进展屡次转换的目的,这就是所说的过采样算法,比照单次采样转换,能够有效提高结果的精度 2812的ADC可以工作在顺序采样和同步采样两种工作模式。顺序采

42、样也就是按照顺序对每个通道依次进展采样。而同步采样,是同时采样一对通道,即ADCINA0和ADCINB0同时采样,ADCINA1和ADCINB1同时采样。我们使用级联排序器的同时采样模式。此时排序器SEQ1和SEQ2级联成最多16个通道的排序器。 ADC模块只有接收到转换触发信号才可开场转换,如下表所示,我们采用事件管理器A的周期中断触发AD。SEQ1SEQ2级联SEQ软件触发软件SOC软件触发软件SOC软件触发软件SOC事件管理器AEVA SOC事件管理器BEVB SOC事件管理器AEVA SOC事件管理器BEVB SOC外部SOC引脚外部SOC引脚2812AD的16个通道是可以通过编程来进

43、展选择在某一时刻终究是哪一个通道被选通进展采样的。这个功能就需要通过ADC输入通道选择序列控制存放器ADCCHSELSEQxx=1,2,3,4来实现。每一个输入通道选择序列控制存放器都是16位的,被分成了4个功能位CONVxx,每一个功能位占据存放器的4位,在AD转换的过程中,当前CONVxx位定义了要进展采样和转换的引脚。为了能够对端口进展连续不断的采样,通用定时器1产生的AD采集触发信号频率应高于AD采集频率。我们采用的ADCLK为1.875M,每次触发共采集16次,加上采样窗口时间为6个ADCLK,转换频率约为13K。EVA使用低速时钟HISPCP,它的的通用定时器1的时钟为60M,周期

44、为300,为连续增计数模式,它的周期匹配频率为0.2M,能够使ADC连续不断地采集数据。 输入到AD的时钟如以以下图所示3.5.6EVA的初始化使用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.

45、all=0x1042; EvaRegs.T1CNT=0x0000; EDIS; 3.5.7中断设置1DSP的中断分为外设级、PIE级和CPU级,为了是CPU能够响应有中断出发时间引发的中断,需要将三级中断全部翻开。2我们使用的是ADC采集完成中断,当AD模块完成8次同步采集之后触发外设计中断,对应的中断标志位ADCIFR自动置位,如果此时ADC中断使能位ADCIER为1.并且ADC中断所在的中断组对应的中断应答存放器PIEACK的相应位为0,则将外设级中断传送到PIE级。之后将PIE级虽在组对应的中断标志位置一,检查该组对应的中断使能位是否为1,如果是一,则将该终端传送到CPU级,直后执行对应

46、的中断服务程序。3为使得中断事件发生后CPU能够找到相应的中断服务程序,需要将中断服务程序的地址赋值给触发中断的外设事件在中断矢量列表pievect中对应的指针。中断矢量列表中adc中断对应的指针如以以下图 在本实例中我们通过一下语句实现,其中“ad使我们自己编写的中断服务程序的名字。 EALLOW; PieVectTable.ADCINT=&ad; EDIS;3为是外设级中断传输到PIE级将ad中断对应的中断使能位置14DSP所有的96个中断分成了12组,为使得中断程序能有外设级顺利的传输到CPU,需将AD中断所在的第一组的PIE级中断使能位置1。5使能全局中断和全局实时中断。 具体程序如下

47、: IER |=M_INT1; /使能CPU的INT1中断 PieCtrlRegs.PIEIER1.bit.INTx6=1; /使能PIE中INIT中的ADCINT中断的中断使能位 EINT; /使能全局中断屏蔽位 ERTM; 3.5.8循环等待程序由于ad数据采集需要一定的时间,只有当采集完成之后才能触发中断,执行相应的中断服务程序。需要一个循环等待程序,等待中断时间的发生,当发生中断时间是,跳出循环。for(;);3.5.9编写相应的中断服务程序1具体的数据处理算法都在中断服务程序中实现。具体算法具体编写,不再表达。2中断服务程序中需要对AD中断在中断应答存放器中的相应位进展指令处理。因为

48、在外设级中断向CPU传输的过程中中断应答存放器自动复位。3为是中断程序能够连续进展下去需要将AD的排序器进展复位,并去除ADcst中的中断标志位。具体程序如下: AdcRegs.ADCTRL2.bit.RST_SEQ1=1; AdcRegs.ADCST.bit.INT_SEQ1_CLR=1; PieCtrlRegs.PIEACK.all=0x0001; /响应中断后用软件将PIEACK.X清零,已屏蔽该组中其他中断3.5.10程序编写编译连接生成输出文件1点击 对程序进展编译连接、修改,直到无错误 。3.5.11将输出文件通过仿真器输入到DSP中进展试验验证连接好开发板、仿真器。选择“File

49、“Load program,出现如以以下图的对话框。在“Debug中选择“.out文件。将输出文件写入开发板3.5.12进展试验3.6总结建设一个DSP工程的步骤1.设置“Setup CCStudio选择适宜的工作模式,设置相应参数。2. 启动CCS,建设新的工程,把TI官方提供的各种头文件、源文件添加到工程中。3. 编写程序首先将程序分成:系统初始化、所使用的外设的初始化、三级中断设置、中断服务程序、链接命令文件 d文件和头文件几个局部。在系统初始化程序中了解系统时钟、外设端口、看门狗的设置方法以及相关存放器的使用,外设级、PIE级和CPU级中断初始化、开中断、关中断的设置方法、顺序和原因。中断服务程序完成特殊的数据处理,按照自己的算法编写就可以,但要注意在所有的中断服务程序中都要对三级中断进展相应的设置,以保证中断服务程序能够连续不断地运行下去。在 D文件中完成对内部存储器外扩存储器的分配,了解相关指令的作用和使用方法。4.编译程序,修改错误,将生成的输出文件烧到DSP里面,进展相应实验。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!