TQ2440 ADC基本应用

来源:互联网 发布:孕襄数据看男孩女孩图 编辑:程序博客网 时间:2024/05/16 14:45

  ADC,为模数转换器。S3C2440中提供的ADC转换器有8个通道,其中4个用于触摸屏,4个为正常用途{ A[0..3] }(如下图),中间有个8:1的为8选一开关,用来选通AD转换通道,INT_ADC为中断产生信号线,(XP,XM,YP,YM用于触摸屏)



ADC的基本应用主要是配置ADCCON

 注:ADC时钟来源为PCLK,配置时ADC的时钟一定要小于PCLK的1/5,而且ADC时钟频率不能大于2.5MHz

ADC需要配置的:

1.是否开启预分频,开启则设置预分频系数

2.Mux 。 8个通道中选一个通道

3.是否读取后自动开启ADC

4.开启ADC


一般通道转换后的数据放在ADCDAT0的低10位


#include "2440addr.h"#include "config.h"#define PCLK50000000#define PRSCEN1//使能预分频系数#define PRSCVL49//预分频系数,ADC Freq = (FCLK/PRSCVL + 1)#define STDBM0//正常模式#define READ_START0//读取后不自动开启ADC转换,手动开启#defineAdc_Start()rADCCON |= 1//开启ADCvoid adcInit(unsigned char channel);int adcRead(void);void uartInit(int baudrate);void putc(unsigned char c);void Main(void){int value;/*使用2号通道*/adcInit(2);uartInit(115200);while(1){value = adcRead();/*value的范围为 0 ~ 1023*/putc(value/1000 + '0');putc( (value%1000)/100 + '0');putc( (value%100)/10 + '0');putc( (value%10) + '0');putc('\n');/*延时*/for(value = 0; value<1000000;value++);}}void adcInit(unsigned char channel){/*配置ADC,手动启动*/rADCCON &= ~(0xffff);rADCCON |= ((READ_START<<1) | (STDBM<<2) | (channel<<3) | (PRSCVL<<6) | (PRSCEN<<14));}int adcRead(void){/*使能ADC*/Adc_Start();/*ADC启动后位0会自动置位0*/while(rADCCON & (1<<0));/*等待ADC转换结束*/while(!(rADCCON & (1<<15)));return ( (int)(rADCDAT0 & 0x3ff) );}/*串口通信的配置*/void uartInit(int baudrate){rGPHCON &= ~((3<<4) | (3<<6));rGPHCON |= (1<<5) | (1<<7);rULCON0 &= ~(0xff);rULCON0 |= (0x3<<0);rUCON0 &= ~(0xffff);rUCON0 |= ((1<<0) | (1<<2));rUBRDIV0 = (int)(PCLK/baudrate/16) - 1;}void putc(unsigned char c){rUTXH0 = c;while(!(rUTRSTAT0 & (1<<2)));}


0 0
原创粉丝点击