一、ADC简介
电子元器件
ADC(Analog to Digital Convert)即模数转换器:指一个能将模拟信号转化为数字信号的电子元件
CPU只能处理数字信号
ADC主要参数
ADC的分辨率一般以输出二进制数的位数来表示,当最大输入电压一定时,位数越高,分辨率越高; n位的ADC能区分输入电压的最小值为满量程输入的1/(2^n), 比如一个12位的ADC,最大输入电压为1.8v,那么该ADC能区分的最小电压为1.8v/(2^12)≈0.00044v,当转换的结果为m时,则实际的电压值为m*(1.8v/212);
二、Exynos4412下的ADC控制器
1.2.2. 电路图:
引脚
看到这几个引脚只有一个名字,是ADC专用的引脚
芯片手册中的ADC功能:
2.A/ D C 转换时间 :实际使用的时钟5us/5
三、ADC寄存器详解
1.寄存器描述2.ADC控制寄存器
3.ADC 存储转化结果寄存器
4.选择转换通道
4412内部只有一个ADC转换器,通过分时复用,同一时间只能转一个,不能同时转换
四 、ADC编程
#include"exynos_4412.h"
int main()
{
unsigned int AdcValue;
//将ADC的精度设置成12bit
ADCCON = ADCCON | (1<<16);
//使能ADC的分频器
ADCCON = ADCCON |(1<<14);
//设置ADC的分频值 ADC时钟频率= PLCK/(19+1)=5MHZ
//ADC的采样频率=5MHZ/5=1MHZ
ADCCON = ADCCON &(~(0xFF << 6)) | (19<<6);
//关闭待机模式,使能正常模式
ADCCON = ADCCON &(~(1<<2));
//关闭通过读使能AD转换
ADCCON = ADCCON & (~(1<<1));
//选择转化通道 3通道
ADCMUX = 3;
while(1)
{
//开始转化
ADCCON = ADCCON | 1;
//等待转换结束
while(!(ADCCON & (1<<15)));//非0为真
//读取转换结果
AdcValue = ADCDAT & 0xFFF;//高22位清0
//将结果转换成实际的电压值,mv毫伏
AdcValue = AdcValue * 0.44;
//打印实验结果
printf("AdcValue = %dmv\n",AdcValue);
}
return 0;
}