gpadc API是系统提供的用于adc采集的接口
void adc_init(); //adc功能初始化,一般在板级配置.c文件已经默认调用,用户无需再重复调用。
示例:
static void WANG_printf(void *_arg)
{//adc_init(); //板级配置中默认会调用,实际使用时无需重复调用。//u32 user_ad_ch = adc_io2ch(IO_PORTA_02); //获取 PA2 对应的 AD_CH。//adc_add_sample_ch(user_ad_ch); //添加 PA2 到采集队列。//adc_set_sample_period(user_ad_ch, 500); //设置 PA2 的采样周期为500ms。//adc_delete_ch(user_ad_ch); //删除一个指定的adc采集通道。static cur_battery_level = 0;static u32 vat_adc_get_value = 0;static u32 vat_adc_get_value_blocking = 0;static u32 vat_adc_get_voltage = 0;static u32 vat_adc_get_voltage_blocking = 0;static u32 self_battery_level = 0;printf("!!!This test belongs to wch!!!start!!!\n");vat_adc_get_value = (adc_get_value(AD_CH_PMU_VBAT));printf("!!!This test belongs to wch!!!vat_adc_get_value:%d!!!\n",vat_adc_get_value);vat_adc_get_value_blocking = (adc_get_value_blocking(AD_CH_PMU_VBAT)); //阻塞式获取 AD_CH_PMU_VBAT 的 ad原始值。printf("!!!This test belongs to wch!!!adc_get_value_blocking:%d!!!\n",adc_get_value_blocking);vat_adc_get_voltage = (adc_get_voltage(AD_CH_PMU_VBAT));printf("!!!This test belongs to wch!!!vat_adc_get_voltage:%d mv!!!\n",vat_adc_get_voltage);vat_adc_get_voltage_blocking = (adc_get_voltage_blocking(AD_CH_PMU_VBAT)); //阻塞式获取 AD_CH_PMU_VBAT 的电压值,单位:mv。printf("!!!This test belongs to wch!!!adc_get_voltage_blocking:%d mv!!!\n",adc_get_voltage_blocking);cur_battery_level = battery_value_to_phone_level(); printf("!!!This test belongs to wch!!!cur_battery_level:%d\n",cur_battery_level);self_battery_level = get_self_battery_level();printf("!!!This test belongs to wch!!!self_battery_level:%d\n",self_battery_level);u16 temp_value = get_vbat_value(); printf("temp = %d\n", temp_value);u16 temp_percent = get_vbat_percent(); printf("temp = %d\n", temp_percent);printf("!!!This test belongs to wch!!!end!!!\n");
}
在app_task_loop();里面添加定时器调用就可以了:
gpadc采样流程图
gpadc采样时序图
gpadc各级通道示意图