[国产单片机]

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

[复制链接]
357|0
手机看帖
扫描二维码
随时随地手机跟帖
wm20031015|  楼主 | 2020-1-2 10:17 | 显示全部楼层 |阅读模式


测试一下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
476775e0d50b1d5158.png

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

320

帖子

6

粉丝