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