当前位置:首页 > 单片机 > 单片机
[导读]S3C2440拥有八通道的十位ADC, 最大转换率为2.5MHz A/D转换器时钟下的500KSPS。A/D转换器支持片上采样-保持功能和掉电模式的操作。 八个通道中有四个通道适用于电阻屏的触摸屏触摸检测,另外四个是模拟输入,分别是A[0:

S3C2440拥有八通道的十位ADC, 最大转换率为2.5MHz A/D转换器时钟下的500KSPS。A/D转换器支持片上采样-保持功能和掉电模式的操作。

八个通道中有四个通道适用于电阻屏的触摸屏触摸检测,另外四个是模拟输入,分别是A[0:3],


ADC的使用极其简单,选择时钟à选择通道à启动转换à转换完成

主要用到如下几个寄存器


负责选择时钟通道以及启动ADC


这里读取ADC的值


注意这一位,这说明转换完成读取的时候还可以触发转换,也就是相当于连续转换


Adc.c

#include"adc.h"//=====================================================================//名称:ADCSelect(intch,U32preScaler)//功能:选择转换通道,转换器预分频值设置//参数:ch:转换通道preScaler:预分频值//返回值:无//=======================================================================voidADCSelect(intch,u8preScaler){rADCCON=(1<<14)"(preScaler<<6)|(ch<<3);//选择通道,选择分频数启动转换}//=======================================================================//名称:ADEnable()//功能:采用置位使能方式启动AD转换,16次采样取平均值//参数:无//返回值:转换后的值//=======================================================================u16ADEnable(void){inti;intval=0;for(i=0;i<16;i++){rADCCON|=0x1;//使能ADC转换while(rADCCON&0x1);//判断使能ADC转换后被清零while(!(rADCCON&0x8000));//等待转换结束val+=(rADCDAT0&0x3ff);//读取ADC转换的值}val=val>>4;//计算ADC转换值returnval;}//=======================================================================//名称:ADRead()//功能:采用读控制器的方式启动AD转换//参数:无//返回值:转换后的值//=======================================================================u16ADRead(void){inti;intval=0;rADCCON|=0x2;//ADC转换通过读操作来启动for(i=0;i<16;i++){rADCCON|=0x1;//使能ADC转换while(rADCCON&0x1);//判断使能ADC转换后被清零while(!(rADCCON&0x8000));//等待转换结束val+=(rADCDAT0&0x3ff);//读取ADC转换的值}val=val>>4;//计算ADC转换值returnval;}


Adc.h

#ifndef__ADC_H#define__ADC_H#include"2440addr.h"#include"def.h"voidADCSelect(intch,u8preScaler);u16ADEnable(void);u16ADRead(void);#endif


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭