作业帮 > 综合 > 作业

怎么实现AD转换.#include "DSP2833x_Device.h" #include "DSP2833x_Exa

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/25 04:37:48
怎么实现AD转换.
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#define POST_SHIFT 0
#define INLINE_SHIFT 1
#define NO_SHIFT 0
// ADC start parameters
#if (CPU_FRQ_150MHZ)
#define ADC_MODCLK 0x3
#endif
#if (CPU_FRQ_100MHZ)
#define ADC_MODCLK 0x2
#endif
#define ADC_CKPS 0x0
#define ADC_SHCLK 0x1
#define AVG 1000
#define ZOFFSET 0x00
#define BUF_SIZE 512
float SampleTable[BUF_SIZE];
float dianya[BUF_SIZE];
float sum=0;
void main()
{
Uint16 i;
Uint16 array_index;
InitSysCtrl();
EALLOW;
SysCtrlRegs.HISPCP.all = ADC_MODCLK;
EDIS;
DINT;//禁止中断
InitPieCtrl();
// Disable CPU interrupts and clear all CPU interrupt flags(标志):
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
InitAdc();
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK; // Sequential mode(顺序模式):Sample rate= 1/[(2+ACQ_PS)*ADC clock in ns]
AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS; // 预分频用
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode 1 级联模式 0双排序模式
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x1;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run 连续模式
AdcRegs.ADCTRL1.bit.SEQ_OVRD = 1;
AdcRegs.ADCCHSELSEQ1.all = 0x0;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0;
// Clear SampleTable
for (i=0; i>4);
\x05\x05\x05dianya[array_index]=(SampleTable[array_index]/4095)*2.924;
\x05\x05\x05sum=sum+dianya[array_index];
\x05\x05\x05DELAY_US(100);
\x05\x05}
\x05\x05sum=sum/512;
\x05\x05\x05\x05WriteCmd12864(0x90);
\x05\x05\x05\x05delay(5);
\x05\x05\x05\x05display(sum);
\x05\x05\x05\x05delay(5);
\x05//\x05\x05\x05WriteCmd12864(0x88);
\x05//\x05\x05\x05delay(5);
\x05//\x05\x05\x05display(12);
\x05\x05\x05delay(5);
\x05\x05\x05sum=0;
\x05}
}
怎么实现AD转换.#include
for语句从AdcRegs.ADCRESULT0采集512个数据(电压模拟值),存于取样表SampleTable数组,同时将采样数据转换成实际电压数值,存放于dianya数组.将512个电压值求平均值,作为当时的电压值(sum先累加再平均)
然后显示出来并且延时.
整个过程无限循环(while(1){}).