S3C2440 ADC详解

本文详细介绍了S3C2440微控制器中ADC模块的配置、启动转换及读取过程,包括选择时钟通道、启动转换、连续转换等关键步骤,以及使用ADCSelect、ADEnable和ADRead函数实现ADC操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

S3C2440拥有八通道的十位ADC, 最大转换率为2.5MHz A/D转换器时钟下的500KSPS。A/D转换器支持片上采样-保持功能和掉电模式的操作。

  八个通道中有四个通道适用于电阻屏的触摸屏触摸检测,另外四个是模拟输入,分别是A[0:3],


ADC的使用极其简单,选择时钟à选择通道à启动转换à转换完成

主要用到如下几个寄存器


负责选择时钟通道以及启动ADC


这里读取ADC的值


注意这一位,这说明转换完成读取的时候还可以触发转换,也就是相当于连续转换


Adc.c

 

#include "adc.h"


//=====================================================================
//名称:ADCSelect(int ch, U32 preScaler)
//功能:选择转换通道,转换器预分频值设置
//参数: ch :转换通道  preScaler:预分频值
//返回值:无
//=======================================================================

void ADCSelect(int ch, u8 preScaler)
{
	rADCCON=(1<<14)|(preScaler<<6)|(ch<<3);	//选择通道,选择分频数 启动转换
}

//=======================================================================
//名称:ADEnable()
//功能:采用置位使能方式启动AD转换,16次采样取平均值
//参数: 无
//返回值: 转换后的值
//=======================================================================
u16 ADEnable(void)
{
	int i;
	int val=0;
	
	for(i=0;i<16;i++)
	{
		rADCCON |=0x1;	//使能ADC转换
		
		while(rADCCON & 0x1); //判断使能ADC转换后被清零
		
		while(!(rADCCON &0x8000)); //等待转换结束
		
		val +=(rADCDAT0 & 0x3ff);	//读取ADC转换的值
		
	}
	val = val>>4;	//计算ADC转换值
	
	return val;
}

//=======================================================================
//名称:ADRead()
//功能:采用读控制器的方式启动AD转换
//参数: 无
//返回值:转换后的值
//=======================================================================
u16 ADRead(void)
{
	int i;
	int val=0;
	
	rADCCON |=0x2;	//ADC转换通过读操作来启动
	
	for(i=0;i<16;i++)
	{
		rADCCON |=0x1;	//使能ADC转换
		
		while(rADCCON & 0x1); //判断使能ADC转换后被清零
		
		while(!(rADCCON &0x8000)); //等待转换结束
		
		val +=(rADCDAT0 & 0x3ff);	//读取ADC转换的值
		
	}
	val = val>>4;	//计算ADC转换值
	
	return val;
}

Adc.h

 

#ifndef __ADC_H
#define __ADC_H
#include "2440addr.h"
#include "def.h"

void ADCSelect(int ch, u8 preScaler);

u16 ADEnable(void);

u16 ADRead(void);






#endif


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值