19.ADC实验

本文详细介绍了ADC(模拟-to-数字转换器)的工作原理,特别是12位ADC的分辨率和精度概念。以4412芯片为例,展示了如何配置ADC控制器进行电压测量,包括设置ADC分频器以达到合适的转换频率,并通过编程实现对滑动变阻器电压的实时转换和显示。实验中,ADC的转换通道被设定为3,利用ADC寄存器进行控制,并通过读取转换结果计算实际电压值。
摘要由CSDN通过智能技术生成

什么是ADC

CPU只认识数字信号。ADC将外设采集到的模拟信号转换成数字信号给CPU。
在这里插入图片描述
模拟信号:
模拟信号

数字信号:
在这里插入图片描述

ADC的主要参数

分辨率(精度)

分辨率表示会触发数字量变化的最小模拟信号的变化量。分辨率又称精度,通常以数字信号的位数来表示。ADC的分辨率以输出二进制(或十进制)数的位数表示。
12位的ADC,最大值是每一位为1,即2^12-1,最小值为0,因此ADC的精度是1.8v/2 ^12,因此此ADC理论上能区分2 ^n个不同等级的输入模拟电压。
在这里插入图片描述

4412下的ADC控制器

本次实验的目的:测一下滑动变阻器VR1的电压
由DEV的电路原理图可知:滑动变阻器的电压由XadcAIN3决定,其电压范围是0-1.8v
在这里插入图片描述

在Core board上搜索可知:引脚功能单一,因此不用设置引脚功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PCLK的频率是100MHz
在这里插入图片描述

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)));
		/*读取转换结果*/
		AdcValue = ADCDAT & 0xFFF;
		/*将结果转换成实际的电压值mv,位数乘以精度*/
		AdcValue = AdcValue * 0.44;
		/*打印转换结果*/
		printf("AdcValue = %dmv\n",AdcValue);

	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值