Discuz! Board

标题: 51822 adc问题求教 [打印本页]

作者: dengzhengbing    时间: 2018-11-14 15:40
标题: 51822 adc问题求教
ADC配置函数:
/*ADC Init*/
static void adc_init(void)
{
#if ADCS_NUMBER > 0

                uint8_t        adc_list[]=ADCS_LIST;       
                               
                for(uint8_t i=0;i<ADCS_NUMBER;i++)                                                                                                                                             //ADC引脚初始化       
                {

                        nrf_gpio_cfg_input(adc_list[i], NRF_GPIO_PIN_NOPULL);                                                                                               
                }       
               
                nrf_adc_config_t config        =        {       
                                                                .resolution        =                NRF_ADC_CONFIG_RES_8BIT,                                                                     //8bit转换
                                                                .scaling                =                NRF_ADC_CONFIG_SCALING_INPUT_FULL_SCALE,                             //满刻度输入:-->关闭内部分压
                                                                .reference        =                NRF_ADC_CONFIG_REF_VBG                                                                     //1.2v内部基准
                                                                                                                        };
                nrf_adc_configure(&config);                                                                                                                                                                                                                                                                                                                                                                                                                                 
                /*adc power on*/
                NRF_ADC->POWER         = ADC_POWER_POWER_Enabled << ADC_POWER_POWER_Pos;       
                                                                                                                                       
#endif // ADCS_NUMBER > 0                                                                                                                        
}


ADC读取函数
int32_t nrf_adc_convert_single(nrf_adc_config_input_t input)
{
    uint32_t val;
//               
//                nrf_adc_input_select(input);
//    nrf_adc_start();

//    while (!nrf_adc_conversion_finished())
//    {
//    }
//    nrf_adc_conversion_event_clean();
//    val = nrf_adc_result_get();
//    nrf_adc_stop();
//    return val;
       
       
               
                nrf_adc_input_select(input);
                nrf_adc_conversion_event_clean();                        //清标志
                nrf_adc_start();       
                while (!nrf_adc_conversion_finished());                //等待ADC转换完成       
                       
                /**
                *参考电压:内部1.2v       
                *采样精度:8位
                *输入电压:引脚电压(没有内部分压)       
                *计算公式:1200/1023 = 实测电压/AdcDat
                */
                //return nrf_adc_result_get();                                //直接返回ADC数据
                val=nrf_adc_result_get()*4.7;                                //8bit采样换算成电压(mv)        -->1200/255
                nrf_adc_stop();                                                        //保证进入该函数ADC处于空闲状态
                return        val;               
}

获取的ADC数据相差太多,求教!

作者: admin    时间: 2018-11-14 15:49
[attach]1818[/attach]





欢迎光临 Discuz! Board (http://qfv8.com/) Powered by Discuz! X3