11bd4fe43Sopenharmony_ci/**
21bd4fe43Sopenharmony_ci* @file hi_adc.h
31bd4fe43Sopenharmony_ci*
41bd4fe43Sopenharmony_ci* Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
51bd4fe43Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License");
61bd4fe43Sopenharmony_ci* you may not use this file except in compliance with the License.
71bd4fe43Sopenharmony_ci* You may obtain a copy of the License at
81bd4fe43Sopenharmony_ci*
91bd4fe43Sopenharmony_ci*     http://www.apache.org/licenses/LICENSE-2.0
101bd4fe43Sopenharmony_ci*
111bd4fe43Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software
121bd4fe43Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS,
131bd4fe43Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
141bd4fe43Sopenharmony_ci* See the License for the specific language governing permissions and
151bd4fe43Sopenharmony_ci* limitations under the License.
161bd4fe43Sopenharmony_ci*
171bd4fe43Sopenharmony_ci* 描述:Analog-to-digital conversion (ADC) module interface.
181bd4fe43Sopenharmony_ci* @li Provides 8 ADC channels.
191bd4fe43Sopenharmony_ciCNcomment:提供8个ADC通道,通道7为参考电压,不能adc转换。CNend
201bd4fe43Sopenharmony_ci* @li LSADC reading rate is slow, please avoid used in interruption.
211bd4fe43Sopenharmony_ciCNcomment: LSADC读数速率较慢,请避免在中断使用。CNend
221bd4fe43Sopenharmony_ci* Author: Hisilicon \n
231bd4fe43Sopenharmony_ci* Create: 2019-4-3
241bd4fe43Sopenharmony_ci*/
251bd4fe43Sopenharmony_ci
261bd4fe43Sopenharmony_ci/**
271bd4fe43Sopenharmony_ci* @defgroup iot_ls_adc ADC
281bd4fe43Sopenharmony_ci* @ingroup drivers
291bd4fe43Sopenharmony_ci*/
301bd4fe43Sopenharmony_ci
311bd4fe43Sopenharmony_ci#ifndef __HI_ADC_H__
321bd4fe43Sopenharmony_ci#define __HI_ADC_H__
331bd4fe43Sopenharmony_ci
341bd4fe43Sopenharmony_ci#include <hi_types.h>
351bd4fe43Sopenharmony_ci
361bd4fe43Sopenharmony_ci#ifdef __cplusplus
371bd4fe43Sopenharmony_ciextern "C" {
381bd4fe43Sopenharmony_ci#endif
391bd4fe43Sopenharmony_ci
401bd4fe43Sopenharmony_ci/**
411bd4fe43Sopenharmony_ci * @ingroup iot_ls_adc
421bd4fe43Sopenharmony_ci *
431bd4fe43Sopenharmony_ci * channel ID。CNcomment:通道编号.CNend
441bd4fe43Sopenharmony_ci */
451bd4fe43Sopenharmony_citypedef enum {
461bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_0,
471bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_1,
481bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_2,
491bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_3,
501bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_4,
511bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_5,
521bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_6,
531bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_7,
541bd4fe43Sopenharmony_ci    HI_ADC_CHANNEL_BUTT,
551bd4fe43Sopenharmony_ci} hi_adc_channel_index;
561bd4fe43Sopenharmony_ci
571bd4fe43Sopenharmony_ci/**
581bd4fe43Sopenharmony_ci * @ingroup iot_ls_adc
591bd4fe43Sopenharmony_ci *
601bd4fe43Sopenharmony_ci * Analog power control. CNcomment:模拟电源控制。CNend
611bd4fe43Sopenharmony_ci */
621bd4fe43Sopenharmony_citypedef enum {
631bd4fe43Sopenharmony_ci    HI_ADC_CUR_BAIS_DEFAULT,       /**< 0:Auto control.
641bd4fe43Sopenharmony_ci                                      CNcomment:自动识别模式 */
651bd4fe43Sopenharmony_ci    HI_ADC_CUR_BAIS_AUTO,          /**< 1:Auto control.
661bd4fe43Sopenharmony_ci                                      CNcomment:自动识别模式 */
671bd4fe43Sopenharmony_ci    HI_ADC_CUR_BAIS_1P8V,          /**< 2:Manual control, AVDD=1.8V.
681bd4fe43Sopenharmony_ci                                      CNcomment:手动控制,AVDD=1.8V */
691bd4fe43Sopenharmony_ci    HI_ADC_CUR_BAIS_3P3V,          /**< 3:Manual control, AVDD=3.3V.
701bd4fe43Sopenharmony_ci                                      CNcomment:手动控制,AVDD=3.3V */
711bd4fe43Sopenharmony_ci    HI_ADC_CUR_BAIS_BUTT,
721bd4fe43Sopenharmony_ci} hi_adc_cur_bais;
731bd4fe43Sopenharmony_ci
741bd4fe43Sopenharmony_ci/**
751bd4fe43Sopenharmony_ci * @ingroup iot_ls_adc
761bd4fe43Sopenharmony_ci *
771bd4fe43Sopenharmony_ci * Average algorithm mode CNcoment:平均算法模式。CNend
781bd4fe43Sopenharmony_ci */
791bd4fe43Sopenharmony_citypedef enum {
801bd4fe43Sopenharmony_ci    HI_ADC_EQU_MODEL_1,            /**< 0:The average value is not used.
811bd4fe43Sopenharmony_ci                                      CNcomment:1次平均,即不进行
821bd4fe43Sopenharmony_ci                                      平均 CNend */
831bd4fe43Sopenharmony_ci    HI_ADC_EQU_MODEL_2,            /**< 1:2-time average algorithm mode.
841bd4fe43Sopenharmony_ci                                      CNcomment:2次平均算法模式 CNend */
851bd4fe43Sopenharmony_ci    HI_ADC_EQU_MODEL_4,            /**< 2:4-time average algorithm mode.
861bd4fe43Sopenharmony_ci                                      CNcomment:4次平均算法模式 CNend */
871bd4fe43Sopenharmony_ci    HI_ADC_EQU_MODEL_8,            /**< 3:8-time average algorithm mode.
881bd4fe43Sopenharmony_ci                                      CNcomment:8次平均算法模式 CNend */
891bd4fe43Sopenharmony_ci    HI_ADC_EQU_MODEL_BUTT,
901bd4fe43Sopenharmony_ci} hi_adc_equ_model_sel;
911bd4fe43Sopenharmony_ci
921bd4fe43Sopenharmony_ci/**
931bd4fe43Sopenharmony_ci* @ingroup  iot_ls_adc
941bd4fe43Sopenharmony_ci* @brief  Read one data in single ADC channel. CNcomment:从一个ADC通道读一个数据。CNend
951bd4fe43Sopenharmony_ci*
961bd4fe43Sopenharmony_ci* @par 描述:
971bd4fe43Sopenharmony_ci*           Read one data in single ADC channel.
981bd4fe43Sopenharmony_ciCNcomment:从一个ADC通道读一个数据。CNend
991bd4fe43Sopenharmony_ci*
1001bd4fe43Sopenharmony_ci* @attention None
1011bd4fe43Sopenharmony_ci* @param  channel      [IN] type #hi_adc_channel_index,channel to be read. CNcomment:要读的channel。CNend
1021bd4fe43Sopenharmony_ci* @param  data         [OUT] type #hi_u16 * ,data point to store the data.
1031bd4fe43Sopenharmony_ciCNcomment:读取的ADC数据保存地址。CNend
1041bd4fe43Sopenharmony_ci* @param  equ_model    [IN] type #hi_adc_equ_model_sel ,Average algorithm mode.
1051bd4fe43Sopenharmony_ciCNcomment:平均算法模式。CNend
1061bd4fe43Sopenharmony_ci* @param  cur_bais     [IN] type #hi_adc_cur_bais ,Analog power control.
1071bd4fe43Sopenharmony_ciCNcomment:模拟电源控制。CNend
1081bd4fe43Sopenharmony_ci* @param  delay_cnt      [IN] type #hi_u16 ,Countings from config to start collect,One count is 334ns,[0, 0xFF0].
1091bd4fe43Sopenharmony_ciCNcomment:从配置采样到启动采样的延时时间计数,一次计数是334ns,其值需在0~0xFF0之间。CNend
1101bd4fe43Sopenharmony_ci* @retval #HI_ERR_SUCCESS  Success.
1111bd4fe43Sopenharmony_ci* @retval #Other          Failure. See hi_errno.h for details.
1121bd4fe43Sopenharmony_ci* @par 依赖:
1131bd4fe43Sopenharmony_ci*            @li hi_adc.h:Describes ADC APIs.
1141bd4fe43Sopenharmony_ciCNcomment:文件用于描述ADC相关接口。CNend
1151bd4fe43Sopenharmony_ci* @see  hi_adc_read。
1161bd4fe43Sopenharmony_ci*/
1171bd4fe43Sopenharmony_cihi_u32 hi_adc_read(hi_adc_channel_index channel, hi_u16 *data, hi_adc_equ_model_sel equ_model,
1181bd4fe43Sopenharmony_ci    hi_adc_cur_bais cur_bais, hi_u16 delay_cnt);
1191bd4fe43Sopenharmony_ci
1201bd4fe43Sopenharmony_ci
1211bd4fe43Sopenharmony_ci/**
1221bd4fe43Sopenharmony_ci* @ingroup  iot_ls_adc
1231bd4fe43Sopenharmony_ci* @brief  Convert adc read data to voltage. CNcomment:将ADC读取到的码字转换为电压。CNend
1241bd4fe43Sopenharmony_ci*
1251bd4fe43Sopenharmony_ci* @par 描述:
1261bd4fe43Sopenharmony_ci*           Convert adc read data to voltage.
1271bd4fe43Sopenharmony_ciCNcomment:将ADC读取到的码字转换为电压。CNend
1281bd4fe43Sopenharmony_ci*
1291bd4fe43Sopenharmony_ci* @attention None
1301bd4fe43Sopenharmony_ci* @param  data      [IN] type #hi_u16,data read by adc. CNcomment:ADC读取到的码字。CNend
1311bd4fe43Sopenharmony_ci* @retval votalge converted by data. CNcomment: 码字转换得到的电压。CNend
1321bd4fe43Sopenharmony_ci* @par 依赖:
1331bd4fe43Sopenharmony_ci*            @li hi_adc.h:Describes ADC APIs.
1341bd4fe43Sopenharmony_ciCNcomment:文件用于描述ADC相关接口。CNend
1351bd4fe43Sopenharmony_ci* @see  hi_adc_read。
1361bd4fe43Sopenharmony_ci*/
1371bd4fe43Sopenharmony_cihi_float hi_adc_convert_to_voltage(hi_u16 data);
1381bd4fe43Sopenharmony_ci
1391bd4fe43Sopenharmony_ci
1401bd4fe43Sopenharmony_ci#ifdef __cplusplus
1411bd4fe43Sopenharmony_ci}
1421bd4fe43Sopenharmony_ci#endif
1431bd4fe43Sopenharmony_ci#endif
144