智能车制作

标题: ad转换一直为0 怎么回事 [打印本页]

作者: 盛夏的果实    时间: 2015-4-21 11:49
标题: ad转换一直为0 怎么回事
k60 ad转换一直位0    ad=Get_AD_Channel(); 这样调用行吗?初始化话出了问题?分频有什么要求没?

作者: 玩意Tc    时间: 2015-4-21 19:50
Get_AD_Channel(); 内容是啥
作者: 564388806    时间: 2015-4-22 09:19
谁知道你怎么回事啊,都没有程序
作者: 盛夏的果实    时间: 2015-4-22 12:15
uint16 Get_AD_Channel()
{
  uint16 result=0;
PORT_PCR_REG(PORTE_BASE_PTR,1) =  PORT_PCR_MUX(0);
    result = ADC_Once(1,5,8,0);//     0--a  1---b

  return result;
作者: 盛夏的果实    时间: 2015-4-22 12:16
uint16 ADC_Once(int MoudelNumber,int Channel,uint8 accuracy,uint8 ab)//采集某路模拟量的AD值
{
                uint16 result = 0;
                uint8 ADCCfg1Mode = 0;
                ADC_MemMapPtr ADCMoudel;//保存ADC模块地址指针
                               
                switch(accuracy)
                {
                         case 8:
                           ADCCfg1Mode = 0x00;
                           break;
                         case 12:
                           ADCCfg1Mode = 0x01;
                           break;
                         case 10:
                           ADCCfg1Mode = 0x02;
                           break;
                         case 16:
                           ADCCfg1Mode = 0x03;
                           break;
                         default:
                           ADCCfg1Mode = 0x00;
                }
               
               
                if(MoudelNumber==0)//选择ADC模块0
                {
                   ADCMoudel = ADC0_BASE_PTR;
                }
                else               //选择ADC模块1
                {
                   ADCMoudel = ADC1_BASE_PTR;
                }
               
                //配置正常电源模式,总线时钟,总线时钟4分频,长采样时间使能,设置精度
                ADC_CFG1_REG(ADCMoudel) = ADLPC_NORMAL
                                                                 | ADC_CFG1_ADIV(ADIV_4)
                                                                 | ADLSMP_LONG
                                                                 | ADC_CFG1_MODE(ADCCfg1Mode)
                                                                 | ADC_CFG1_ADICLK(ADICLK_BUS);
                  
                //配置禁止异步时钟使能输出,ADxxat通道选择,高速配置,长采样时间   
                if(ab==0)
                {
                    ADC_CFG2_REG(ADCMoudel)  =    MUXSEL_ADCA
                                                     | ADACKEN_DISABLED
                                                     | ADHSC_HISPEED
                                                     | ADC_CFG2_ADLSTS(ADLSTS_20) ;
                }
                else
                {
                    ADC_CFG2_REG(ADCMoudel)  =    MUXSEL_ADCB
                                                     | ADACKEN_DISABLED
                                                     | ADHSC_HISPEED
                                                     | ADC_CFG2_ADLSTS(ADLSTS_2) ;
                }

                                                               
                       
                ADC_SC1_REG(ADCMoudel,A) = AIEN_OFF |DIFF_SINGLE | ADC_SC1_ADCH(Channel);
            
             // hw_adc_config_alt(ADC1_BASE_PTR, &Master_Adc_Config);  // 配置ADC1
        
                                
            //等待转换完成
            while (( ADC_SC1_REG(ADCMoudel,A) & ADC_SC1_COCO_MASK ) != ADC_SC1_COCO_MASK)
                {

                }
            //读取转化结果
                result = ADC_R_REG(ADCMoudel,A);      
                //清ADC转换完成标志
                ADC_SC1_REG(ADCMoudel,A) &= ~ADC_SC1_COCO_MASK;

    return result;
}




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2