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

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

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

主要用到如下几个寄存器

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

这里读取ADC的值

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

Adc.c

#include "adc.h"

//=====================================================================
//名称:ADCSelect(int ch, U32 preScaler)
//功能:选择转换通道,转换器预分频值设置
//参数: ch :转换通道 preScaler:预分频值
//返回值:无
//======================================================================= void ADCSelect(int ch, u8 preScaler)
{
rADCCON=(1<<14)|(preScaler<<6)|(ch<<3); //选择通道,选择分频数 启动转换
} //=======================================================================
//名称:ADEnable()
//功能:采用置位使能方式启动AD转换,16次采样取平均值
//参数: 无
//返回值: 转换后的值
//=======================================================================
u16 ADEnable(void)
{
int i;
int val=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转换值 return val;
} //=======================================================================
//名称:ADRead()
//功能:采用读控制器的方式启动AD转换
//参数: 无
//返回值:转换后的值
//=======================================================================
u16 ADRead(void)
{
int i;
int val=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转换值 return val;
}

Adc.h

#ifndef __ADC_H
#define __ADC_H
#include "2440addr.h"
#include "def.h" void ADCSelect(int ch, u8 preScaler); u16 ADEnable(void); u16 ADRead(void); #endif

S3C2440 ADC详解的更多相关文章

  1. s3c2440串口详解

    一.UART原理说明 通用异步收发器简称UART(Universal Asynchronous Receiver/Transmitter),它用来传输串行数据:发送数据时,CPU将并行数据写入UART ...

  2. STM32—ADC详解

    文章目录 一.ADC简介 二.ADC功能框图讲解 1.电压输入范围 2.输入通道 3.转换顺序 4.触发源 5.转换时间 6.数据寄存器 7.中断 8.电压转换 三.初始化结构体 四.单通道电压采集 ...

  3. 18.Llinux-触摸屏驱动(详解)

    本节的触摸屏驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次如下图所示, 其中事件处理层的函数都是通过input_register_handler()函数注册 ...

  4. 18.Llinux-触摸屏驱动(详解)【转】

    转自:https://www.cnblogs.com/lifexy/p/7628889.html 本节的触摸屏驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次 ...

  5. SPI详解2

    串行外设接口 (SPI) 总线是一种运行于全双工模式下的同步串行数据链路.用于在单个主节点和一个或多个从节点之间交换数据. SPI 总线实施简单,仅使用四条数据信号线和控制信号线(请参见图 1). 图 ...

  6. oracle正则表达式regexp_like的用法详解

    oracle正则表达式regexp_like的用法详解 /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与IN ...

  7. 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boo ...

  8. STM32固件库详解

    STM32固件库详解   emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板 ...

  9. ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)

    前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等.本章我们准备讨论dapm框架中的另一个机制:事 ...

随机推荐

  1. cc2530 -----SampleApp.c解析

    /************************************************************************************************** ...

  2. HDU - 4994 Revenge of Nim (取石子游戏)

    Problem Description Nim is a mathematical game of strategy in which two players take turns removing ...

  3. PAT (Advanced Level) 1113. Integer Set Partition (25)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  4. Ubuntu Linux系统下的SVN客户端工具PySVN

    在Windows下面一直在用TortoiseSVN做为SVN客户端工具,但它居然没提供Linux版本,无视Linux用户的存在.它视我如空 气,偶视它如废土.开始探索尝试其他跨平台的SVN客户端,最后 ...

  5. Oracle\PLSQL Developer报“动态执行表不可访问,本会话的自动统计被禁止”的解决方案

    现象: 第一次用PLSQL Developer连接数据库,若用sys用户登录并操作则正常,若用普通用户比如haishu登录并创建一个表则报错“动态执行表不可访问,本会话的自动统计被禁止.在执行菜单里你 ...

  6. Struts1.x教程:配置文件总结

    要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml.其中web.xml用来安装Struts框架.而struts-config.xml用来配置在Struts ...

  7. c# mouseenter mousemove区别?

    onmousedown 当用户用任何鼠标按钮单击对象时触发. onmouseenter 当用户将鼠标指针移动到对象内时触发. onmouseleave 当用户将鼠标指针移出对象边界时触发. onmou ...

  8. input输入框和 pure框架中的 box-sizing 值问题

    在使用pureCSS框架的时候,遇到一个问题. input输入框,我给他们设置了宽度和padding值,我发现,在火狐和谷歌上面发现,增加padding值并不会影响最终的宽度,而在IE6 7下则会影响 ...

  9. zookeeper C API

    typedef void (*watcher_fn)(zhandle_t *zh, int type, int state, const char *path,void *watcherCtx); w ...

  10. 【HighCharts系列教程】六、去除highCharts版权信息的几种方法

    方法一:单个图表去除版权 设置Credits属性为不可用,也就是credits中enable=false,具体代码如下 <script type="text/javascript&qu ...