ADC介绍
什么是ADC
ADC就是模拟到数字转换器(Analog-to-Digital Converter)的缩写。
它是一种电子设备或模块,S3C2440内部拥有一个ADC外设。用于将连续变化的模拟信号转换为离散的数字信号,以便数字系统(如微处理器、微控制器等)能够对其进行处理和分析。
模拟信号:一般是指连续变化的电压信号,其数值在一定范围内变化。
数字信号:是由一系列离散的数字表示,只能取有限的值,通常以二进制形式表示。
工作原理
ADC的工作原理是:将模拟信号分割成一系列离散的取样,并将每个取样值转换为相应的数字表示。这个过程涉及到两个主要步骤:采样和量化。
采样:ADC将连续变化的模拟信号在一定时间间隔内进行取样。取样频率决定了每秒采集的样本数,通常以赫兹(Hz)表示。采样过程通过保持并测量模拟信号在每个采样时间点的电压值来实现。
量化:采样得到的连续模拟信号经过量化转换为数字形式。量化是将每个采样值映射到一个离散的数字值的过程。这通常通过比较采样值与参考电压之间的差异,并将其转换为数字表示。
ADC量化过程以及什么是ADC的分辨率
ADC量化的过程是相对于一个基准值的,这个基准值称之为基准电压。
一般采用逐次逼近法的ADC会先拿采用电压Vadc跟基准电压Vref的1/2进行比较,如果Vadc>Vref,则结果为1,否则结果为0。之后继续拿Vadc和Vref的1/4或Vref的3/4继续比较。
这个过程有点像二分法,每次比较都会使量化的结果逼近真实值。很明显,比较的次数决定了测量的精度,这个精度被称之为ADC的分辨率。
比如一个比较了8次的ADC外设,它就称为8位ADC,其结果是0~255之间的一个数值,设该数值为n,那么实际电压就是Vref * (n/255)。如果把比较次数增加到10次,结果就是0~1023之间的一个数。常见的分辨率包括8位,10位,12位和16位
S3C2440中ADC
2440具有一个10 位 CMOS ADC (模 / 数转换器),是一个 8 通道模拟输入的再循环类型设备。其转换模拟输入信号为 10 位二进制数字编码,最大转换率为 2.5MHz A/D 转换器时钟下的 500 KSPS 。
并且2440的ADC外设是为了检测LCD屏的触控功能的,由于2440只有一个ADC,所以2440在内部设计了8个通道。这8个通道在某一时刻只有一个通道是有效的并且每个通道对应一个不同的引脚。在使用ADC时,根据需要切换通道就能够采集到不同的模拟量了。
相关寄存器
根据mini2440原理图,一个可调电阻对3.3v进行分压之后接入到AIN0通道,接下来我们就使用2440的ADC采集这个经过分压之后的电压值。下面看一下ADC相关的寄存器。
2440的ADC使用非常简单,如果不使用中断的话,只需配置ADC控制寄存器即可。
通过寄存器每个位上的介绍,我们可以写一下ADC初始化代码:
void adc_init(void)
{
unsigned int t;
t = ADCCON;
t |= (1 << 14); //使能预分频(因为PLCK为50MHz)
t &= ~(0xFF << 6);
t |= (49 << 6); //设置工作频率为1MHz
t &= ~(7 << 3);
t &= ~(1 << 2);
t &= ~(1 << 1);
//选择通道AIN0,正常工作模式,禁止读启动转换,
//也就是说必须每次将该寄存器第0位置位才能开始一次转换
ADCCON