DSP adc采集程序

DSP adc采集程序

ID:44171791

大小:36.01 KB

页数:3页

时间:2019-10-19

DSP adc采集程序_第1页
DSP adc采集程序_第2页
DSP adc采集程序_第3页
资源描述:

《DSP adc采集程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include"DSP281x_Device.h"#include"DSP281x_Examples.h"#include"f2812a.h"#include"stdio.h"#include"math.h"intConversionCount,f;intVoltage[1024],Vmax,Vmin,Vavr;//电压转换结果存储数组及一个周期内的采样值数组floatRMS=0,U0[1024],SV[];//电压有效值interruptvoidadc_isr(void);main(){InitSysCtrl

2、();//初始化时钟,CPU为15M,高速时钟Hspclk为1.5MDINT;//关闭中断InitPieCtrl();//初始化Pie寄存器IER=0x0000;//禁止所有可屏蔽中断IFR=0x0000;InitPieVectTable();//初始化Pie中断向量表EALLOW;//打开寄存器写保护PieVectTable.ADCINT=&adc_isr;//将Adc中断子程序的服务地址写入中断向量表EDIS;//禁止寄存器的访问InitAdc();//初始化Adc,完成Adc的上电InitLcd();//液

3、晶初始化/*在Pie中使能Adc的中断ADCINT*/PieCtrlRegs.PIEIER1.bit.INTx6=1;//查表知ADCINT对应的是INT1,INTx.6IER=M_INT1;//使能CPU中断EINT;//使能全局中断/*配置Adc模块*/AdcRegs.ADCMAXCONV.all=0x0000;//设置SEQ1的最大转换通道数为1AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//选择0通道AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;//选择

4、EVA作为SEQ1的触发启动信号AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;//使能SEQ1的中断操作(中断方式0)/*配置EVA*/EvaRegs.T1CNT=0x0000;//计数初值EvaRegs.T1PR=0x007D;//设置周期寄存器值为125,因为下面设的是增减计数模式,EVA的下溢启动Adc,所以采样周期是250个计数周期EvaRegs.GPTCONA.bit.T1TOADC=0x1;//设置EVA的下溢启动AdcEvaRegs.T1CON.all=0x0842;//设置

5、T1为连续增减计数模式,不分频,即时钟为高速时钟Hspclk:1.5M,ConversionCount=0;while(1)//等待中断{;}}interruptvoidadc_isr(void){inti=0,j=0,flag=0;//flag作为遇到零点的标志Voltage[ConversionCount]=AdcRegs.ADCRESULT0>>4;U0[ConversionCount]=3.0*Voltage[ConversionCount]/4095;if(ConversionCount==1023)/

6、/如果采样点数达到了1024{PieCtrlRegs.PIEIER1.bit.INTx6=0;//禁止中断请求ConversionCount=0;/*求出1024个点中的最大最小值和中间值*/Vmax=Voltage[0];Vmin=Voltage[0];for(i=0;i<1024;i++){if(VmaxVoltage[i])Vmin=Voltage[i];//求出最小值}Vavr=(Vmax-Vmin)/2;//求出中间值

7、for(i=1;i<1024;i++){if((Voltage[i-1]<=Vavr)&&(Voltage[i]>=Vavr)){flag++;}if(flag==1){SV[j]=U0[i];//U0[i]就是对应的Voltage[i]的模拟值RMS+=SV[j]*SV[j];j++;}if(flag==2){i=1024;flag=0;}}RMS=sqrt(RMS/j);rg=(int)RMS;r1=((int)(RMS*10))%10;r2=((int)(RMS*100))%10;f=(1500000/25

8、0)/j;fb=f/100;fs=(f-fb*100)/10;fg=f-fb*100-fs*10;lcd_write_dy();lcd_write_pl();PieCtrlRegs.PIEIER1.bit.INTx6=1;//使能中断请求}elseConversionCount++;/*复位SEQ1,等待触发信号重启下次转换*/AdcRegs.ADCTRL2.bit.RS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。