📄 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"
#define ADC_usDELAY 5000L //L=10e-9second,ns
#define ADC_usDELAY2 20L
//---------------------------------------------------------------------------
// InitAdc:
//---------------------------------------------------------------------------
// This function initializes ADC to a known state.
//
void InitAdc (void)
{
extern void DSP28x_usDelay(unsigned long Count);
// To powerup the ADC the ADCENCLK bit should be set first to enable
// clocks, followed by powering up the bandgap and reference circuitry.
// After a 5ms delay the rest of the ADC can be powered up. After ADC
// powerup, another 20us delay is required before performing the first
// ADC conversion. Please note that for the delay function below to
// operate correctly the CPU_CLOCK_SPEED define statement in the
// DSP28_Device.h file must contain the correct CPU clock period in
// nanoseconds. For example:
//
// #define CPU_CLOCK_SPEED 6.6667L // for a 150MHz CPU clock speed
//This was done in the InitSysCtrl() function in DSP28_SysCtrl.c
//asm(" EALLOW");
//SysCtrlRegs.PCLKCR.bit.ADCENCLK = 1; // Power up clocks to ADC
//SysCtrlRegs.WDCR = 0x6F; // Disable WD
//asm(" EDIS");
AdcRegs.ADCTRL1.bit.RESET=1; //复位
NOP;
AdcRegs.ADCTRL1.bit.RESET=0; //自动清位
AdcRegs.ADCTRL1.bit.SUSMOD=3; //仿真挂起模式选择,=3立即结束
AdcRegs.ADCTRL1.bit.ACQ_PS=0; //SOC宽度=0+1ADCLK周期
AdcRegs.ADCTRL1.bit.CPS=0; //内核时钟时钟预定标=0 HSPCLK/6/1,=1 HSPCLK/6/2,ADCCLK=HSPCLK/6/1=20MHz
AdcRegs.ADCTRL1.bit.CONT_RUN=0; //=1连续转换模式自动回CONV00,=0起-停转换模式从停止处开始
AdcRegs.ADCTRL1.bit.SEQ_CASC=1; //=1级连模式,=0双排序器模式
AdcRegs.ADCTRL3.bit.ADCBGRFDN=3; // Power up bandgap/reference circuitry
DELAY_US(ADC_usDELAY); // Delay before powering up rest of ADC
AdcRegs.ADCTRL3.bit.ADCPWDN=1; // Power up rest of ADC
DELAY_US(ADC_usDELAY2); // Delay after powering up ADC
AdcRegs.ADCTRL3.bit.ADCCLKPS=3; //时钟周期倍频HSPCLK/3=25MHz
AdcRegs.ADCTRL3.bit.SMODE_SEL=1; //采样模式选择=1同步采样,=0序列采样
AdcRegs.ADCMAXCONV.all=15; //共16通道
AdcRegs.ADCCHSELSEQ1.bit.CONV00=0; //转换顺序设定
AdcRegs.ADCCHSELSEQ1.bit.CONV01=1;
AdcRegs.ADCCHSELSEQ1.bit.CONV02=2;
AdcRegs.ADCCHSELSEQ1.bit.CONV03=3;
AdcRegs.ADCCHSELSEQ2.bit.CONV04=4;
AdcRegs.ADCCHSELSEQ2.bit.CONV05=5;
AdcRegs.ADCCHSELSEQ2.bit.CONV06=6;
AdcRegs.ADCCHSELSEQ2.bit.CONV07=7;
AdcRegs.ADCCHSELSEQ3.bit.CONV08=8;
AdcRegs.ADCCHSELSEQ3.bit.CONV09=9;
AdcRegs.ADCCHSELSEQ3.bit.CONV10=10;
AdcRegs.ADCCHSELSEQ3.bit.CONV11=11;
AdcRegs.ADCCHSELSEQ4.bit.CONV12=12;
AdcRegs.ADCCHSELSEQ4.bit.CONV13=13;
AdcRegs.ADCCHSELSEQ4.bit.CONV14=14;
AdcRegs.ADCCHSELSEQ4.bit.CONV15=15;
AdcRegs.ADCST.bit.INT_SEQ1_CLR=1; //清中断标志位
AdcRegs.ADCST.bit.INT_SEQ2_CLR=1;
AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=1; //EVB SOC触发级连(cascaded sequencer)
AdcRegs.ADCTRL2.bit.RST_SEQ1=0;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; //=1,使能SEQ1中断
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0; //SEQ1中断模式选择=1每两个SEQ1中断一次,=0每个SEQ1中断一次
AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0; //屏蔽位=0,SEQ1不能由EVA启动
AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0; //=1,外部启动SEQ1
AdcRegs.ADCTRL2.bit.RST_SEQ2=0;
AdcRegs.ADCTRL2.bit.SOC_SEQ2=0; //=1,软件启动SEQ2
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0; //=1,使能SEQ2中断
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0; //SEQ2中断模式选择=1每两个SEQ2中断一次,=0每个SEQ2中断一次
AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0; //屏蔽位=0,SEQ2不能由EVB启动
AdcRegs.ADCTRL2.bit.SOC_SEQ1=0;
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -