S3C2440 ADC详解
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【S3C2440 ADC详解】
推荐阅读
- ARM中断寄存器详解
- diy手工制作鞋柜的教程详解
- 磁力锁如何正确安装?磁力锁安装方法详解
- ARM开发步步深入之掌握ADC和触摸屏
- stm32_中断优先级详解
- 2440-中断寄存器详解
- 小编详解房子装修流程及报价预算
- 卫生间地漏安装细则 详解卫生间地漏防水做法
- 装修大课堂:毛坯房装修步骤详解 全面解决装修烦恼
- 装修房子的步骤详解 家装大讲堂:装修“菜鸟”入门攻略