GPADC =================== gpadc API是系统提供的用于adc采集的接口 adc_get_value ------------------------------ 获取一个指定通道的 adc 原始值。 原型: .. code-block:: c u32 adc_get_value(u16 real_ch); 参数: ========== ==================== real_ch 指定通道 返回值 adc原始值 ========== ==================== adc_get_voltage ------------------------------ 获取一个指定通道的实际电压值,单位mv。 原型: .. code-block:: c u32 adc_get_voltage(u16 real_ch); 参数: ========== =============================================== real_ch 指定通道 返回值 实际电压值 单位:mv;如果获取失败,返回值为-1 ========== =============================================== adc_value_to_voltage ------------------------------ 将 adc 原始值转换为电压值。使用传入的 vbg 值进行电压值换算。 原型: .. code-block:: c u32 adc_value_to_voltage(u32 adc_vbg, u32 adc_ch_val); 参数: ========== ==================== adc_vbg 传入的vbg参考值 adc_ch_val adc原始值 返回值 实际电压值 单位:mv ========== ==================== adc_get_voltage_blocking ------------------------------ 阻塞式获取一个指定通道的实际电压值。调用时会即时采集获取通道电压,调用时不需要延时等待。 **注:如果中断采集和阻塞式采集同时调用,可能会因为中断采集占用ADC硬件导致阻塞式采集失败,因此注意该函数的返回值是否为合理的电压值** 原型: .. code-block:: c u32 adc_get_voltage_blocking(u16 real_ch); 参数: ========== ==================== real_ch 指定通道 返回值 实际电压值 单位:mv ========== ==================== adc_ch2port ------------------------------ 将传入的 ADC_CH 转换成对应的 IO 并返回。 原型: .. code-block:: c u32 adc_io2ch(u16 real_ch); 参数: ========== ==================== real_ch ADC普通IO通道 返回值 IO ========== ==================== adc_add_sample_ch ------------------------------ 添加一个指定的 adc 通道到采集队列,采集队列最大支持10个采集通道,用户传参时的通道选择adc_drv.h中ADC_CH开头的宏。 最大支持通道数由 adc_drv.h 文件中 ADC_MAX_CH_NUM 宏控制。 原型: .. code-block:: c u32 adc_add_sample_ch(u16 real_ch); 参数: ========== ====================== real_ch 指定通道 返回值 指定通道所在队列的编号 ========== ====================== adc_remove_sample_ch ------------------------------ 删除一个指定的adc采集通道。 原型: .. code-block:: c u32 adc_remove_sample_ch(u16 real_ch); 参数: ========== ====================== real_ch 指定通道 返回值 指定通道所在队列的编号 ========== ====================== adc_init ------------------------------ 功能: adc中断采集功能初始化,一般init.c调用,用户无需再重复调用。 原型: .. code-block:: c void adc_init(); 参数: ========== ==================== -- 无 返回值 无 ========== ==================== adc_kick_start ------------------------------ 功能: 触发一次 adc 采集队列,定时调用。 原型: .. code-block:: c int adc_kick_start(void (*adc_scan_over)(void)); 参数: ============== ======================================= adc_scan_over 回调函数指针,ADC完成一轮队列采集后响应 返回值 0为成功;非0为失败,具体查看errno-base.h ============== ======================================= adc_sample_vbg ------------------------------ 功能: 触发ADC阻塞式采集VBG(ADC的参考电压)的AD值,主循环500MS消息调用。 原型: .. code-block:: c u16 adc_sample_vbg(u32 re_sap_times); 参数: ============== ================================================= re_sap_times 采集次数 返回值 采集成功返回vbg的AD值;失败返回ADC_VALUE_NONE ============== ================================================= 参考demo ------------------------------ .. code-block:: c 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); }