数模转换设计_数模转换电路设计

2020-02-27 其他范文 下载本文

数模转换设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数模转换电路设计”。

DSP综合训练项目

(三)数模转换设计

姓名:

专业:测控技术与仪器 班级: 学号:120

1. 绪论

数字信号处理就是用数值计算的方式对信号进行加工的理论和技术,它的英文原名叫digital signal proceing,简称DSP。另外DSP也是digital signal proceor的简称,即数字信号处理器。数字信号处理单元实际上是一个计算机,它按照指令对二进制的数字信号进行计算。本设计中我完成了ADC的转换设计及软件设计。

2.设计任务及设计要求、设计目的采用一种ADC工作方式,对一转换序列进行ADC转换。要求:1.说明其原理;

2.写出相应程序;

设计目的:

1.学习并了解DSP产生ADC的原理; 2.学习并了解DSP芯片的基本结构和原理;

3.具体设计

3.1 DSP2812 ADC的介绍

TMS320F281x DSP 内部有一个12 位模/数转换器(Analog to Digital Converter, ADC),可有16 通道模拟输入信号, 转换时间可以在80ns 以内。16 个结果寄存器ADCRESULT0~ ADCRESULT15 存储转换结果。ADC 模块可以设置为两个独立的8 通道转换器,将一系列转换自动排序,每个模块 可以从8 个输入通道中任意选择输入。ADC 模块也可以工作在级联模式(Cascaded Sequencer Mode),自动排序器(Sequencer)就变成一个单16 通道的排序器。该 A/D 转换器的功能包括:

• 12 位ADC 模块,内含采样/保持(Sample/Hold, S/H)电路。

• 同时采样或顺序采样模式。

• 模拟电压输入范围 0~3V。

• 25 MHz 的ADC 时钟频率,转换时间短。

3.2系统框图

3.3设计需求

本次设计目的为了解DSP281X系列ADC的特点和ADC的编程方法。利用DSP自带的ADC采集信号。

系统总体流程分析:

1.在DSP启动时将系统中断关断; 2.初始化DSP系统外设; 3.初始化PWM产生设备; 4.让程序停在主程序中;.ADC程序设计

#include 〝DSP281x_Device.h 〞 //DSP281x headerfile include file #include 〝DSP281x_examples.h 〞 //DSP281x examples include file //程序中函数类型声明

interrupt vold adc_isr(void); //本程序全局中变量: uint16 loopcount;

uint16 conversioncount; uint16 voltagel1[10];uint16 voltagel2[10];main(){ //第一步:初始化系统控制PLL,watchDog,使能外设时钟

//本程序中的初始化系统控制函数可以在DSP281x_sysctrl.c找到 initsysctrl();

//对于本程序,设置HSPCLK为SYSCLKOUT/6(假设SYSCLKOUT为150Mhz,HSPCLK为25Mhz)EALLOW;//第二步:初始化GPIO //该程序函数可以在DSP281x_piectrl.c文件中找到 initGpio();//本程序不需要这一步

//第三步清除所有中断,并初始化PIE向量表 //禁止CPU中断 DINT;//初始化PIE控制寄存器到默认状态,所有PIE中断的默认状态为禁止,并且标志位被清除 //该程序函数可以在DSP281x_piectrl.c文件中找到

initipiectrl();//禁止CPU中断,清除所有CPU中断标志

IER ﹦ 0X0000;IER ﹦ 0X0000;-//使用指向外部中断服务程序(ISR)的指针初始化PIE向量表

//这将对所有表单元进行操作,即使本程序不使用的中断。这对于调试是很有用的 //外部中断服务程序(ISR)可以在DSP281x_defaultisr.c文件中找到

initipiectrl();//在本程序使用的中断被重新影射到文件中的ISR函数

EALLOW;//在写EALLOW保护寄存器,该语句是必须的pievecttable.ADCINT = &adc_isr;EDIS;//当禁止写EALLOW保护寄存器,该语句是必须的 //第四步:初始化元件的外设

//下面的函数可以在DSP281x_initperipherals.c文件中找到 //initperipherals();//本程序是不必需要的initadc();//本程序是要初始化ADC //第五步:用户代码,使能中断

//使能PIE中的ADCINT piectrlregs.PIEIER1.bit.INTx6 = 1;

IER ︳﹦M_INT1;//使能CPU中断1 EINT;//使能全局中断INTM ERTM;//使能全局实时中断DBGM Loopcount = 0;

conversioncount = 0; //配置ADC Adcregs.ADCMAXCONV.all = 0x0001; // 在设置SEQ1设置2个转换

Adcregs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // 设置ADCINA3作为第一次SEQ1转换

Adcregs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // 设置ADCINA2作为第二次SEQ1转换

Adcregs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // 设置EVASOC,从而开始SEQ1 Adcregs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 设置SEQ1中断,(每一个EOS)//配置EVA //假如EVA时钟已经在initsysctrl()被使能

Evaregs.T1CMPR = 0x0080;// 设置T1比较值 Evaregs.T1PR = 0xFFFF;// 设置周期寄存器

Evaregs.T1CON.all = 0x1042;// 使能定时器1比较(向上计数模式)//等待ADC中断

while(1)﹛

loopcount++;

﹜ ﹜

interrupt void adc_isr(void)﹛

voltage1[conversioncount] = adcregs.ADCRSULT0 ﹥﹥4;voltage2[conversioncount] = adcregs.ADCRSULT1 ﹥﹥4;//如果已经记录40次转换,则需要重新开始 if(conversioncount == 9)﹛

conversioncount = 0; ﹜

else conversioncount++;//重新初始化下一个ADC序列

adcregs.ADCTRL2.bit.RST_SEQ1 = 0; //复位SEQ1 adcregs.ADCST.bit.INT_SEQ1_CLR = 1; //清除INT SEQ1 位 piectrlregs.PIEACK.all = PIEACK_GROUP1;//应答PIE的中断 return; ﹜

5.心得

我认为,在这学期的DSP课程中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。

过这次设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。我在设计的过程中遇到了许多问题,同时也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,在此后的日子里,我会学别人之所长,去自己之所短。

《数模转换设计.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数模转换设计
点击下载文档
相关专题 数模转换电路设计 设计 数模 数模转换电路设计 设计 数模
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文