1 /******************************************************************************
5 *****************************************************************************/
11 * @defgroup luatos_device_adc ADC接口
14 #define LUAT_ADC_CH_CPU (-1)
15 #define LUAT_ADC_CH_VBAT (-2)
19 ADC_SET_GLOBAL_RANGE
= 0x80,
25 typedef enum LUAT_ADC_CTRL_CMD
27 LUAT_ADC_SET_GLOBAL_RANGE
,/**< 量程 */
31 typedef enum LUAT_ADC_RANGE
33 LUAT_ADC_AIO_RANGE_1_2
,
34 LUAT_ADC_AIO_RANGE_1_4
,
35 LUAT_ADC_AIO_RANGE_1_6
,
36 LUAT_ADC_AIO_RANGE_1_9
,
37 LUAT_ADC_AIO_RANGE_2_4
,
38 LUAT_ADC_AIO_RANGE_2_6
,
39 LUAT_ADC_AIO_RANGE_2_7
,
40 LUAT_ADC_AIO_RANGE_3_2
,
41 LUAT_ADC_AIO_RANGE_3_8
,
42 LUAT_ADC_AIO_RANGE_4_0
,
43 LUAT_ADC_AIO_RANGE_4_8
,
44 LUAT_ADC_AIO_RANGE_6_4
,
45 LUAT_ADC_AIO_RANGE_9_6
,
46 LUAT_ADC_AIO_RANGE_19_2
,
47 LUAT_ADC_AIO_RANGE_MAX
,
49 LUAT_ADC_VBAT_RANGE_2_0_RATIO
,
50 LUAT_ADC_VBAT_RANGE_2_2_RATIO
,
51 LUAT_ADC_VBAT_RANGE_2_6_RATIO
,
52 LUAT_ADC_VBAT_RANGE_3_2_RATIO
,
53 LUAT_ADC_VBAT_RANGE_4_0_RATIO
,
54 LUAT_ADC_VBAT_RANGE_5_3_RATIO
,
55 LUAT_ADC_VBAT_RANGE_8_0_RATIO
,
56 LUAT_ADC_VBAT_RANGE_16_0_RATIO
,
62 typedef union luat_adc_ctrl_param
64 LUAT_ADC_RANGE_E range
;/**< adc量程*/
65 void *userdata
;/**< 预留 */
66 } luat_adc_ctrl_param_t
;
70 * Description: 打开一个adc通道
71 * @param pin[in] adc通道的序号
72 * @param args[in] 保留用,传NULL
73 * @return 0 成功, 其他值为失败
75 int luat_adc_open(int pin
, void* args
);
79 * Description: 读取adc通道的值
80 * @param pin[in] adc通道的序号
81 * @param val[out] adc通道的原始值
82 * @param val2[out] adc通道的计算值,与具体通道有关
83 * @return 0 成功, 其他值为失败
85 int luat_adc_read(int pin
, int* val
, int* val2
);
89 * Description: 关闭adc通道
90 * @param pin[in] adc通道的序号
91 * @return 0 成功, 其他值为失败
93 int luat_adc_close(int pin
);
96 * luat_adc_global_config
97 * Description: 设置adc全局参数
100 * @return 0 成功, 其他值为失败
102 int luat_adc_global_config(int tp
, int val
);
106 * Description: 设置ADC参数,部分功能会与luat_adc_global_config有相同的想过
107 * @param id[in] adc通道的序号
108 * @param cmd[in] 参数类型
109 * @param param[in] 参数值
110 * @return 0 成功, 其他值为失败
112 int luat_adc_ctrl(int id
, LUAT_ADC_CTRL_CMD_E cmd
, luat_adc_ctrl_param_t param
);
114 * luat_adc_open_and_disable_lowpower
115 * Description: 打开一个adc通道,并且阻止系统进入休眠
116 * @param pin[in] adc通道的序号
117 * @return 0 成功, 其他值为失败
119 int luat_adc_open_and_disable_lowpower(int id
);
122 * Description: 读取adc通道的值,必须由luat_adc_open_and_disable_lowpower初始化过的通道
123 * @param pin[in] adc通道的序号
124 * @param val[out] adc通道的原始值
125 * @param val2[out] adc通道的计算值,与具体通道有关
126 * @return 0 成功, 其他值为失败
128 int luat_adc_read_fast(int id
, int* val
, int* val2
);
130 * luat_adc_close_and_enable_lowpower
131 * Description: 关闭adc通道,并且允许系统进入休眠
132 * @param pin[in] adc通道的序号
133 * @return 0 成功, 其他值为失败
135 int luat_adc_close_and_enable_lowpower(int id
);