📄 dsp28_adc.c
字号:
//
// TMDX ALPHA RELEASE
// Intended for product evaluation purposes
//
//###########################################################################
//
// FILE: DSP28_Adc.c
//
// TITLE: DSP28 ADC Initialization & Support Functions.
//
//###########################################################################
//
// Ver | dd mmm yyyy | Who | Description of changes
// =====|=============|======|===============================================
// 0.55| 06 May 2002 | L.H. | EzDSP Alpha Release
// 0.56| 20 May 2002 | L.H. | No change
// 0.57| 27 May 2002 | L.H. | No change
//###########################################################################
#include "DSP28_Device.h"
//---------------------------------------------------------------------------
// InitAdc:
//---------------------------------------------------------------------------
// This function initializes ADC to a known state.
//
void InitAdc(void)
{
unsigned int i;
EALLOW;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
EDIS;
AdcRegs.ADCTRL1.bit.RESET=1;
for(i=0;i<20;i++) asm("NOP");
AdcRegs.ADCTRL1.bit.RESET=0;
AdcRegs.ADCTRL1.bit.SUSMOD=3;
AdcRegs.ADCTRL1.bit.ACQ_PS=2; //
AdcRegs.ADCTRL1.bit.CPS=0;
AdcRegs.ADCTRL1.bit.CONT_RUN=1; // 0
AdcRegs.ADCTRL1.bit.SEQ_CASC=1;
AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;
// for(i=0;i<10000;i++) NOP;
AdcRegs.ADCTRL3.bit.ADCPWDN=1;
// for(i=0;i<5000;i++) NOP;
AdcRegs.ADCTRL3.bit.ADCCLKPS=3; // 15
AdcRegs.ADCTRL3.bit.SMODE_SEL=0;
AdcRegs.MAX_CONV.bit.MAX_CONV=0;
AdcRegs.CHSELSEQ1.bit.CONV00=8; // ADCINB0
AdcRegs.CHSELSEQ1.bit.CONV01=8;
AdcRegs.CHSELSEQ1.bit.CONV02=8;
AdcRegs.CHSELSEQ1.bit.CONV03=8;
AdcRegs.CHSELSEQ2.bit.CONV04=8;
AdcRegs.CHSELSEQ2.bit.CONV05=8;
AdcRegs.CHSELSEQ2.bit.CONV06=8;
AdcRegs.CHSELSEQ2.bit.CONV07=8;
AdcRegs.CHSELSEQ3.bit.CONV08=8;
AdcRegs.CHSELSEQ3.bit.CONV09=8;
AdcRegs.CHSELSEQ3.bit.CONV10=8;
AdcRegs.CHSELSEQ3.bit.CONV11=8;
AdcRegs.CHSELSEQ4.bit.CONV12=8;
AdcRegs.CHSELSEQ4.bit.CONV13=8;
AdcRegs.CHSELSEQ4.bit.CONV14=8;
AdcRegs.CHSELSEQ4.bit.CONV15=8;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ2_CLR=1;
AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;
AdcRegs.ADCTRL2.bit.RST_SEQ1=0;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;
AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;
AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0;
AdcRegs.ADCTRL2.bit.RST_SEQ2=0;
AdcRegs.ADCTRL2.bit.SOC_SEQ2=0;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0;
AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=0;
}
static int SlipFilter[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static int index = 0;
int Adc()
{
int value, i;
long sum;
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
Delay(20);
value = (((unsigned int)AdcRegs.RESULT0)>>4)&0x0FFF;
SlipFilter[index++] = value;
if(index>=16)
{
index = 0;
}
sum = 0;
for(i=0;i<16;i++)
{
sum += SlipFilter[i];
}
sum >>= 4;
value = sum;
if(value == 0) value = 1;
return(value);
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -