DSP模数转换实验报告姓名:XX专业:电子与通信工程学号:XXXXXX导师:XXDSP模数、数模转换实验报告摘要:本次试验完成了F2812A片内的模数、数模转换的控制,对控制程序进行编译,并观察转换后产生的波形。关键词:模数、数模、DSP一.引言DSP是DigitalSignalProcessing的缩写,表示数字信号处理器,信息化的基础是数字化,数字化的核心技术之一是数字信号处理,数字信号处理的任务在很大程度上需要由DSP器件来完成,DSP技术已成为人们日益关注的并得到迅速发展的前沿技术。数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。二.实验原理1.TMS320F2812A芯片自带模数转换模块特性-12位模数转换模块ADC,快速转换时间运行在25mhz,ADC时钟或12.5MSPS。-16个模拟输入通道(AIN0—AIN15)。-内置双采样-保持器-采样幅度:0-3v,切记输入ad的信号不要超过这个范围,否则会烧坏2812芯片的。2.模数模块介绍ADC模块有16个通道,可配置为两个独立的8通道模块以方便为事件管理器A和B服务。两个独立的8通道模块可以级连组成16通道模块。虽然有多个输入通道和两个序列器,但在ADC内部只有一个转换器,同一时刻只有1路ad进行转换数据。3.模数转换的程序控制模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。硬件框图如下所示三.软件流程图开始初始化CPU时钟,AD采样时钟启动AD0和AD1通道采集中断中对AD0和AD1通道采集数据依次存入缓冲区Voltage1Voltage1四.实验步骤1.连接实验设备。2.准备信号源进行AD输入。①取出2根实验箱附带的信号线(如右图,两端均为单声道语音插头)。②用1根信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCIN0”插座注意插头要插牢、到底。这样,信号源波形输出A的输出波形即可送到ICETEK-VC5416-AR板的AD输入通道0。③用1根信号线连接实验箱左侧信号源的波形输出B端口和“A/D输入”模块的“ADCIN1”插座注意插头要插牢、到底。这样,信号源波形输出B的输出波形即可送到ICETEK-VC5416-AR板的AD输入通道1。④设置波形输出A:-向内侧按波形频率选择旋钮,直到标有正弦波的指示灯点亮。-上下调节波形频率选择旋钮,直到标有1K-10KHz的指示灯点亮。-调节幅值调整旋钮,将波形输出A的幅值调到最大。⑤设置波形输出B:-向内侧按波形频率选择旋钮,直到标有正弦波的指示灯点亮。-上下调节波形频率选择旋钮,直到标有100-1KHz的指示灯点亮。-调节幅值调整旋钮,将波形输出B的幅值调到最大。3.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行4.启动CodeComposerStudio2.21选择菜单Debug→ResetCPU。5.打开工程文件在项目浏览器中,双击ADC.c,打开ADC.c文件,浏览该文件的内容,6.编译、下载程序。7.打开观察窗口-打开源程序ADC.c,在有注释“软件断点1”的行上加软件断点。-选择菜单View-Graph-Time/Frequency…进行如下设置:8.运行程序,观察结果。-按“F5”键运行到断点,观察AD转换产生的波形。-按“F12”键连续运行,并调整信号源可调部分,观察实时AD采样波形随之变化。8.退出CCS五.实验程序#includeDSP281x_Device.h//DSP281x头文件#includeDSP281x_Examples.hinterruptvoidadc_isr(void);Uint16LoopCount;Uint16ConversionCount;Uint16Voltage1[1024];Uint16Voltage2[1024];main(){InitSysCtrl();//初始化cpuDINT;//关中断InitPieCtrl();//初始化pie寄存器IER=0x0000;//禁止所有的中断IFR=0x0000;InitPieVectTable();//初始化pie中断向量表EALLOW;//想改变受保护寄存器值PieVectTable.ADCINT=&adc_isr;EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregistersAdcRegs.ADCTRL1.bit.RESET=1;//重启ADCasm(RPT#10||NOP);//等待12个周期AdcRegs.ADCTRL3.all=0x00C8;AdcRegs.ADCTRL3.bit.ADCBGRFDN=0x3;//电源带隙参考电路AdcRegs.ADCTRL3.bit.ADCPWDN=1;//使其余ADC电路启动PieCtrlRegs.PIEIER1.bit.INTx6=1;IER|=M_INT1;//使能CPU中断1EINT;//使能全局中断INTMERTM;//使能全局实时中断DBGMLoopCount=0;ConversionCount=0;AdcRegs.ADCMAXCONV.all=0x0001;//设置SEQ电路AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//使ADCINA3作为SEQ1conv.AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1;//使ADCINA2作为SEQ1conv.AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;//使能EVASOC启动SEQ1AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;//使能SEQ1中断EvaRegs.T1CMPR=0x0080;//设置T1比较值EvaRegs.T1PR=0x10;//设置周期寄存器EvaRegs.GPTCONA.bit.T1TOADC=1;//使能EVASOC在EVA事件管理器EvaRegs.T1CON.all=0x1042;//使能定时器//WaitforADCinterruptwhile(1){LoopCount++;}}interruptvoidadc_isr(void){Voltage1[ConversionCount]=AdcRegs.ADCRESULT04;Voltage2[ConversionCount]=AdcRegs.ADCRESULT14;if(ConversionCount==1023){ConversionCount=0;//breakpoint}elseConversionCount++;AdcRegs.ADCTRL2.bit.RST_SEQ1=1;//重置SEQ1AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;//清除INTSEQ1位PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;return;}六.实验总结及展望本次实验收益颇丰,学到很多DSP的相关知识如怎样用C语言进行寄存器的位操作,学到了F2812中主要组成部分及其相关知识,并通过实践更好的理解了相关部位的功能,如外设中AD转换模块。还学习了CCS的配置与操作。