⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drv_adc.c

📁 Enhanced LPC213x device drivers,tools ADS1.2
💻 C
字号:
#include "config_60_61.h"
#include "config_GD60.h"
#include "include_GD60.h"
#include "include_GD61.h"

////
#define MAX_ADCHANNEL	8
#define ADC_MAX_POINT	20

uint16 ADC[MAX_ADCHANNEL][ADC_MAX_POINT];
extern volatile uint8 DispSecondTick;			// for display of time
///////////////////////////////////////////////////////////////////////
uint16 Start_ADC(uint8 adc_chan);
void ADC_TestPrn(void);

///////////////////////////////////////////////////////////////////////
//***************** FETCH ONE CHANNEL DATA ****************************
///////////////////////////////////////////////////////////////////////
uint16 Start_ADC(uint8 adc_chan)
{
uint32 ad_result;
static uint8 data_pt=0;

//		TimeElapseStart();

		if(adc_chan>=MAX_ADCHANNEL) return 0;		// invalid ad channel
		IRQDisable();

		AD0CR  =(1 << adc_chan)					|	// SEL 选择通道
				((LPC_FPCLK / 4000000 - 1) << 8)|	// CLKDIV=LPC_FPCLK/4000000-1,转换时钟为4MHz
				(0 << 16)						|	// BURST=0,软件控制转换操作
				(0 << 17)						|	// CLKS=0, 使用11clock转换
				(1 << 21)						|  	// PDN=1,正常工作模式
				(0 << 22)						|  	// TEST1:0=00,正常工作模式
//				(1 << 24)						|	// START=1,直接启动ADC转换
				(0 << 27);						 	// 直接启动ADC转换时,此位无效

		AD0CR |= 1 << 24 ;						// 进行第一次转换
		while((AD0DR & 0x80000000) == 0);		// 等待转换结束
		AD0CR |= 1 << 24;						// 再次启动转换
		while((AD0DR & 0x80000000) == 0);		// 等待转换结束
		
		ad_result= AD0DR;				// 读取ADC结果
		ad_result=(ad_result>>6)&0x3ff;	// 10 bits A/D
		ad_result= ad_result*3000;		// 参考电压3000 mV
		ad_result= ad_result>>10;

		ADC[adc_chan][data_pt]=(uint16)ad_result;
//		data_pt++; if(data_pt>=ADC_MAX_POINT) data_pt=0;

		IRQEnable();				// 使能IRQ中断 
//		TimeElapseStop("Start_ADC_2()");
		return ad_result;
}

////////////////////////////////////////////////////////////////////////
void ADC_TestPrn(void)
{
char buffer[200];
static uint8 SecondTick;

	if(SecondTick!=DispSecondTick){
	   SecondTick =DispSecondTick;
		
		sprintf(buffer,"ADC[0]=%d,ADC[1]=%d,ADC[2]=%d,ADC[3]=%d,ADC[4]=%d,ADC[5]=%d,ADC[6]=%d,ADC[7]=%d",
		                ADC[0][0],ADC[1][0],ADC[2][0],ADC[3][0],ADC[4][0],ADC[5][0],ADC[6][0],ADC[7][0]);
		DB_SendString(buffer);
	}
}
////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -