1、2023-1-30CCSDSP开发环境和实例CCS_DSP开发环境和实开发环境和实例例CCSDSP开发环境和实例基于基于DSPDSP的数据采集设计专题的数据采集设计专题1 1 DSPDSP集成开发环境集成开发环境 CCS3.3CCS3.3使用方法使用方法2 2 基于基于DSPDSP的数据采集实例的数据采集实例CCSDSP开发环境和实例1 CCS1 CCS集成开发环境简介集成开发环境简介1.1 1.1 CCSCCS安装及设置安装及设置1.2 1.2 CCSCCS的窗口、菜单和工具条的窗口、菜单和工具条1.3 1.3 CCSCCS工程管理工程管理1.4 1.4 CCSCCS源文件管理源文件管理CC
2、SDSP开发环境和实例概述概述CCS工作在Windows操作系统下,类似于VC+的集成开发环境,采用图形接口界面,有编辑工具和工程管理工具。它将汇编器、链接器、C/C+编译器、建库工具等集成在一个统一的开发平台中。CCS所集成的代码调试工具具有各种调试功能,能对TMS320系列DSP进行指令级的仿真和可视化的实时数据分析。此外,还提供了丰富的输入/输出库函数和信号处理的库函数,极大地方便了TMS320系列DSP软件开发过程。利用CCS的软件开发流程如图1.1所示。CCSDSP开发环境和实例1.1 CCS安装及设置 1 CCS 3.3系统的安装运行setup.exe应用程序,弹出一个安装界面,然
3、后选择Code Composer Studio项,就可以开始CCS 2.0的安装,按照屏幕提示可完成系统的安装。当CCS软件安装在计算机上之后,将在显示器桌面上出现如图1.2所示的两个图标。CCSDSP开发环境和实例2.系统配置为使CCS IDE能工作在不同的硬件或仿真目标上,必须首先为它配置相应的配置文件。具体步骤如下:(1)双击桌面上的Setup CCS 3.3图标,启动CCS设置。(2)在弹出对话框中单击“Clear”按钮,清除以前定义的配置。(3)从弹出的对话框中,单击“Yes”按钮,确认清除命令。(4)从列出的可供选择的配置文件中,选择能与使用的目标系统相匹配的配置文件。CCSDSP
4、开发环境和实例(5)单击加入系统配置按钮,将所选中的配置文件输入到CCS设置窗口当前正在创建的系统配置中,所选择的配置显示在设置窗的系统配置栏目的My System目录下,如图1.3所示。(6)单击“FileSave(保存)”按钮,将配置保存在系统寄存器中。(7)当完成CCS配置后,单击“Save&Quit”按钮,系统自动打开CCS 3.3CCSDSP开发环境和实例3.系统启动 当CCS的设值完成之后,如果下次启动CCS所使用的模拟调试环境未变,可以直接双击桌面上的“CCStudio v3.3”来启动系统。CCSDSP开发环境和实例1.2 CCS 的窗口、菜单和工具条CCS应用窗口 一个典型的
5、CCS集成开发环境窗口如图1.4所示,整个窗口由主菜单、工具条、工程窗口、编辑窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成。CCSDSP开发环境和实例 工程窗口用来组织用户的若干程序并由此构成一个项目,用户可以从工程列表中选中需要编辑和调试的特定程序。在源程序编辑窗口中,用户既可以编辑程序,又可以设置断点和探针,并调试程序。反汇编窗口可以帮助用户查看机器指令,查找错误。内存和寄存器显示窗口可以查看、编辑内存单元和寄存器。图形显示窗口可以根据用户需要显示数据。用户可以通过主菜单条目来管理各窗口。CCSDSP开发环境和实例2.工具栏 CCS集成开发环境提供5种工具栏,以便执行各种菜单
6、上相应的命令。这5种工具栏可在View菜单下选择是否显示。(1)Standard Toolbar(标准工具栏),如图1.5所示,包括新建、打开、保存、剪切、复制、粘贴、取消、恢复、查找、打印和帮助等常用工具。(2)Project Toolbar(工程工具栏),如图1.6所示,包括选择当前工程、编译文件、设置和移去断点、设置和移去Probe Point等功能。CCSDSP开发环境和实例(3)Edit Toolbar,提供了一些常用的查找和设置标签命令,如图1.7所示。(4)GEL Toolbar,提供了执行GEL函数的一种快捷方法,如图1.8所示。在工具栏左侧的文本输入框中键入GEL函数,再单击
7、右侧的执行按钮即可执行相应的函数。如果不使用GEL工具栏,也可以使用Edit菜单下的Edit Command Line命令执行GEL函数。(5)ASM/Source Stepping Toolbar,提供了单步调试C或汇编源程序的方法,如图1.9所示。CCSDSP开发环境和实例(6)Target Control Toolbar,提供了目标程序控制的一些工具,如图1.10所示。(7)Debug Window Toolbar,提供了调试窗口工具,如图1.11所示。CCSDSP开发环境和实例1.3 CCS工程管理 1.工程的创建、打开和关闭(1)创建一个工程选择“ProjectNew(工程新工程)”
8、,如图1.12所示,在Project栏中输入工程名字,其他栏目可根据习惯设置。工程文件的扩展名是*.pjt。若要创建多个工程,每个工程的文件名必须是唯一的。但可以同时打开多个工程。CCSDSP开发环境和实例(2)打开已有的工程 选择“ProjectOpen(工程打开)”,弹出如图1.13所示工程打开对话框。双击需要打开的文件(*.pjt)即可。(3)关闭工程 选择“ProjectClose(工程关闭)”,即可当前关闭工程。CCSDSP开发环境和实例2.使用工程观察窗口 工程窗口图形显示工程的内容。当打开工程时,工程观察窗口自动打开如图1.14所 示。要展开或压缩工程清单,单击工程文件夹、工程名
9、(*.pjt)和各个文件夹上的“+/”号即可。CCSDSP开发环境和实例3.加文件到工程可按以下步骤将与该工程有关的源代码、目标文件、库文件等加入到工程清单中去。加文件到工程(1)选择“ProjectAdd Files to Project(工程加文件到工程)”,出现Add Files to Project对话框。(2)在Add Files to Project对话框,指定要加入的文件。如果文件不在当前目录中,浏览并找到该文件。(3)单击“打开”按钮,将指定的文件加到工程中去。当文件加入时,工程观察窗口将自动的更新。从工程中删除文件(1)按需要展开工程清单。(2)右击要删除的文件名。(3)从上
10、下文菜单,选择“Remove from Project(从工程中删除)”。在操作过程中,注意文件扩展名,因为文件通过其扩展名来辨识CCSDSP开发环境和实例1.4 CCS源文件管理1.创建新的源文件可按照以下步骤创建新的源文件:(1)选择“FileNewSource File(文件新文件源文件)”,将打开一个新的源文件编辑窗口。如下图1.15所示。(2)在新的源代码编辑窗口输入代码。(3)选择“FileSave(文件保存)”或“FileSave As(文件另存为)”,保存文件。CCSDSP开发环境和实例2.打开文件可以在编辑窗口打开任何ASCII文件。(1)选择“FileOpen(文件打开)”
11、,将出现如图5.17所示打开文件对话框。(2)在打开文件对话框中双击需要打开的文件,或者选择需要打开的文件,并单击“打开”按钮。CCSDSP开发环境和实例3.保存文件(1)单击编辑窗口,激活需要保存的文件。(2)选择“FileSave(文件保存)”,输入要求保存的文件名。(3)在保存类型栏中,选择需要的文件类型,如图5.18所示。(4)单击“保存”按钮。CCSDSP开发环境和实例2 基于DSP的数据采集设计实例 1.CCS 3.3配置及相关驱动安装 2.建立一个AD数据采集工程CCSDSP开发环境和实例1.1 相关驱动安装1.安装仿真器驱动程序连接仿真器、DSP开发板,将仿真器经USB接口连上
12、电脑之后系统提示“使用找到新硬件向导”,选择驱动文件“XDS 510 USB Driver”,完成之后系统提示新硬件可用。CCSDSP开发环境和实例2.安装仿真器的CCS驱动找到驱动文件“XDS 510 CCS Driver”,运行,安装到CCS3.3软件所在的文件夹里面,具体如下图所示。CCSDSP开发环境和实例1.2 启动CCS前的设置1.打开“Setup CCStudio V3.3”,在“Available Factory Boards”下选择“F2812 XDS510 Emulator”2.在“system configuration”下的“F2812 XDS510 Emulator”
13、右键选择“properties”,对其进项设置,具体设置如下图。3.点击“Save and Quit”完成芯片设置,系统自动启动CCS 3.3操作界面。CCSDSP开发环境和实例2.建立AD数据采集工程2.1 创建一个工程(1)选择“ProjectNew(工程新建)”,弹出工程建立对话框。(2)在Project栏输入文件名adshujucaiji。工作目录是D:ccstudio_v3.3myprojects,其他两项也选默认即可。(3)单击完成按钮,将在工程窗口的Project下面创建adshujucaiji工程。CCSDSP开发环境和实例2.2 向工程中添加源文件(1)将从ti官方网站上下载
14、的源文件复制到 D:ccstudio_v3.3 myprojectsadshujucaiji文件夹内。(2)在“projects”下右键点击工程名“adshujucaiji”选择“add File to project”,将复制到文件夹“adshujucaiji”中的源文件全部加载进来。如下图所示。CCSDSP开发环境和实例2.3 程序编写2.3.1 2.3.1 程序编写思路程序编写思路(1)一个DSP程序的构成。一个完整的DSP程序主要由库文件,.c源文件,.h头文件以及.cmd连接命令文件组成。(2)DSP程序的编写思路一个DSP程序要完成设想的功能,需要完成系统初始化,所使用的外设的初始
15、化,中断初始化,已经终端服务程序的编写。其中系统,外设初始化只需要对相应的寄存器进行设置即可以完成。中断服务程序根据我们所需要的处理算法进行编写。(3)现在总结起来DSP2812其实可以分为以下几个部分:时钟(DSP工作的动力)、外设(DSP实现相应的功能都是有对应的外设来实现的)、中断和中断服务程序。只要把这四个部分弄懂了,DSP的使用应该就没多大问题。DSP的不同功能主要有对应的外设实现,实际上只要掌握了一种外设的使用方(寄存器、中断、时钟的设置)其他的都可以用同样的步骤使用。CCSDSP开发环境和实例首先将程序分成:系统初始化、所使用的外设的初始化、三级中断设置、中断服务程序、链接命令文
16、件(.cmd文件)和头文件几个部分。在系统初始化程序中了解系统时钟、外设端口、看门狗的设置方法以及相关寄存器的使用,在外设初始化程序中,对应该外设的使用原理,了解“这个寄存器起什么作用,这样设置起什么作用”,掌握该外设设备(联想到所有的外设)初始化时必须设置的内容有哪些,需要特殊设施的寄存器有哪些。之后了解外设级、PIE级和CPU级中断初始化、开中断、关中断的设置方法、顺序和原因。中断服务程序完成特殊的数据处理,按照自己的算法编写就可以,但要注意在所有的中断服务程序中都要对三级中断进行相应的设置,以保证中断服务程序能够连续不断地运行下去。在.CMD文件中完成对内部存储器外扩存储器的分配,了解相
17、关指令的作用和使用方法。CCSDSP开发环境和实例2.3.2 程序工作流程在进行软件设计之前,首先明确系统的工作流程,简单介绍如下:(1)DSP上电,等待采集开始命令。(2)使用事件管理器EVA的通用定时器周期中断来触发ADC的采集动作。(3)进行数据的校正和融合处理。(4)将融合后的数据经eCAN总线传送到上位机。本系统使用EVA的通用定时器1的周期中断来触发AD的转换,当ADC完成 SEQ1中定义的端口的数据采集转换时,触发中断,进入中断服务程序。DSP F2812的AD为12 位精度,由于各种因素的影响,测量值存在误差,需进行校正。校正完成之后对该次测量获得的两个数值进行联合kalman
18、滤波器数据融合,完成融合操作后将得到的数据存入eCAN总线的发送邮箱,将数据发送到上位机,一次操作完成。之后退出中断程序,等待下一次中断触发信号的到来。本系统就按照怎样的顺序完成真空度的数据采集、校正、融合和传输操作。CCSDSP开发环境和实例 整个软件系统可以分为如下几个部分:系统初始化,用来完成DSP寄存器的设置,各级中断的清零,系统时钟、外设时钟的设置,踢除看门狗、初始化AD、EVA等操作;终端服务程序的设置,用来完成采样结果的移位操作、校正,联合kalman滤波器数据融合以及eCAN总线的数据传输;链接命令文件的编写,由于使用了外扩存储器,为保证程序执行的速度,将程序空间分配到片内存储
19、器,程序执行过程中产生的数据存储到片外存储器中。CCSDSP开发环境和实例2.3.3 系统初始化 sysctrl()(1)系统时钟设置,通过高速时钟预订标志寄存器(HISPCP)、低速时钟预订标志寄存器(LOSPCP)和锁相环寄存器设置,获得高、第速时钟,使能相关外设时钟。如下图所示CCSDSP开发环境和实例(2)中断初始化 首先关闭全局中断,关闭外设中断,并清除所左右的中断标志位。DINT;/关闭总中断 IER=0 x0000;/关闭外设中断 IFR=0 x0000;/清中断标志 其次初始化PIE控制寄存器,由函数InitPiectrl()实现。将所有的PIE级中断标志位和中断使能位清零。并
20、将AD中断所在组对应的中断应答寄存器中的相应位置零。最后使能PIE向量表,由函数InitPieVectable()实现。CCSDSP开发环境和实例2.3.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.b
21、it.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;CCSDSP开发环境和实例2.3.5.数据采集外设AD的设置F2812的ADC模块有16个通道,排序器SEQ1和SEQ2可以作为两个独立的8通道模块,也可以级联成一个16通道
22、的模块。AD模块的内部结构如图3.5所示。虽然有两组输入通道和两个排序器,但是ADC模块中只有一个转换器,同一时刻只能对1路输入信号进行转换,当有多路信号需要进行转换时,ADC模块通过前端模拟多路复用器的控制,在同一时刻,只允许1路信号输入到ADC的转换器中。在这两种工作方式下,AD能够通过对相关寄存器的设置对需要转换的通道进行排序,通过模拟多路转换器每次转换的通道。每个排序器转换完成,将所转换通道的值存储在其各自的转换结果寄存器中。我们可以通过设置排序寄存器,达到对一个通道进行多次转换的目的,这就是所说的过采样算法,对比单次采样转换,能够有效提高结果的精度 CCSDSP开发环境和实例2812
23、的ADC可以工作在顺序采样和同步采样两种工作模式。顺序采样也就是按照顺序对每个通道依次进行采样。而同步采样,是同时采样一对通道,即ADCINA0和ADCINB0同时采样,ADCINA1和ADCINB1同时采样。我们使用级联排序器的同时采样模式。此时排序器SEQ1和SEQ2级联成最多16个通道的排序器。ADC模块只有接收到转换触发信号才可开始转换,如下表所示,我们采用事件管理器A的周期中断触发ADSEQ1SEQ2级联SEQ软件触发(软件SOC)软件触发(软件SOC)软件触发(软件SOC)事件管理器A(EVA SOC)事件管理器B(EVB SOC)事件管理器A(EVA SOC)事件管理器B(EVB
24、 SOC)外部SOC引脚外部SOC引脚CCSDSP开发环境和实例2812AD的16个通道是可以通过编程来进行选择在某一时刻究竟是哪一个通道被选通进行采样的。这个功能就需要通过ADC输入通道选择序列控制寄存器ADCCHSELSEQx(x=1,2,3,4)来实现。每一个输入通道选择序列控制寄存器都是16位的,被分成了4个功能位CONVxx,每一个功能位占据寄存器的4位,在AD转换的过程中,当前CONVxx位定义了要进行采样和转换的引脚。CCSDSP开发环境和实例 为了能够对端口进行连续不断的采样,通用定时器1产生的AD采集触发信号频率应高于AD采集频率。我们采用的ADCLK为1.875M,每次触发
25、共采集16次,加上采样窗口时间为6个ADCLK,转换频率约为13K。EVA使用低速时钟HISPCP,它的的通用定时器1的时钟为60M,周期为300,为连续增计数模式,它的周期匹配频率为0.2M,能够使ADC连续不断地采集数据。CCSDSP开发环境和实例具体程序如下void InitADC(void)unsigned int i;AdcRegs.ADCTRL1.bit.RESET=1;/复位整个ADC模块AdcRegs.ADCTRL1.bit.SUSMOD=3;/仿真挂起时,序列发生器和其他程序逻辑立即停止AdcRegs.ADCTRL1.bit.ACQ_PS=5;/采集窗口的大小,控制SOC的脉
26、宽,为6个ADCLK的长度,SOC确定采样开关关闭的时间段SOC的脉宽为ACO_PS+1乘以ADCLKAdcRegs.ADCTRL1.bit.CPS=1;/内核时钟分频器AdcRegs.ADCTRL1.bit.CONT_RUN=0;/连续转换模式,一次SEQ1转换完成,序列发生器SEQ1指针指向CONV)AdcRegs.ADCTRL1.bit.SEQ_OVRD=0;/AdcRegs.ADCTRL1.bit.SEQ_CASC=1;/级联模式,SEQ1/2作为一个16通道排序器工作AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;AdcRegs.ADCTRL2.bit.RST_S
27、EQ1=0;AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;/启用INT_SEQ1的中断请求 AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;/每个SEQ1序列结束时设置INT_SEQ1AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;/允许由EVA触发启动SEQ1AdcRegs.ADCTRL2.bit.RST_SEQ2=0;/无操作AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;/禁用INT_SEQ2对CPU的中断请求AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;/带隙和参考电路上电for
28、(i=0;i10000;i+);AdcRegs.ADCTRL3.bit.ADCPWDN=1;/除带隙参考电路意外的内核模拟电路上电for(i=0;i10000;i+);AdcRegs.ADCTRL3.bit.ADCCLKPS=8;/ADC内核分频器AdcRegs.ADCTRL3.bit.SMODE_SEL=0;/同步采样模式AdcRegs.ADCMAXCONV.bit.MAX_CONV1=15;/每次转换的最大转换次数为8次AdcRegs.ADCCHSELSEQ1.bit.CONV00=0 x0;AdcRegs.ADCCHSELSEQ4.bit.CONV14=0 x0;AdcRegs.ADCC
29、HSELSEQ4.bit.CONV15=0 x8;AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;AdcRegs.ADCST.bit.INT_SEQ2_CLR=1;/清除SEQ1和SEQ2的中断标志位AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;CCSDSP开发环境和实例2.3.6.EVA的初始化使用EVA通用定时器1的周期中断触发信号,EVA使用低速时钟HISPCP,它的的通用定时器1的时钟为60M,周期为300,为连续增计数模式,它的周期匹配频率为0.2M,能够使ADC连续不断地采集数据。EVA的初始化程序如下void InitEVA(void)EALLO
30、W;EvaRegs.T1CMPR=0 x0080;EvaRegs.T1PR=0 x012C;EvaRegs.GPTCONA.bit.T1TOADC=1;EvaRegs.T1CON.all=0 x1042;EvaRegs.T1CNT=0 x0000;EDIS;CCSDSP开发环境和实例2.3.7.中断设置(1)DSP的中断分为外设级、PIE级和CPU级,为了是CPU能够响应有中断出发时间引发的中断,需要将三级中断全部打开。(2)我们使用的是ADC采集完成中断,当AD模块完成8次同步采集之后触发外设计中断,对应的中断标志位ADCIFR自动置位,如果此时ADC中断使能位ADCIER为1.并且ADC中
31、断所在的中断组对应的中断应答寄存器PIEACK的相应位为0,则将外设级中断传送到PIE级。之后将PIE级虽在组对应的中断标志位置一,检查该组对应的中断使能位是否为1,如果是一,则将该终端传送到CPU级,直后执行对应的中断服务程序。(3)为使得中断事件发生后CPU能够找到相应的中断服务程序,需要将中断服务程序的地址赋值给触发中断的外设事件在中断矢量列表(pievect)中对应的指针。CCSDSP开发环境和实例中断矢量列表中adc中断对应的指针如下图在本实例中我们通过一下语句实现,其中“ad”使我们自己编写的中断服务程序的名字。EALLOW;PieVectTable.ADCINT=&ad;EDIS
32、;CCSDSP开发环境和实例(3)为是外设级中断传输到PIE级将ad中断对应的中断使能位置1(4)DSP所有的96个中断分成了12组,为使得中断程序能有外设级顺利的传输到CPU,需将AD中断所在的第一组的PIE级中断使能位置1。(5)使能全局中断和全局实时中断。具体程序如下:IER|=M_INT1;/使能CPU的INT1中断PieCtrlRegs.PIEIER1.bit.INTx6=1;/使能PIE中INIT中的ADCINT中断的中断使能位EINT;/使能全局中断屏蔽位ERTM;CCSDSP开发环境和实例2.3.8.循环等待程序 由于ad数据采集需要一定的时间,只有当采集完成之后才能触发中断,
33、执行相应的中断服务程序。需要一个循环等待程序,等待中断时间的发生,当发生中断时间是,跳出循环。for(;);CCSDSP开发环境和实例2.3.9.编写相应的中断服务程序(1)具体的数据处理算法都在中断服务程序中实现。具体算法具体编写,不再叙述。(2)中断服务程序中需要对AD中断在中断应答寄存器中的相应位进行指令处理。因为在外设级中断向CPU传输的过程中中断应答寄存器自动复位。(3)为是中断程序能够连续进行下去需要将AD的排序器进行复位,并清除ADcst中的中断标志位。具体程序如下:AdcRegs.ADCTRL2.bit.RST_SEQ1=1;AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;PieCtrlRegs.PIEACK.all=0 x0001;/响应中断后用软件将PIEACK.X清零,已屏蔽该组中其他中断CCSDSP开发环境和实例2.3.10.程序编写编译连接生成输出文件(1)点击 对程序进行编译连接、修改,直到无错误。CCSDSP开发环境和实例2.3.11.将输出文件通过仿真器输入到DSP中进行试验验证连接好开发板、仿真器。选择“File”“Load program”,出现如下图的对话框。在“Debug”中选择“.out”文件。将输出文件写入开发板。CCSDSP开发环境和实例2.3.12.实验2023-1-30CCSDSP开发环境和实例