123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef __FML_ADC_H__
- #define __FML_ADC_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- //唤醒触发一次采样,3毫秒后触发一次采样,1秒后触发一次采样,3毫秒触发一次采样,1秒后触发一次采样
- /*Includes ------------------------------------------------------*/
- #include <stdbool.h>
- #include <stdint.h>
- #include <string.h>
- #include "sdk_common.h"
- #include "nrf_gpio.h"
- #include "SEGGER_RTT.h"
- #include "usr_config.h"
- /*Private macro ------------------------------------------------------------------------------------------------------------------------------------*/
- #define FML_ADC_SAMPLE_POINT_0 0 //触发采样点0,单位ms,表明刚唤醒就采集
- #define FML_ADC_SAMPLE_POINT_1 3 //触发采样点1,单位ms
- #define FML_ADC_SAMPLE_POINT_2 100 //触发采样点2,单位ms
- /*STRUCTION ----------------------------------------------------*/
- typedef struct _fml_adc_all_channel_adc_value
- {
- int16_t channel_0_adc_value;
- int16_t channel_1_adc_value;
- int16_t channel_2_adc_value;
- int16_t channel_3_adc_value;
- int16_t channel_4_adc_value;
- int16_t channel_5_adc_value;
- int16_t channel_6_adc_value;
- int16_t channel_7_adc_value;
- } Fml_Adc_All_Channel_Adc_Value_t;
- //sample_point:采集时间点
- //all_adc_value:所有通道的值
- //尽量不要在回调里执行耗时很长的操作,最好就是只有设置通道的操作
- typedef void (*fml_adc_sample_update_notify_callback)(uint32_t sample_point, Fml_Adc_All_Channel_Adc_Value_t all_adc_value);
- /*API -------------------------------------------------------*/
- /**
- @brief 初始化adc功能模块
- @param 无
- @return 错误代码 - [out] -1失败,0成功
- */
- int fml_adc_Init(void);
- /**
- @brief adc采样更新通知回调注册
- @param cb - [in] 回调函数注册
- @return 错误代码 - [out] -1失败,0成功
- */
- int fml_adc_sample_update_notify_register(fml_adc_sample_update_notify_callback cb);
- /**
- @brief adc读值
- @param channel - [in] 需要读取的通道
- @param value - [out] 返回通道的值
- @return 错误代码 - [out] -1失败,0成功
- */
- int fml_adc_get_value(uint32_t channel,int16_t *value);
- /**
- @brief 设置ADC通道
- @param pin - [in] 需要设置的引脚
- @param channel - [in] 需要设置的通道
- @param pin_pull - [in] 需要设置的通道上下拉
- @return 错误代码 - [out] -1失败,0成功
- */
- int fml_adc_set_pin_channel(uint32_t pin, uint32_t channel, nrf_gpio_pin_pull_t pin_pull);
- /**
- @brief 移除ADC通道
- @param pin - [in] 需要移除的引脚
- @param channel - [in] 需要移除的通道
- @return 错误代码 - [out] -1失败,0成功
- */
- int fml_adc_remove_pin_channel(uint32_t pin, uint32_t channel);
- #ifdef __cplusplus
- }
- #endif
- #endif
|