📄 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)
{ double k;
/*** Reset the ADC module ***/
AdcRegs.ADCTRL1.bit.RESET = 1; // Reset the ADC module
asm(" RPT #12 || NOP"); // Must wait 12-cycles (worst-case) for ADC reset to take effect
/*** Must follow the proper ADC power-up sequence ***/
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry
for(k=0;k<2000;k++)
{asm(" NOP");} // Delay before powering up rest of ADC
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC
// DelayUs(20); // Wait 20us before using the ADC
for(k=0;k<4000;k++)
{asm(" NOP");}
//设置adc的时钟
AdcRegs.ADCTRL1.bit.ACQ_PS = 1; //采样保持脉冲个数,即SH为1+1=2个ADCCLK
AdcRegs.ADCTRL1.bit.CPS=0; //预定标器
AdcRegs.ADCTRL3.bit.ADCCLKPS =3; // HSPCLK/[6*(ADCTRL1[7]+1)]HSPCLK为150MHz,而adc工作频率小于等于25MHz.
// 设置adc的各寄存器
AdcRegs.ADCTRL3.bit.SMODE_SEL =0; //设置序列采样模式
AdcRegs.MAX_CONV.all = 0x0001; // 定义了一次转换中,完成的最大转换数为1+1=2;
AdcRegs.CHSELSEQ1.bit.CONV00 = 0x0; // 把 ADCINA0 设置为 SEQ1 的adc的第一条转换通道.result0存放转换结果
AdcRegs.CHSELSEQ1.bit.CONV01 = 0x1; // 把 ADCINA1 设置为SEQ1 的第二条adc转换输入通道.result1存放转换结果
AdcRegs.ADCTRL1.bit.CONT_RUN = 0;//START-STOP MODE
AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // 允许EVA触发启动SEQ1,可对事件管理器编程,以便在各种事件中启动下一个转换。
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // SEQ1中断请求使能。本位使能INT_FLAG_SEQ1向CPU SEQ1的中断请求
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -