1.9. GPADC

gpadc API是系统提供的用于adc采集的接口

1.9.1. adc_get_value

获取一个指定通道的 adc 原始值。

原型:

u32 adc_get_value(u16 real_ch);

参数:

real_ch

指定通道

返回值

adc原始值

1.9.2. adc_get_voltage

获取一个指定通道的实际电压值,单位mv。

原型:

u32 adc_get_voltage(u16 real_ch);

参数:

real_ch

指定通道

返回值

实际电压值 单位:mv;如果获取失败,返回值为-1

1.9.3. adc_value_to_voltage

将 adc 原始值转换为电压值。使用传入的 vbg 值进行电压值换算。

原型:

u32 adc_value_to_voltage(u32 adc_vbg, u32 adc_ch_val);

参数:

adc_vbg

传入的vbg参考值

adc_ch_val

adc原始值

返回值

实际电压值 单位:mv

1.9.4. adc_get_voltage_blocking

阻塞式获取一个指定通道的实际电压值。调用时会即时采集获取通道电压,调用时不需要延时等待。

注:如果中断采集和阻塞式采集同时调用,可能会因为中断采集占用ADC硬件导致阻塞式采集失败,因此注意该函数的返回值是否为合理的电压值

原型:

u32 adc_get_voltage_blocking(u16 real_ch);

参数:

real_ch

指定通道

返回值

实际电压值 单位:mv

1.9.5. adc_ch2port

将传入的 ADC_CH 转换成对应的 IO 并返回。

原型:

u32 adc_io2ch(u16 real_ch);

参数:

real_ch

ADC普通IO通道

返回值

IO

1.9.6. adc_add_sample_ch

添加一个指定的 adc 通道到采集队列,采集队列最大支持10个采集通道,用户传参时的通道选择adc_drv.h中ADC_CH开头的宏。

最大支持通道数由 adc_drv.h 文件中 ADC_MAX_CH_NUM 宏控制。

原型:

u32 adc_add_sample_ch(u16 real_ch);

参数:

real_ch

指定通道

返回值

指定通道所在队列的编号

1.9.7. adc_remove_sample_ch

删除一个指定的adc采集通道。

原型:

u32 adc_remove_sample_ch(u16 real_ch);

参数:

real_ch

指定通道

返回值

指定通道所在队列的编号

1.9.8. adc_init

功能:

adc中断采集功能初始化,一般init.c调用,用户无需再重复调用。

原型:

void adc_init();

参数:

返回值

1.9.9. adc_kick_start

功能:

触发一次 adc 采集队列,定时调用。

原型:

int adc_kick_start(void (*adc_scan_over)(void));

参数:

adc_scan_over

回调函数指针,ADC完成一轮队列采集后响应

返回值

0为成功;非0为失败,具体查看errno-base.h

1.9.10. adc_sample_vbg

功能:

触发ADC阻塞式采集VBG(ADC的参考电压)的AD值,主循环500MS消息调用。

原型:

u16 adc_sample_vbg(u32 re_sap_times);

参数:

re_sap_times

采集次数

返回值

采集成功返回vbg的AD值;失败返回ADC_VALUE_NONE

1.9.11. 参考demo

void adc_test_demo(void)
{
    adc_init(); //system_init()中默认调用,初始化之后才能添加需要采集的通道到队列。

    adc_add_sample_ch(ADC_CH_PA2); //添加 PA2 到采集队列。

    u32 user_ad_value = adc_get_value(ADC_CH_PA2); //获取 PA2 的 ad原始值。
    printf("user_ad_value = %d\n", user_ad_value);

    u32 user_ad_voltage = adc_get_voltage(ADC_CH_PA2); //获取 PA2 的电压值,单位:mv。
    printf("user_ad_voltage = %d mv\n", user_ad_voltage);


    u32 adc_voltage_pa6 = adc_get_voltage_blocking(ADC_CH_PA6); //阻塞式获取 PA6 的电压值,单位:mv。
    printf("adc_voltage_pa6 = %d\n", adc_voltage_pa6);
}