1、班级:姓名:学号:实验报告2实验项目名称:模数转换实验同组人: 实验时间:2015.12.20 5.6.7.8节 实验室:K2-406 DSP室 指导教师:叶天凤一、实验目的1、掌握AD转换的基本过程;2、熟悉TMS320LF2407A片内AD转换模块的技术指标和常用方法。二、实验主要仪器与设备计算机,ICETEK-LF2407-EDUR 验箱三、实验原理1、TMS320LF2407A模数转换模块特性- 带内置采样和保持的10位模数转换模块ADC,最小转换时间为500nso- 多达16个的模拟输入通道(ADCIN0-ADCIN15 )。- 自动排序的能力。一次可执行最多16个通道的“自动转换”
2、,而每次要转换的通道都可 通过编程来选择。- 两个独立的最多可选择8个转换通道的排序器可以独立工作,也可以级连后工作。- 排序控制器可决定模拟通道转换的顺序。- 可单方4访问的16个转换结果寄存器。- 多个触发源启动转换;- 软件设置启动标志;- 事件管理器(共两个)提供多个事件源;- 外部ADCSOC脚。- 灵活的中断控制。- 采用和保持获取时间窗口有单独的预定标控制。- 内置校验模式和自测试模式。2、模数转换工作过程- 模数转换模块接到启动转换信号后,按照排序器的设置,开始转换第一个通道的数据;- 经过一个采用时间的延迟后,将采用结果放入转换结果寄存器保存;- 按顺序经行下一个通道的转换;
3、- 如果为连续转换方式则从新开始转换过程;否则等待下一个启动信号。3、模数转换的程序控制模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在 CPU忙于其他工作室时可以可以少占用处理处理时间。设计转换程 序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换手 段,也要能及时地保存结果。由于TMS320LF2407aSPE片内的AD转换精度是10位的,转换结果的高10位为所需数值,所以在保留时应注意将结果的低 6位去除,取出高10位有效数字。4、实验程序分析本实验程序设计设置DS啄用连续采集的方式工作,同时采集两个通道(ADCIN0,
4、 ADCIND的模拟输量输入;使用片内通过定时器1产生定时中断,用以定时保存转换数据。源程序框图如下所示:开始主程序框图:-9 -对ADC模块和定时器进行初始化并启动定时N .定时器中断服务程序框图:本实验的源程序如下:#include ”2407c.h#define ADCNUMBER 256void interrupt gptimel(void); /*中断服务程序,用于设置保存标志*/void ADInit(void); /*初始化A/D转换模块和通用定时器1 */ioport unsigned char port000c; /* I/O 端口用于设置 ICETEK-2407-A 板上指
5、示灯 */unsigned int uWork,uWork1,nADCount,nLed,*pResult1,*pResult2;int nNewConvert,nWork;unsigned int nADCIn0ADCNUMBER;/* 存储区1,保存通道ADCIN0的转换结果,循环保存*/unsigned int nADCIn1ADCNUMBER;/* 存储区2,保存通道ADCIN1的转换结果,循环保存*/main()asm( CLRCSXM);/*清标志,关中断 */asm( CLRCOVM);asm( CLRCCNF);pResult1=RESULT0;pResult2=RESULT1
6、;nNewConvert=0;*WDCR=0x6f;*WDKEY=0x5555;*WDKEY=0xaaaa; /*关闭看门狗中断 */*SCSR1=0x81fe; /*打开所有外设,设置时钟频率为 40MHz */uWork=(*WSGR); /* 设置 I/O 等待状态为 0 */uWork&=0x0fe3f;(*WSGR尸uWork;ADInit(); /*初始化A/D相关设备*/*IMR=3;/*使能定时器中断*/*IFR=0xffff; /*清所有中断标志*/asm( clrc INTM); /* 开中断 */while ( 1 )if ( nNewConvert ) /*如果保存标志
7、置位,以下开始转换和保存转换结果*/nNewConvert=0; /* 清保存标志 */uWork=(*pResult1); /* 取 ADCINT0 通道转换结果 */uWork=6; /*移位去掉低6位*/nADCIn0nADCount=uWork;/* 保存结果 */uWork=(*pResult2); /* 取 ADCINT1 通道转换结果 */uWork=6; /*移位去掉低6位*/nADCIn1nADCount=uWork;/* 保存结果 */ nADCount+;if ( nADCount=ADCNUMBER ) /*缓冲区满后设置指示灯闪烁 */ nADCount=0;/* 中
8、断位置 */nWork+;if ( nWork=16 ) nWork=0;nLed+; nLed&=0x0f;port000c=nLed; void ADInit(void)/* 初始化设置 */int i;for ( i=0;iADCNUMBER;i+ )/* 缓冲区清 0 */nADCIn0i=nADCIn1i=0;port000c=0;/*关指示灯*/*ADCTRL1= 0x2040;*MAXCONV = 0x1;*CHSELSEQ1=0x10;*ADCTRL2= 0x2000;/*设置连续转换模式*/*每次完成转换两个通道*/*转换次序,先 ADCIN0,再ADCIN1 */*启动转换
9、*/nADCount=nLed=nWork=0;/*以下设置通用定时器参数*/*EVAIMRA = 0x80; /* 使能 T1PINT */*EVAIFRA = 0xffff; /* 清中断标志 */*GPTCONA = 0x0100;*T1PR = 2000; /* 保存结果周期=2000*25ns=50us=20KHz */*T1CNT = 0;/*计数器从0开始计数*/*T1CON = 0x1040; /*连续增计数方式,启动计数器 */void interrupt gptime1(void)uWork1=(*PIVR);switch ( uWork1 )case 0x27: nNew
10、Convert=1;/*设置保存标志*/ (*EVAIFRA)=0x80;/* 清中断标志位 */ break;四、预习要求做实验前必须做好预习,明确实验目的、实验内容及步骤,对实验程序进行认真阅读及 分析。五、实验内容及步骤1、实验准备(1)连接设备关闭计算机和实验箱电源;检查ICETEK-LF2407-A板上JP6的位置,应连接在1-2位置(靠近DSPE片端), 即设置DSPX作在MPTJ式;用实验箱附带的信号连接线连接第二信号源(2)开启设备:打开计算机电源打开实验箱电源开关,打开ICETEK-LF2407-A板上电源开关,注意板上指示灯 DS1 灭、DS2和DS3亮;打开控制模块的电源
11、开关;如使用USB仿真器用附带的USB电缆连接计算机和仿真器相应接口,注意仿真器 上两个指示灯均亮。(3) 设置 Code Composer Studio为 Emulator方式:参见“Code Composer Studio入门实验”之四.3。(4)启动 Code Composer Studio双击桌面上 “CCS C2000” 图标,启动 Code Composer Studio2.22、打开工程文件,浏览程序-打开菜单 “ Project” 的 “Operf 项;选择 D;2407EDULabLab8-AD 目录的 “adc.pjt”。-在项目浏览器中,双击ad.c,激活ad.c文件,浏
12、览该文件的内容,理解各语句作用。3、 编译工程单击“Project”菜单,“Rebuild all”项,编译工程中的文件,生成 adc.out文件。4、 下载程序单击“File”菜单,“Load program”项,选 D:2407EDULabLab67-Timer 目录中的 Timer.out文件,通过仿真器将其下载到 2407A DSP上。5、打开观察窗口- 选择菜单“ View”、“Graph、“Time/Frequency”作如下设置,然后单击“ OK”按钮;- 选择菜单“ View”、“Graph、“Time/frequency”作如下设置,然后单击“ OK”按钮- 在弹出的图形窗口
13、中单击鼠标右键,选择“ Clear Display”。- 再有“终端为止”注释的语句上加上软件跟踪断点(Toggle Breakpoint),即单击语句后按F9键;通过设置,我们打开了两个图形窗口观察两个通道模数转换的结果5、 设置信号源由于模数输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在03.3V之间。实验箱上信号源输出为03.3V,否则容易损坏DSP芯片的模数采集模块。首先设置一号信号源(上部)开关为“关”。设置实验箱上一号信号源的“频率选择” 在“100Hz1KHz”档,“波形选择”在“三角波”档,“频率微调”选择较大位置靠近最大 值,“幅值微调”选择最大。开启一
14、号信号源开关,一号信号源指示灯亮。首先设置二号信号源(下部)开关为“关”。设置实验箱上二号信号源的“频率选择” 在“100Hz1KHz”档,“波形选择”在“正弦波”档,“频率微调”选择适中位置,“幅值微 调”选择最大。开启二号信号源开关,二号信号源指示灯亮。6、 运行程序观察结果- 单击“Debug”菜单,“Run”项,运行程序;- 当程序停在所设置的软件断点上时,观察“ADCIN0、“ADCIN1 ”窗口中的图形显示;- 适当改变信号源的四个调节旋钮的位置,按 F5键再次运行到断点位置,观察图形窗口 中的显示。注意:输入信号的频率不能大于 10KHz,否则会引起乱叠失真,而无法观察到波 形,
15、如果有兴趣,可以试着做一下,观察采样失真后的图形。8、停止运行结束实验六、实验结果1、用实验中的设置,我们可以看到如下结果(将所观察的波形粘贴在此)2、实验程序使用定时器中断去读取模数转换的结果,这是一种较为简单的方法。用这种 方法,没有考虑到 A/D转换的精确时钟,必然会造成保存的结果中发生多点(重复)、丢点 等不精确的结果。在要求较高的场合,一般采用使用定时器中断启动A|D转换,在相应转换完成后的中断信号,将结果保存这种方案。七、思考题1、若同时采集三个通道(ADCIN0, ADCIN1, ADCIN2 )的模拟量输入,将怎么修改代码? 请将修改的程序写出来,并附上 ADCIN2通道的结果。2、TMS320LF2407A DSP片内的A/D模块是多少位的?有多少个模拟输入通道?如果给 定了实际采集通道的个数及顺序,分别设置什么寄存器来满足具体的要求,以及去什么寄存 器看其通道的结果?八、实验总结指导教师批阅及成绩指导教师签名: