2812 AD示例程序为什么采不到数据

来源:百度知道 编辑:UC知道 时间:2024/07/03 12:47:29
示例是这样的:
//编译前确保CPU时钟频率在DSP281x_Examples.h 中正确定义
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
interrupt void adc_isr(void);
//全局变量定义
Uint16 LoopCount;
Uint16 ConversionCount;
Uint16 Voltage1[3];
Uint16 Voltage2[3];
main()
{
InitSysCtrl();
//高速外围时钟定标寄存器,配置:系统时钟/6=25Mhz (系统时钟150Mhz)
EALLOW;
SysCtrlRegs.HISPCP.all = 0x3; //外围高速时钟HSPCLK = 系统时钟/(2*HISPCP)
EDIS;
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.ADCINT = &adc_isr;
EDIS;
InitAdc(); //初始化ADC
//在PIE中使能ADCINT
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
IER |= M_INT1; //使能CPU中断1
EINT; //使能全局中断INTM
ERTM; //使能全局实时中断 DBGM
LoopCount = 0;
ConversionCount = 0;
//配置ADC
Adc

Timer1控制寄存器;TMODE 连续增;

但是现在采集出来的数据有点怪。没任何输入时,AD0,AD1分别为1.17V和2.5V不知道是怎么搞的

这个问题是干扰信号. 这个信号进AD转换前, 应当处理一下.
通过一个1K电阻, 再通过0.1uF电容对地, AD0 or AD1 就接到这个电容上去读,
你这个问题就可以解决了.