环境管理_基于dsp的数据采集设计专题_第1页
环境管理_基于dsp的数据采集设计专题_第2页
环境管理_基于dsp的数据采集设计专题_第3页
环境管理_基于dsp的数据采集设计专题_第4页
环境管理_基于dsp的数据采集设计专题_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

基于DSP的数据采集设计专题,河北工业大学赵智忠,基于DSP的数据采集设计专题,1DSP集成开发环境CCS3.3使用方法2基于DSP的数据采集实例,1CCS集成开发环境简介,1.1CCS安装及设置1.2CCS的窗口、菜单和工具条1.3CCS工程管理1.4CCS源文件管理,概述,CCS工作在Windows操作系统下,类似于VC+的集成开发环境,采用图形接口界面,有编辑工具和工程管理工具。它将汇编器、链接器、C/C+编译器、建库工具等集成在一个统一的开发平台中。CCS所集成的代码调试工具具有各种调试功能,能对TMS320系列DSP进行指令级的仿真和可视化的实时数据分析。此外,还提供了丰富的输入/输出库函数和信号处理的库函数,极大地方便了TMS320系列DSP软件开发过程。利用CCS的软件开发流程如图1.1所示。,1.1CCS安装及设置,1CCS3.3系统的安装运行setup.exe应用程序,弹出一个安装界面,然后选择CodeComposerStudio项,就可以开始CCS2.0的安装,按照屏幕提示可完成系统的安装。当CCS软件安装在计算机上之后,将在显示器桌面上出现如图1.2所示的两个图标。,2.系统配置,为使CCSIDE能工作在不同的硬件或仿真目标上,必须首先为它配置相应的配置文件。具体步骤如下:(1)双击桌面上的SetupCCS3.3图标,启动CCS设置。(2)在弹出对话框中单击“Clear”按钮,清除以前定义的配置。(3)从弹出的对话框中,单击“Yes”按钮,确认清除命令。(4)从列出的可供选择的配置文件中,选择能与使用的目标系统相匹配的配置文件。,(5)单击加入系统配置按钮,将所选中的配置文件输入到CCS设置窗口当前正在创建的系统配置中,所选择的配置显示在设置窗的系统配置栏目的MySystem目录下,如图1.3所示。(6)单击“FileSave(保存)”按钮,将配置保存在系统寄存器中。(7)当完成CCS配置后,单击“Save/关闭总中断IER=0 x0000;/关闭外设中断IFR=0 x0000;/清中断标志其次初始化PIE控制寄存器,由函数InitPiectrl()实现。将所有的PIE级中断标志位和中断使能位清零。并将AD中断所在组对应的中断应答寄存器中的相应位置零。最后使能PIE向量表,由函数InitPieVectable()实现。,2.3.4端口设置,数据采集使用同步转换模式,对通道ADCINA0和ADCINB0同时采样8次。所以将这两个端口设置成普通输入输出端口且为输入模式。voidInitGpio(void)EALLOW;GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2=0;GpioMuxRegs.GPADIR.bit.GPIOA0=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;,2.3.5.数据采集外设AD的设置,F2812的ADC模块有16个通道,排序器SEQ1和SEQ2可以作为两个独立的8通道模块,也可以级联成一个16通道的模块。AD模块的内部结构如图3.5所示。虽然有两组输入通道和两个排序器,但是ADC模块中只有一个转换器,同一时刻只能对1路输入信号进行转换,当有多路信号需要进行转换时,ADC模块通过前端模拟多路复用器的控制,在同一时刻,只允许1路信号输入到ADC的转换器中。在这两种工作方式下,AD能够通过对相关寄存器的设置对需要转换的通道进行排序,通过模拟多路转换器每次转换的通道。每个排序器转换完成,将所转换通道的值存储在其各自的转换结果寄存器中。我们可以通过设置排序寄存器,达到对一个通道进行多次转换的目的,这就是所说的过采样算法,对比单次采样转换,能够有效提高结果的精度,2812的ADC可以工作在顺序采样和同步采样两种工作模式。顺序采样也就是按照顺序对每个通道依次进行采样。而同步采样,是同时采样一对通道,即ADCINA0和ADCINB0同时采样,ADCINA1和ADCINB1同时采样。我们使用级联排序器的同时采样模式。此时排序器SEQ1和SEQ2级联成最多16个通道的排序器。ADC模块只有接收到转换触发信号才可开始转换,如下表所示,我们采用事件管理器A的周期中断触发AD,2812AD的16个通道是可以通过编程来进行选择在某一时刻究竟是哪一个通道被选通进行采样的。这个功能就需要通过ADC输入通道选择序列控制寄存器ADCCHSELSEQx(x=1,2,3,4)来实现。每一个输入通道选择序列控制寄存器都是16位的,被分成了4个功能位CONVxx,每一个功能位占据寄存器的4位,在AD转换的过程中,当前CONVxx位定义了要进行采样和转换的引脚。,为了能够对端口进行连续不断的采样,通用定时器1产生的AD采集触发信号频率应高于AD采集频率。我们采用的ADCLK为1.875M,每次触发共采集16次,加上采样窗口时间为6个ADCLK,转换频率约为13K。EVA使用低速时钟HISPCP,它的的通用定时器1的时钟为60M,周期为300,为连续增计数模式,它的周期匹配频率为0.2M,能够使ADC连续不断地采集数据。,具体程序如下,voidInitADC(void)unsignedinti;AdcRegs.ADCTRL1.bit.RESET=1;/复位整个ADC模块AdcRegs.ADCTRL1.bit.SUSMOD=3;/仿真挂起时,序列发生器和其他程序逻辑立即停止AdcRegs.ADCTRL1.bit.ACQ_PS=5;/采集窗口的大小,控制SOC的脉宽,为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_SEQ1=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(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.ADCCHSELSEQ4.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;,2.3.6.EVA的初始化,使用EVA通用定时器1的周期中断触发信号,EVA使用低速时钟HISPCP,它的的通用定时器1的时钟为60M,周期为300,为连续增计数模式,它的周期匹配频率为0.2M,能够使ADC连续不断地采集数据。EVA的初始化程序如下voidInitEVA(void)EALLOW;EvaRegs.T1CMPR=0 x0080;EvaRegs.T1PR=0 x012C;EvaRegs.GPTCONA.bit.T1TOADC=1;EvaRegs.T1CON.all=0 x1042;EvaRegs.T1CNT=0 x0000;EDIS;,2.3.7.中断设置,(1)DSP的中断分为外设级、PIE级和CPU级,为了是CPU能够响应有中断出发时间引发的中断,需要将三级中断全部打开。(2)我们使用的是ADC采集完成中断,当AD模块完成8次同步采集之后触发外设计中断,对应的中断标志位ADCIFR自动置位,如果此时ADC中断使能位ADCIER为1.并且ADC中断所在的中断组对应的中断应答寄存器PIEACK的相应位为0,则将外设级中断传送到PIE级。之后将PIE级虽在组对应的中断标志位置一,检查该组对应的中断使能位是否为1,如果是一,则将该终端传送到CPU级,直后执行对应的中断服务程序。(3)为使得中断事件发生后CPU能够找到相应的中断服务程序,需要将中断服务程序的地址赋值给触发中断的外设事件在中断矢量列表(pievect)中对应的指针。,中断矢量列表中adc中断对应的指针如下图在本实例中我们通过一下语句实现,其中“ad”使我们自己编写的中断服务程序的名字。EALLOW;PieVectTable.ADCINT=,(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;,2.3.8.循环等待程序,由于ad数据采集需要一定的时间,只有当采集完成之后才能触发中断,执行相应的中断服务程序。需要一个循环等待程序,等待中断时间的发生,当发生中断时间是,跳出循环。for(;);,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清零,已屏蔽该组中其他中断,2.3.10.程序编写编译连接生成输出文件,(1)点击对程序进行编译连接、修改,直到无错误。,2.3.11.将输出文件通过仿真器输入到DSP中进行试验验证,连接好开发板、仿真器。选择“File”“Loadprogram”,出现如下图的对话框。在“Debug”中选择“.out”文件。将输出文件写入开发板。,2.3.12.实验,总结,建立一个DSP工程的步骤1.设置“SetupCCStudio”选择合适的工作模式,设置相应参数。2.启动CCS,建立新的工程,把TI官方提供的各种头文件、源文件添加到工程中。3.编写程序首先将程序分成:系统初始化、所使用的外设的初始化、三级中断设置、中断服务程序、链接命令文件(.cmd文件)和头文件几个部分。在系统初

温馨提示

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

评论

0/150

提交评论