1:ADC:Analog-to-Digital Converter,模拟信号转数字信号,自然界一般为模拟信号,而SoC需要数字信号,所以之间通信需要ADC。

2:转换原理:

以逐次逼近式AD转换为例:

这里以8位为例,而S5pv210SoC是可选10bit、12bit;

(1)  首先发出“启动信号”信号S。当S由高变低时,“逐次逼近寄存器SAR”清0,DAC输出Vo=0,“比较器”输出1。当S变为高电平时, “控制电路”使SAR开始工作。
(2)  SAR首先产生8位数字量的一半,即10000000B,试探模拟量的Vi大小,若Vo>Vi,“控制电路”清除最高位,若Vo<Vi,保留最高位。

(3)  在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位) 试探模拟量Vi的大小。重复这一过程,直到最低位bit0被确定。

(4)  在最低位bit0确定后,转换结束,“控制电路”发出“转换结束”信号EOC。该信号的下降沿把SAR的输出锁存在“缓冲寄存器”里,从而得到数字量输出。 从转换过程可以看出: 启动信号为负脉冲有效。 转换结束信号为低电平。

例如满量程应该是5V,所以,第一次DA输出2.5V,输入电压与2.5V比较,输入电压大,故而取2.5V-5V之间,即最高位保留1。然后在新的范围内取中间电压,即3.75V,依此类推。。。。

3:S5pv210的ADC特性

(1)  精度10bit/12bit;

(2)  最大转换速率1MSPS

(3)  模拟电压范围0-3.3

(4)  可设置普通AD模式(即TOUCH SCREEN触摸屏模式切换为普通AD模式)

3:AD工作时钟时钟频率

S5pv210的ADC时钟接在PCLC_PSYS总线上(PCLC_PSYS时钟总线频率为66MHz),一般设置分频器位65,对用的ADC时钟位1MHz,此时的转换速率为1/200KHz,

最大ADC时钟可设置为5MHz,对应的最大转换速率为1MSPS。

4:ADC数据可以通过轮询、中断两种方式来获取;采用中断模式的话,转换时间受中断历程的返回时间以及数据的读取时间影响而延迟。采用轮询方式,只要访问状态寄存器TSADCCONn,

即可知道是否转换完成。转换完成以后读取TSDATXn、TSDATYn两个寄存器的值即可。

5:s5pv210的10个ADC引脚AIN[0]~AIN[9]分别对应XadcAIN[0]~XadcAIN[9]引脚

6:常用寄存器

TSADCCON0:  

        bit16设置AD转换精度,10bit、12bit可选;

        bit15只读,状态寄存器,查看是否转换结束;

        bit14预分频器开关,设置为1;

        bit13:6分频倍率,如要设置3.3MHz,可设置为19,66/19+1=3.3,最大设置频率为5MHz,所以此位最小值为:13

        bit2设置为普通模式即可

        bit1是否开启read star模式,read star模式意思是只要读取AD转换后的寄存器数据,即重新开始AD转换,使用这种模式第一次读数据要丢掉;

        bit0开启AD转换,如果设置了read star模式,此位无效;

TSCONn:touch screen控制寄存器。

TSDATXn:数据寄存器

        bit14查看输出数据位ADC 还是TOUCH SCREEN

        bit11:0为转换后的数据

TSDATYn:数据寄存器

        bit14查看输出数据位ADC 还是TOUCH SCREEN

        bit11:0为转换后的数据

CLRINADCn:清中断写入任意一个值就可以;ADC Interrupt Clear Register

ADMUX寄存器      

7:编程

#define TSADCCON0        0xE1700000
#define TSCON0 0xE1700004
#define TSDATX0 0xE170000C
#define TSDATY0 0xE1700010
#define CLRINTADC0 0xE1700018
#define ADCMUX 0xE170001C #define _REG_TSADCCON0 *(unsigned int*)0xE1700000
#define _REG_TSCON0 *(unsigned int*)0xE1700004
#define _REG_TSDATX0 *(unsigned int*)0xE170000C
#define _REG_TSDATY0 *(unsigned int*)0xE1700010
#define _REG_CLRINTADC0 *(unsigned int*)0xE1700018
#define _REG_ADCMUX *(unsigned int*)0xE170001C static void adc_init(void)
{
_REG_TSADCCON0 |= ( << ); //设置精度为12bit
_REG_TSADCCON0 |= ( << ); //使能presaler
_REG_TSADCCON0 &= ~(0xFF << ); //设置时钟
_REG_TSADCCON0 |= ( << );
_REG_TSADCCON0 &= ~( << ); //standby为normal模式
_REG_TSADCCON0 &= ~( << ); //read_start disable _REG_ADCMUX &= ~(0xF << ); //设置mux开关为ACD1
}
static void delay_1(void){
volatile int x, y;
for(x=; x<; x++) {
for(y=; y<; y++)
;
}
}
void adc_test(void)
{
unsigned int valx, valy;
adc_init(); while() { //开始ADC转换
_REG_TSADCCON0 |= ( << ); //读取状态位,是否转换完毕,如果bit15位0的话,一直读取
while (!(_REG_TSADCCON0 & ( << ))) {
;
} //读取ADC转换后的数据
valx = _REG_TSDATX0;
valy = _REG_TSDATY0; printf("x:bit14 = %d\n", (valx & ( << )));
printf("x:bit11-0 = %d\n", (valx & (0xFFF << )));
printf("y:bit14 = %d\n", (valy & ( << )));
printf("y:bit11-0 = %d\n", (valy & (0xFFF << )));
delay_1();
}
}
 

  

s5pv210 AD转换的更多相关文章

  1. 在AD转换中的过采样和噪声形成

    1. 直接量化的过采样AD转换 此类系统的模型可以用下图表示. 图中xa(t)是输入信号,e(t)是量化引入的噪声,xd[n]是最终得到的数字信号,包含分量xda和xde. 对于M倍过采样,信号与量化 ...

  2. AD转换精度的计算

    声明原文来源于:http://wenku.baidu.com/view/1e6d8f3083c4bb4cf7ecd1c2.html 讨论AD转换分辨率的算法(zt) (1)在总长度为5米的范围里,平均 ...

  3. MSP430常见问题之AD转换类

    Q1:MSP430F149 AD 的输入阻抗有多大?A1:RC<2000欧*30PF Q2:MSP430 ADC12 模块的速度?A2: ADC12 的转换速率是转换所需的ADC12CLK 以及 ...

  4. AD转换

    一.AD转换的概念  AD转换的功能是把模拟量电压转换为数字量电压.DA转换的功能正好相反,就是讲数字量转换位模拟量. 二.芯片PCF8591介绍 PCF8591是一个单片集成.单独供电.低功耗.8- ...

  5. verilog实验3:AD转换后串口输出到PC端

    一.实验任务 通过tcl549AD转换芯片将模拟电压信号转换为数字信号,并通过串口显示到电脑上.此AD转换芯片为串行转换芯片,且转换速率要和串口选择的速率匹配.等待串口发送完后,再进行下一次AD转换. ...

  6. STM8S AD转换

    //不说那么多了,直接上程序 void ADC1_DeInit(void) { ADC1->CSR = ADC1_CSR_RESET_VALUE; ADC1->CR1 = ADC1_CR1 ...

  7. AD转换后数字量的处理

    假设模拟输入电压的最大值为5V,A/D转换器件为8位转换. [该转换器的分辨率为1/2n=0.3906%.] [能分辨输入模拟电压变化的最小值为5*0.3906%=19.5mv.] 则模拟电压与数字输 ...

  8. S5PV210 ADC转换

    第一节 S5PV210的ADCS5PV210的ADC可支持10bit和12bit,它支持10路输入,然后将输入的模拟的信号转换为10bit或者12bit的二进制数字信号.在5MHz的时钟下,最大转换速 ...

  9. 【转】AD转换中常用的十种数字滤波法

    在AD采集中经常要用到数字滤波,而不同情况下又有不同的滤波需求,下面是10种经典的软件滤波方法的程序和优缺点分析: 限幅滤波法(又称程序判断滤波法) 中位值滤波法 算术平均滤波法 递推平均滤波法(又称 ...

随机推荐

  1. XCode debug中添加查找debug和控制台的办法

    我们每一次编码完成后紧接着便是编译运行起来,看看程序运行的结果是否达到了我们的预期,此时,我们离不开控制台给我们输出必要的信息,为此, 当程序跑起来时,我们的控制台遍自己弹出来,这是不是蛮好的?  又 ...

  2. 2015 ACM/ICPC Asia Regional Shenyang Online

    1001 Traversal 1002 Best Solver 1003 Minimum Cut 类似于POJ 3417的做法. 考虑每条新边对树边的覆盖次数. 每条树边被覆盖的次数其实就是断裂这条树 ...

  3. Laravel框架开发规范-修订前期版

    1.追加App/Models目录,App/User.php迁移至App/Models目录中 ①配置内容属于架构信息.服务器信息.有必要隐藏无法提交git的信息,请使用.env文件配合env()方法进行 ...

  4. kafka消息中间件及java示例

    kafka是一个消息中间件,用于各个系统之间传递消息,并且消息可持久化! 可以认为是队列模型,也可以看作是生产者消费着模型: 简单的生产者消费者客户端代码如下: package com.pt.util ...

  5. hashMap、hashTable、treeMap的区别

    1.hashTable是线程安全的.hashMap不是线程安全的 hashmap 线程不安全 允许有null的键和值 效率高一点. 方法不是Synchronize的要提供外同步 有containsva ...

  6. Spring框架--AOP编程

    2 手动实现AOP编程 AOP 面向切面的编程, AOP可以实现"业务代码"与"关注点代码"分离 // 保存一个用户 public void add(User ...

  7. Jquery实现表格的分页

    功能描述 该分页功能不是一次将所有记录都加载出来,然后在点击按钮翻页的时候,通过设置每一条记录的display属性展示或隐藏实现分页的效果.由于后台的获取数据的接口已实现分页的功能,所以在点击翻页按钮 ...

  8. 分珠(dfs+并查集)

    1140 分珠 时间限制:500MS  内存限制:65536K提交次数:24 通过次数:18 题型: 编程题   语言: G++;GCC Description 如下图所示,有若干珠子,每颗珠子重量不 ...

  9. 使用monit搭建一个监控系统

    上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情.当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行.我们搭建监控目的不过是出现问题能够及时的知 ...

  10. 外部VBS的调用

    一.QTP调用外部VBS的方法 加到QTP的Resource中 在QTP菜单中设置, 菜单FileàSettingsàResource,将要加载的VB脚本添加进来. 举例: 步骤1:在D盘下新建一个V ...