S5PV210 ADC转换
第一节 S5PV210的ADC
S5PV210的ADC可支持10bit和12bit,它支持10路输入,然后将输入的模拟的信号转换为10bit或者12bit的二进制数字信号。
在5MHz的时钟下,最大转换速率是1MSPS。本章只是涉及到初步的ADC转换,并不会讲解触摸屏相关知识,其结构图如下:

在Mini210S中,adc相关的原理图如下:
通道0的输入被接到可调电阻上,通过调节可调电阻,adc能转换出不同的值。
第二节 程序相关讲解
完整代码见详细代码下载链接。
1. main.c
main()函数很简单,主要是调用了adc_test()函数来测试adc,adc_test()的定义位于文件adc.c中。
2. adc.c
函数adc_test()的代码如下:
void adc_test(void)
{
printf("\r\n##################adc test################\r\n");
while(1)
{
printf("adc = %d\r\n",read_adc(0));
delay(0x100000);
}
}
通过一个while循环不断的读取通道0经过adc转换的值,核心函数是read_adc(),它主要包括5个步骤:
第一步 设置时钟。
相关代码如下:
TSADCCON0 = (1<<16)|(1 << 14) | (65 << 6);
首先使用12bit adc,然后使能分频,最后设置分频系数为66。
第二步 选择通道。
代码如下:
ADCMUX = 0; //设置寄存器ADCMUX,选择通道0。
第三步 启动转换。
代码如下:
TSADCCON0 |= (1 << 0);
while (TSADCCON0 & (1 << 0));
首先设置寄存器TSADCCON0的bit[0],启动A/D转换,然后读bit[0]以确定转换已经启动。
第四步 检查转换是否完成。
代码如下:
while (!(TSADCCON0 & (1 << 15)) );
读寄存器TsdACCON0的bit[15],当它为1时表示转换结束。
第五步 读数据。
代码如下:
return (TsdATX0 & 0xfff);
由于我们使用的12bit的模式,所以只读寄存器TsdATX0的前12bit。
第三节 实验现象
串口终端上会不断的打印出数字,数字的范围是0~4095,这是因为我们使用的是12bit的ADC。
我们通过调节可变电阻可以改变ACD转换值。效果如下:

详细代码下载链接:http://download.csdn.net/detail/klcf0220/6045033
S5PV210 ADC转换的更多相关文章
- s5pv210 AD转换
1:ADC:Analog-to-Digital Converter,模拟信号转数字信号,自然界一般为模拟信号,而SoC需要数字信号,所以之间通信需要ADC. 2:转换原理: 以逐次逼近式AD转换为例: ...
- adc转换原理
模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件.通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号.由于数字信号本身不具有实际意义,仅仅表示一个相对大 ...
- stm32片上ADC转换实验
原理图所示: BAT_DET 接到PB0 引脚,VSYS 是直流3.7V的电压.再来看下103的adc转换和引脚GPIO的关系 我们直接选用ADC1 根据上表格只能使用通道8 下面给我常用的ADC1寄 ...
- 007_STM32程序移植之_多通道ADC转换
1. 测试环境:STM32C8T6 2. 测试:使用DMA进行多通道ADC转换 3. 描述:用 ADC 连续采集 12 路模拟信号,并由 DMA 传输到内存.ADC 配置为扫描 并且连续转换模式,AD ...
- 电赛菜鸟营培训(四)——STM32F103CB之ADC转换
一.ADC概念 实现模拟信号转换成数字信号就是这样子= = 二.代码框架 #include "stm32f10x.h" void delay(u32 kk) { while(kk- ...
- ADC转换的分辨率
分辨率是指ADC能够分辨量化的最小信号的能力.分辨率用二进制位数表示.例如对一个10位的ADC,其所能分辨的最小量化电平为参考电平(满量程)的2的10次方分之一.也就是说分辨率越高,就能把满量程里的电 ...
- ADC 转换序列暂时难理解
通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,程序出错的时候理论上都会产生一个co ...
- iio adc转换应用编写
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> # ...
- STM32F207 两路ADC连续转换及GPIO模拟I2C给MT9V024初始化参数
1.为了更好的方便调试,串口必须要有的,主要打印一些信息,当前时钟.转换后的电压值和I2C读出的数据. 2.通过GPIO 模拟I2C对镁光的MT9V024进行参数初始化.之前用我以前公司SP0A19芯 ...
随机推荐
- hashlib模块(二十八)
# 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的 ...
- kubernetes控制器之DaemonSet
转载于https://blog.csdn.net/bbwangj/article/details/82867472 什么是 DaemonSet? DaemonSet 确保全部(或者一些)Node 上运 ...
- kubernetes Dashboard 使用RBAC 权限认证控制
kubernetes RBAC实战 环境准备 先用kubeadm安装好kubernetes集群,[包地址在此](https://market.aliyun.com/products/56014009/ ...
- kubernetes下的Nginx加Tomcat三部曲之一:极速体验
在生产环境中,常用到Nginx加Tomcat的部署方式,如下图: 从本章开始,我们来实战kubernetes下部署上述Nginx和Tomcat服务,并开发spring boot的web应用来验证环境, ...
- CF786B Legacy && 线段树优化连边
线段树优化连边 要求点 \(x\) 向区间 \([L, R]\) 连边, 一次的复杂度上限为 \(O(n)\) 然后弄成线段树的结构 先父子连边边权为 \(0\) 这样连边就只需要连父亲就可以等效于连 ...
- shell函数与数组
shell函数与数组 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么要使用shell函数 简单的说函数的作用就是把程序里多次调用的相同的代码部分定义成一份,然后起个名字, ...
- MYCAT分库分表
一.整体架构 1.192.168.189.130:mysql master服务,两个数据库db_store.db_user,db_store做了主从复制 db_user: 用户表users为分片表 数 ...
- 学习windows编程 day4 之 绘制随机矩形和peekMessage
#include <windows.h> #include <strsafe.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT messa ...
- java compareTo() 用法注意点
转自:http://www.2cto.com/kf/201305/210466.html compareTo就是比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1,我下面给出了例子,由于比 ...
- Thread的setDaemon(true)方法
定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开.优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务. 设置:通过setDaemon(true)来设置线程为“守护 ...