收藏 分销(赏)

DSP模数转换实验报告.doc

上传人:人****来 文档编号:4714609 上传时间:2024-10-10 格式:DOC 页数:6 大小:69.02KB 下载积分:6 金币
下载 相关 举报
DSP模数转换实验报告.doc_第1页
第1页 / 共6页
DSP模数转换实验报告.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
DSP模数转换实验报告 姓名: XX 专业:电子与通信工程 学号:XXXXXX 导师: XX DSP模数、数模转换实验报告 摘要:本次试验完成了F2812A片内的模数、数模转换的控制,对控制程序进行编译,并观察转换后产生的波形。 关键词:模数、数模、DSP 一.引言 DSP是Digital Signal Processing的缩写,表示数字信号处理器,信息化的基础是数字化,数字化的核心技术之一是数字信号处理,数字信号处理的任务在很大程度上需要由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 通道采集数据依次存入 缓冲区Voltage1 Voltage1 四.实验步骤 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.设置Code Composer Studio 2.21在硬件仿真(Emulator)方式下运行 4.启动Code Composer Studio 2.21 选择菜单Debug→Reset CPU。 5.打开工程文件 在项目浏览器中,双击ADC.c,打开ADC.c文件,浏览该文件的内容, 6.编译、下载程序。 7.打开观察窗口 -打开源程序ADC.c,在有注释“软件断点1”的行上加软件断点。 -选择菜单View->Graph->Time/Frequency…进行如下设置: 8.运行程序,观察结果。 -按“F5”键运行到断点,观察AD转换产生的波形。 -按“F12”键连续运行,并调整信号源可调部分,观察实时AD采样波形随之变化。 8.退出CCS 五.实验程序 #include "DSP281x_Device.h" // DSP281x头文件 #include "DSP281x_Examples.h" interrupt void adc_isr(void); Uint16 LoopCount; Uint16 ConversionCount; Uint16 Voltage1[1024]; Uint16 Voltage2[1024]; main() {InitSysCtrl();//初始化cpu DINT;//关中断 InitPieCtrl();//初始化pie寄存器 IER = 0x0000;//禁止所有的中断 IFR = 0x0000; InitPieVectTable();//初始化pie中断向量表 EALLOW; // 想改变受保护寄存器值 PieVectTable.ADCINT = &adc_isr; EDIS; // This is needed to disable write to EALLOW protected registers AdcRegs.ADCTRL1.bit.RESET = 1; //重启ADC asm(" 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中断 1 EINT; // 使能全局中断 INTM ERTM; // 使能全局实时中断 DBGM LoopCount = 0; ConversionCount = 0; AdcRegs.ADCMAXCONV.all = 0x0001; // 设置SEQ电路 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // 使ADCINA3 作为 SEQ1 conv. AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // 使ADCINA2 作为 SEQ1 conv. AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // 使能 EVASOC 启动SEQ1 AdcRegs.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; //使能定时器 // Wait for ADC interrupt while(1) { LoopCount++; } } interrupt void adc_isr(void) { Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4; Voltage2[ConversionCount] = AdcRegs.ADCRESULT1 >>4; if(ConversionCount == 1023) {ConversionCount = 0;//breakpoint } else ConversionCount++; AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; //重置SEQ1 AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // 清除 INT SEQ1位 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; return; } 六. 实验总结及展望 本次实验收益颇丰,学到很多DSP的相关知识如怎样用C语言进行寄存器的位操作,学到了F2812中主要组成部分及其相关知识,并通过实践更好的理解了相关部位的功能,如外设中AD转换模块。还学习了CCS的配置与操作。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服