当前位置: 代码迷 >> 综合 >> ARM9(S3C2440) ADC
  详细解决方案

ARM9(S3C2440) ADC

热度:21   发布时间:2023-12-08 22:29:19.0

 模拟信号/数字信号

   (1)、模拟信号是一种在时间上连续,数值上也连续的物理量,具有无穷多的数值,从自然界感知的大部分物理量都是模拟性质的,如速度,压力,温度,声音等。

   (2)、数字信号在时间上和数值上均是离散的,而离散信号的值只有真与假,是或不是,因此可以使用二进制中的0与1来表示 。

 

 

 

 

ADC驱动流程

 

 

 

 

 

ADC主要驱动程序

main.c

#define ADC_FREQ 2500000

void Main(void)
{
    /*时钟初始化*/
    Set_Clk();
    
    /*adc初始化*/
    adc_init();
    
    while(1)
    {
     /*读取转换值*/
        adc_value=ReadAdc(0);

 delay(1000) ;
    }
}

 

void adc_init(void)
{
 
 //选择输入通道,AIN0,对应开发板上W1可调电阻
 int channel=0; 
 
 /*设置分频时钟*/
 preScaler = ADC_FREQ;
 preScaler = 50000000/ADC_FREQ - 1; //PCLK=50M
 
 /*AD转换频率设置,最大频率为2.5MHz*/
 rADCCON = (1<<14)|(preScaler<<6)|(channel<<3); //setup channel
 delay(1000);  

}

 

**************************************************/    
int ReadAdc(int channel)
{
   /*开始AD转换*/
   rADCCON |= 0x01; //start ADC
 
   while(rADCCON & 0x1); //check if Enable_start is low
 
   /*检查转换是否结束*/
   while(!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high
    
   return ( (int)rADCDAT0 & 0x3ff );
}

 

 

  相关解决方案