原创 S3C2410 ADC电压检测源程序

2010-6-13 21:02 2874 22 24 分类: 消费电子

/*
说明:近期有人问我为什么S3C2410 ADC不好用,于是就随便调试了一下,说明开发板提供的Sample
没有问题。
这主要是对哪些初学者或者将要用用作电压检测的网友,不妨可以借鉴一下。
调试工具是ADS环境
Wince/Linux开发板都是自带好了,打开调作即可。

*/
volatile U32 preScaler;
#define LOOP 10000
#define PCLK     (266000000/4)//PCLK=FCLK/4=266Mhz
#define ADC_FREQ  2500000//ADC采样频率

void main(void)
{
 
  int voltage;
 //读电压值
  voltage=Test_Adc();   
}
/*
* function:
*    int ReadAdc(int ch)
* description:
*    Read 0-7 channel ADC value.
* parameter:
*    0-7 channel
* return:
*      0-7 channel voltage value
*/
int ReadAdc(int ch)
{
    int i;
    static int prevCh=-1;
    rADCCON = (1<<14)|(preScaler<<6)|(ch<<3); //ADC control
    if(prevCh!=ch)
    {
   rADCCON = (1<<14)|(preScaler<<6)|(ch<<3);  
   for(i=0;i
   prevCh=ch;
    }
    rADCCON|=0x1;  
    while(rADCCON & 0x1); 
    while(!(rADCCON & 0x8000)); 
    return ( (int)rADCDAT0 & 0x3ff );
}
/*
* function:
*    int Test_Adc(void)
* description:
*    Read 0-7 channel ADC value.
* parameter:
*    void
* return:
*      voltage value
*/
int Test_Adc(void)
{
    int i,key,ch_num;  
    preScaler = ADC_FREQ;   
    preScaler = PCLK/ADC_FREQ -1;   
    ch_num=3;//0-7 adc 端口号          
    return ReadAdc(3);  
}
   

文章评论2条评论)

登录后参与讨论

用户1134229 2010-8-3 08:44

阿萨德vzsd

用户1277994 2010-6-13 21:02

谢谢楼主的分享。
相关推荐阅读
用户1011588 2010-07-28 15:59
步进马达细分控制电路和C语言源代码
1、步进电机驱动器细分定义 要了解步进电机驱动器的“细分”,先要弄清步进电机“步距角”这个概念:它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如电机给出的值为 ...
用户1011588 2010-07-05 09:00
EMC之铁氧体磁珠技术及选型要点
铁氧体磁珠: 使用镍锌铁氧体材料建造多层构造的技术,主要应用在EMC领域。费话少说,直接引入正题。1、铁氧体磁珠等效电路 阻抗计算(100Mhz):|Z|=1/|Y| Y|100Mhz|=G+j(ω...
用户1011588 2010-06-12 14:24
EMC之电容谐振频率
前言:由于看此类文章都是比较专业的,所以我一般会用简洁的话来阐明主题。   EMC:如果在电路原理图设计就考虑进去,对EMC整改会相当大的影响,至少缩短EMC整改时间、LAYER次数,从而节约成本。 ...
用户1011588 2010-06-03 17:05
EMC整改浅谈
最近对一个机器进行EMC整改,第一次测试时,效果特别差。对这个图形进行分析,发现EMC波纹比较密集,很多尖峰出现,对于这种现象,不妨先从地入手,先干掉一大部分,然后才对其它少量信号各个击破,做到事倍功...
我要评论
2
22
关闭 站长推荐上一条 /2 下一条