【东软载波ESF0654 PDS开发板活动】ADC转换测试

2020-03-08 19:21发布



测试一下ES32F0654的ADC,使用内部2V参考电压,DEMO板上的电位器连接在PB00上,使用AIN14.引脚初始化模拟输入,写个宏,以后初始化就免了查手册哪个IO对应哪个AIN了。也方便移植

//*********************************************************************
//ADC 通道初始化
#define        ADC_GpioInit()        do{
    ADC_Ain14Init();        
}while(0)

//*********************************************************************
#define ADC_Ain0Init()   GPIO_Init(GPIOC, GPIO_PIN_0, 1, IO_IN_AN)
#define ADC_Ain1Init()   GPIO_Init(GPIOC, GPIO_PIN_1, 1, IO_IN_AN)
#define ADC_Ain2Init()   GPIO_Init(GPIOC, GPIO_PIN_2, 1, IO_IN_AN)
#define ADC_Ain3Init()   GPIO_Init(GPIOC, GPIO_PIN_3, 1, IO_IN_AN)
#define ADC_Ain4Init()   GPIO_Init(GPIOA, GPIO_PIN_0, 1, IO_IN_AN)
#define ADC_Ain5Init()   GPIO_Init(GPIOA, GPIO_PIN_1, 1, IO_IN_AN)
#define ADC_Ain6Init()   GPIO_Init(GPIOA, GPIO_PIN_2, 1, IO_IN_AN)
#define ADC_Ain7Init()   GPIO_Init(GPIOA, GPIO_PIN_3, 1, IO_IN_AN)
#define ADC_Ain8Init()   GPIO_Init(GPIOA, GPIO_PIN_4, 1, IO_IN_AN)
#define ADC_Ain9Init()   GPIO_Init(GPIOA, GPIO_PIN_5, 1, IO_IN_AN)
#define ADC_Ain10Init()  GPIO_Init(GPIOA, GPIO_PIN_6, 1, IO_IN_AN)
#define ADC_Ain11Init()  GPIO_Init(GPIOA, GPIO_PIN_7, 1, IO_IN_AN)
#define ADC_Ain12Init()  GPIO_Init(GPIOC, GPIO_PIN_4, 1, IO_IN_AN)
#define ADC_Ain13Init()  GPIO_Init(GPIOC, GPIO_PIN_5, 1, IO_IN_AN)
#define ADC_Ain14Init()  GPIO_Init(GPIOB, GPIO_PIN_0, 1, IO_IN_AN)
#define ADC_Ain15Init()  GPIO_Init(GPIOB, GPIO_PIN_1, 1, IO_IN_AN)


//ADC模块配置
#define        ADC_ModuleInit()        do{                                             
        adc_init_t adc_str;                                 
        adc_struct_init(&adc_str);                           
        adc_str.pos_ref    = ADC_POS_REF_2V;                 
        adc_init(ADC0, &adc_str);                           
        adc_set_normal_1st_conv_ns1(ADC0, ADC_NC_RANK_1);   
        adc_set_smpt1_cht(ADC0, ADC_SAMPLETIME_4);           
        adc_converter_enable_adcen(ADC0);                    
        adc_set_normal_channel_conv_start_ichtrg(ADC0);      
}while(0)

#define ADC_Start()     adc_set_normal_channel_conv_start_ichtrg(ADC0)
#define ADC_Channel(ch) adc_set_normal_1st_conv_ns1(ADC0, ch)
#define ADC_Done()      adc_get_stat_nche(ADC0)
#define ADC_ClrFlag()   adc_set_clr_nche(ADC0)
#define ADC_Result()    adc_get_normal_channel_val(ADC0)


测量了0.5V、1V、1.5V三个电压点,在没有校准的情况下,偏差不大于2%:
277605e0d50db87861.png

769935e0d50f61e435.png

612955e0d510ddfe92.png

335065e0d52067d0e2.png
0条回答

一周热门 更多>