s3c2440---ADC模数转换器

目录

一、模数转换器简述

1.1.简述

1.2.转换过程    

​编辑

1.3. ADC类别

二、普通ADC转换的实现 

2.1.设置ADC控制寄存器

2.2. 读取ADC转换数据寄存器

 三、总结


一、模数转换器简述

1.1.简述

S3c2440有一个10-bit的CMOS ADC 模数转换器支持8个模拟通道输入10位的分辨率(1024个比较器),最高速度可达500KSPS(500 千次/每秒)。

量程:3.3v

精度:10位

转换速率:500KSPS

 

1.2.转换过程    

AD转换过程:采样 、 保持、量化 、 编码

  

1.3. ADC类别

 模拟ADC,包含了2部分功能一部分是触屏功能另一部分就是普通ADC功能,分别可以产生INT_TC和INT_ADC 两个中断。8个AIN模拟输入(A[3:0],YM,YP,XM,XP)通过一个8路模拟开关MUX进行通道片选。 ADC模块共有20个寄存器。对于普通ADC转换,使用ADCCON 和 ADCDAT0即可完成控制ADCCON用于控制设置,ADCDAT0保存了转换结果。

二、普通ADC转换的实现 

                                            

如图,通过控制可变电阻的电阻值来模拟不同电压ADC转换的过程。

2.1.设置ADC控制寄存器

/*ADC初始化  ---   模数转换控制器*/
void init_adc(void)
{
	ADCCON |= (1 << 14);

	ADCCON &= ~(0xff << 6);
	ADCCON |= (49 << 6);

	ADCCON &= ~(0x7 << 3);

	ADCCON &= ~(0x1 << 2);

	ADCCON |= (0x1 << 1);

}

2.2. 读取ADC转换数据寄存器

读取前需要等待转结束

/*读取数据*/
unsigned short adc_read(void)
{
	//读取数据,自动转换
	unsigned short data = ADCDAT0;
	while(!(ADCCON & (1 << 15))); // 等待结束再读取
	data = ADCDAT0 & 0x3ff;
	return data;

}

 三、总结

        强调一下,预分频时的值会默认+1,防止设置0造成不好的结果;还有就是ADC控制寄存器的设置中,如果选择了使能读启动操作,那么就不需要设置AD转换启动且此位置在启动后被清零;读取ADC转换数据存储器的值时,一定要等待ADC转换结束

 

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值