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);
}