• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file hi_tsensor.h
3  *
4  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /**
19  * @defgroup iot_tsensor Tsensor
20  * @ingroup drivers
21  */
22 
23 #ifndef __HI_TSENSOR_H__
24 #define __HI_TSENSOR_H__
25 #include <hi_types_base.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 /**
32 * @ingroup  iot_tsensor
33 * @brief Callback function of Tsensor interruption. CNcomment:Tsensor中断回调函数。CNend
34 *
35 * @par 描述:
36 *           Callback function of Tsensor interruption. CNcomment:Tsensor回调函数。CNend
37 *
38 * @attention None
39 * @param  data [IN] type #hi_s16,Parameter transfer of the callback function, indicating the temperature when the
40 *              interrupt is reported.CNcomment:回调函数参数传递,表示中断上报时的温度值。CNend
41 *
42 * @retval None
43 * @par 依赖:
44 *            @li hi_tsensor.h:Tsensor APIs.CNcomment:文件用于描述获取tsensor相关接口。CNend
45 * @see None
46 */
47 typedef hi_void (*hi_tsensor_callback_func)(hi_s16);
48 
49 /**
50  * @ingroup iot_tsensor
51  *
52  * Tsensor report mode.CNcomment:Tsensor上报模式。CNend
53  */
54 typedef enum {
55     HI_TSENSOR_MODE_16_POINTS_SINGLE = 0, /**< Mode: 16 points single.CNcomment:模式:16点平均单次上报 CNend */
56     HI_TSENSOR_MODE_16_POINTS_LOOP = 1,   /**< Mode: 16 points loop.CNcomment:模式:16点平均循环上报 CNend */
57     HI_TSENSOR_MODE_1_POINT_LOOP = 2,     /**< Mode: 1 point loop.CNcomment:模式:单点循环上报 CNend */
58     HI_TSENSOR_MODE_MAX,                  /**< Invalid input parameter, which cannot be used.
59                                              CNcomment:错误入参,不可使用 CNend */
60 }hi_tsensor_mode;
61 
62 #define HI_TSENSOR_INVALID_CODE 0xFFFF    /* Tsensor 无效温度码,有效温度码为(0-255) */
63 #define HI_TSENSOR_INVALID_TEMP (-1000)   /* Tsensor 无效温度, 有效温度码为(-40-140) */
64 
65 /**
66 * @ingroup  iot_tsensor
67 * @brief tsensor module start.CNcomment:tsensor模块启动。CNend
68 *
69 * @par 描述:
70 *           tsensor module start.CNcomment:tsensor启动温度采集。CNend
71 *
72 * @attention Period is valid when mode = #HI_TSENSOR_MODE_16_POINTS_LOOP or HI_TSENSOR_MODE_1_POINT_LOOP.
73 *            By default, the tsensor HI_TSENSOR_MODE_16_POINTS_SINGLE temperature collection mode is enabled for the
74 *            Wi-Fi module. If this function is repeatedly called, the default mode used by the Wi-Fi module will be
75 *            overwritten. If you want to use the tsensor module for other services, you can register the
76 *            corresponding interrupt callback function in the service.
77 CNcomment:period仅当mode为HI_TSENSOR_MODE_16_POINTS_SINGLE有效, period范围: period * 31.25us > 16 * 192us;
78 WiFi模块默认启用tsensor HI_TSENSOR_MODE_16_POINTS_SINGLE温度采集模式,重复调用此函数会覆盖WiFi模块使
79 用的默认模式, 如要将tsensor模块用于其他业务,可直接在该业务内注册对应的中断回调函数。CNend
80 *
81 * @param  mode             [IN] type #hi_tsensor_mode,Mode of Tsensor temperature acquisition.
82 CNcomment:Tsensor温度采集模式。CNend
83 * @param  period           [IN] type #hi_u16,Acquisition period, it is the multiple of 2 ms.
84 CNcomment:温度自动检测周期,为32K时钟数。CNend
85 *
86 * @retval #0           Success.
87 * @retval #Other       Failure. For details, see hi_errno.h.
88 * @par 依赖:
89 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
90 * @see None
91 */
92 hi_u32 hi_tsensor_start(hi_tsensor_mode mode, hi_u16 period);
93 
94 /**
95 * @ingroup  iot_tsensor
96 * @brief Read temperature data.CNcomment:读取温度值。CNend
97 *
98 * @par 描述:
99 *          Read temperature data.CNcomment:在启动tsensor温度采集后,读取温度值。CNend
100 *
101 * @attention None
102 * @param  temperature      [IN] type #hi_s16*,address wait to be writed the temperature value.
103 CNcomment:待写入温度值的地址。CNend
104 *
105 * @retval #0           Success.
106 * @retval #Other       Failure. For details, see hi_errno.h.
107 * @par 依赖:
108 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
109 * @see None
110 */
111 hi_u32 hi_tsensor_read_temperature(hi_s16* temperature);
112 
113 /**
114 * @ingroup  iot_tsensor
115 * @brief Tsensor module stop.CNcomment:停止tsensor温度采集。CNend
116 *
117 * @par 描述:
118 *          Tsensor module stop.CNcomment:停止tsensor温度采集。CNend
119 *
120 * @attention By default, the tsensor function is enabled for the Wi-Fi module. If this function is invoked, the
121 *            temperature threshold protection function of the Wi-Fi module registration will be affected.
122 CNcomment:WiFi模块默认启用tsensor,调用此函数将会影响WiFi本身注册的温度阈值保护等功能。CNend
123 * @param  None
124 *
125 * @retval None
126 * @par 依赖:
127 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
128 * @see None
129 */
130 hi_void hi_tsensor_stop(hi_void);
131 
132 /**
133 * @ingroup  iot_tsensor
134 * @brief Destroy Tsensor module.CNcomment:销毁tsensor模块。CNend
135 *
136 * @par 描述:
137 *          On the basis of hi_tsensor_stop, this interface disables the reporting of tsensor interrupts and clears
138 *          the callback functions registered by users.CNcomment:在hi_tsensor_stop的基础上,此接口同时禁用了
139 tsensor的中断上报,并清空用户注册的回调函数。CNend
140 *
141 * @attention After this API is called, if the interrupt callback function is used, you need to invoke the corresponding
142 *            interface to set the interrupt function before starting the interrupt, and enable the interrupt reporting
143 *            function.By default, the tsensor function is enabled for the Wi-Fi module. If this function is invoked,
144 *            the temperature threshold protection function of the Wi-Fi module registration will be affected.
145 CNcomment:调用此接口后,对于使用中断回调的场景,在start之前,需再次调用相应接口设置中断函数,开启中断上报;
146 WiFi模块默认启用tsensor,调用此函数将会影响WiFi本身注册的温度阈值保护等功能。CNend
147 *
148 * @param None
149 *
150 * @retval None
151 * @par 依赖:
152 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
153 * @see None
154 */
155 hi_void hi_tsensor_destroy(hi_void);
156 
157 /**
158 * @ingroup  iot_tsensor
159 * @brief Sets the temperature calibration.CNcomment:温度校准设置。CNend
160 *
161 * @par 描述:
162 *          Sets the temperature calibration.CNcomment:温度校准设置。CNend
163 *
164 * @attention None
165 * @param  trim_code          [IN] type #hi_u8,Low 4bit valid. The corresponding temperature calibration values are
166 *                            as follows:CNcomment:低4bit有效,对应的温度校准值如下所示:CNend
167 *                            0000 ――  0.000 ℃
168 *                            0001 ――  1.410 ℃
169 *                            0010 ――  2.820 ℃
170 *                            0011 ――  4.230 ℃
171 *                            0100 ――  5.640 ℃
172 *                            0101 ――  7.050 ℃
173 *                            0110 ――  8.460 ℃
174 *                            0111 ――  9.870 ℃
175 *                            1000 ――  0.000℃
176 *                            1001 ―― -1.410 ℃
177 *                            1010 ―― -2.820 ℃
178 *                            1011 ―― -4.230 ℃
179 *                            1100 ―― -5.640 ℃
180 *                            1101 ―― -7.050 ℃
181 *                            1110 ―― -8.460 ℃
182 *                            1111 ―― -9.870 ℃
183 * @param  trim_sel           [IN] type #hi_bool,0:The temp_trim of the Tsensor IP is directly loaded by the efuse.
184 CNcomment:选择Tsensor IP的temp_trim由efuse直接加载,CNend
185 *                                                1:The temp_trim of the Tsensor IP is configured by the register.
186 CNcomment:选择Tsensor IP的temp_trim由寄存器配置。CNend
187 *
188 * @retval None
189 * @par 依赖:
190 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
191 * @see None
192 */
193 hi_void hi_tsensor_set_temp_trim(hi_u8 trim_code, hi_bool trim_sel);
194 
195 /**
196 * @ingroup  iot_tsensor
197 * @brief Converts the temperature code into a temperature value.CNcomment:温度码转换成温度值。CNend
198 *
199 * @par 描述:
200 *          Converts the temperature code into a temperature value.CNcomment:将温度码转换成温度值。CNend
201 *
202 * @attention None
203 * @param  code        [IN] type #hi_u8,temperature value.CNcomment:温度码。CNend
204 *
205 * @retval #hi_s16 Valid temperature value or invalid data (HI_TSENSOR_INVALID_TEMP).
206 CNcomment:有效的温度值或无效数据(HI_TSENSOR_INVALID_TEMP)。CNend
207 *
208 * @par 依赖:
209 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
210 * @see None
211 */
212 hi_s16 hi_tsensor_code_to_temperature(hi_u8 code);
213 
214 /**
215 * @ingroup  iot_tsensor
216 * @brief Converts the temperature into a temperature code.CNcomment:温度值转换成温度码。CNend
217 *
218 * @par 描述:
219 *          Converts the temperature into a temperature code.CNcomment:将温度值转换成温度码。CNend
220 *
221 * @attention None
222 * @param  temp       [IN] type #hi_float,temperature code.CNcomment:温度值。CNend
223 *
224 * @retval #hi_u16 Valid temperature value or invalid data (HI_TSENSOR_INVALID_TEMP).
225 CNcomment:有效的温度值或无效数据(HI_TSENSOR_INVALID_TEMP)。CNend
226 * @par 依赖:
227 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
228 * @see None
229 */
230 hi_u16 hi_tsensor_temperature_to_code(hi_s16 temp);
231 
232 /**
233 * @ingroup  iot_tsensor
234 * @brief Sets the temperature threshold.CNcomment:设置温度阈值门限。CNend
235 *
236 * @par 描述:
237 *          Sets the temperature threshold.CNcomment:设置温度阈值门限。CNend
238 *
239 * @attention This function is invoked before tsensor temperature collection is started. This function is invoked to
240 *            enable the function of reporting the temperature threshold interrupt. A maximum of three temperature
241 *            threshold interrupt callback functions can be registered at the same time. When the Wi-Fi service is
242 *            started, this interface is invoked to set the default high and low temperature thresholds. Before other
243 *            services use this interface, check whether the default high and low temperature thresholds need to be
244 *            changed. CNcomment:在启动tsensor温度采集之前调用,调用此函数将使能温度阈值门限中断上报, 最多可同时注册
245 3个温度阈值门限中断回调函数;WiFi业务启动时会调用此接口设置默认的高低温门限,此后其他业务使用此接口前,
246 请确认是否要修改默认的高低温门限值。CNend
247 *
248 * @param  low_temp            [IN] type #hi_s16,Low Temperature Threshold.CNcomment:低温门限。CNend
249 * @param  high_temp           [IN] type #hi_s16,High Temperature Threshold.CNcomment:高温门限。CNend
250 * @param  callback_func       [IN] type #hi_tsensor_callback_func,Indicates the callback function when the temperature
251 *                             exceeds the threshold.CNcomment:温度超阈值中断回调函数。CNend
252 *
253 * @retval #0           Success.
254 * @retval #Other       Failure. For details, see hi_errno.h.
255 * @par 依赖:
256 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
257 * @see None
258 */
259 hi_u32 hi_tsensor_set_outtemp_threshold(hi_s16 low_temp, hi_s16 high_temp,
260                                         hi_tsensor_callback_func callback_func);
261 
262 /**
263 * @ingroup  iot_tsensor
264 * @brief To set the threshold for the over-high temperature threshold.CNcomment:设置超高温阈值门限。CNend
265 *
266 * @par 描述:
267 *          To set the threshold for the over-high temperature threshold.CNcomment:设置超高温阈值门限。CNend
268 *
269 * @attention This function is invoked before tsensor temperature collection is started. This function is invoked to
270 *            enable the function of reporting the temperature threshold interrupt. A maximum of three temperature
271 *            threshold interrupt callback functions can be registered at the same time. When the Wi-Fi service is
272 *            started, this interface is invoked to set the default high and low temperature thresholds. Before other
273 *            services use this interface, check whether the default high and low temperature thresholds need to be
274 *            changed. CNcomment:在启动tsensor温度采集之前调用,调用此函数将使能温度阈值门限中断上报, 最多可同时注册
275 3个温度阈值门限中断回调函数;WiFi业务启动时会调用此接口设置默认的高低温门限,此后其他业务使用此接口前,
276 请确认是否要修改默认的高低温门限值。CNend
277 *
278 * @param  over_temp           [IN] type #hi_s16,Ultra-high temperature threshold.CNcomment:超高温门限。CNend
279 * @param  callback_func       [IN] type #hi_tsensor_callback_func,Interrupt callback function when the temperature
280 *                             exceeds the upper temperature threshold. CNcomment:温度超过超高温门限中断回调函数。CNend
281 *
282 * @retval #0           Success.
283 * @retval #Other       Failure. For details, see hi_errno.h.
284 * @par 依赖:
285 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
286 * @see None
287 */
288 hi_u32 hi_tsensor_set_overtemp_threshold(hi_s16 over_temp, hi_tsensor_callback_func callback_func);
289 
290 /**
291 * @ingroup  iot_tsensor
292 * @brief Sets the overtemperature power-off threshold.CNcomment:设置过温掉电阈值门限。CNend
293 *
294 * @par 描述:
295 *          Sets the overtemperature power-off threshold.CNcomment:设置过温掉电阈值门限。CNend
296 *
297 * @attention This function is invoked before tsensor temperature collection is started. This function is invoked to
298 *            enable the function of reporting the temperature threshold interrupt. A maximum of three temperature
299 *            threshold interrupt callback functions can be registered at the same time. When the Wi-Fi service is
300 *            started, this interface is invoked to set the default high and low temperature thresholds. Before other
301 *            services use this interface, check whether the default high and low temperature thresholds need to be
302 *            changed. CNcomment:在启动tsensor温度采集之前调用,调用此函数将使能温度阈值门限中断上报, 最多可同时注册
303 3个温度阈值门限中断回调函数;WiFi业务启动时会调用此接口设置默认的高低温门限,此后其他业务使用此接口前,
304 请确认是否要修改默认的高低温门限值。CNend
305 *
306 * @param  pd_temp            [IN] type #hi_s16,Indicates the threshold of the overtemperature power-off threshold.
307 CNcomment:过温掉电阈值门限。CNend
308 *
309 * @retval #0           Success.
310 * @retval #Other       Failure. For details, see hi_errno.h.
311 * @par 依赖:
312 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
313 * @see None
314 */
315 hi_u32 hi_tsensor_set_pdtemp_threshold(hi_s16 pd_temp);
316 
317 /**
318 * @ingroup  iot_tsensor
319 * @brief Registers the callback function for the temperature collection completion interrupt.
320 CNcomment:注册温度采集完成中断回调函数。CNend
321 *
322 * @par 描述:
323 *          Registers the callback function for the temperature collection completion interrupt.
324 CNcomment:注册温度采集完成中断回调函数。CNend
325 *
326 * @attention This function is invoked before tsensor temperature collection is started. This function is invoked to
327 *            enable the function of reporting the temperature threshold interrupt. A maximum of three temperature
328 *            threshold interrupt callback functions can be registered at the same time. The tsensor temperature
329 *            collection period is short. In HI_TSENSOR_MODE_16_POINTS_LOOP and HI_TSENSOR_MODE_1_POINT_LOOP modes,
330 *            the collection completion interrupt is frequently triggered, occupying a large number of CPU resources.
331 *            As a result, other services may fail to be scheduled. In HI_TSENSOR_MODE_16_POINTS_SINGLE mode, a large
332 *            period can be set to avoid this problem, however, if the value of period is too large, the temperature
333 *            monitoring density decreases. Therefore, it is recommended that you do not read the temperature by
334 *            collecting data. CNcomment:在启动tsensor温度采集之前调用,调用此函数将使能温度采集完成中断上报,
335 最多可同时注册3个温度采集完成中断回调函数;tsensor温度采集周期很短,HI_TSENSOR_MODE_16_POINTS_LOOP和
336 HI_TSENSOR_MODE_1_POINT_LOOP模式下采集完成中断会频繁触发,占用大量cpu资源,可能会导致其他业务得不到调度,
337 HI_TSENSOR_MODE_16_POINTS_SINGLE模式虽然可以通过设置较大的period来避免这个问题,但过大的period值将会导致温度监控密度
338 的下降,因此建议尽量不要通过采集完成中断的方式读取温度。CNend
339 *
340 * @param  callback_func       [IN] type #hi_tsensor_callback_func,Temperature collection completion interrupt callback
341 *                             function.CNcomment:温度采集完成中断回调函数。CNend
342 *
343 * @retval #0           Success.
344 * @retval #Other       Failure. For details, see hi_errno.h.
345 * @par 依赖:
346 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
347 * @see None
348 */
349 hi_u32 hi_tsensor_register_temp_collect_finish_int_callback(hi_tsensor_callback_func callback_func);
350 
351 /**
352 * @ingroup  iot_tsensor
353 * @brief  Save register-related values before going to deep sleep.CNcomment:深睡前保存相关寄存器内容。CNend
354 *
355 * @par 描述:
356 *       Regs-related values are saved before entering deep sleep to facilitate sleep recovery.
357 CNcomment:深睡前保存相关寄存器内容,以便于睡醒恢复Tsensor。CNend
358 *
359 * @attention Called before deep sleep. It must be used in pairs with hi_tsensor_lp_restore.
360 CNcomment:在深睡前调用,必须与hi_tsensor_lp_restore接口成对使用。CNend
361 * @param None
362 *
363 * @retval None
364 * @par 依赖:
365 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
366 * @see  hi_tsensor_lp_restore。
367 */
368 hi_void  hi_tsensor_lp_save(hi_void);
369 
370 /**
371 * @ingroup  iot_tsensor
372 * @brief  Restore register related values after deep sleep wake up.CNcomment:深睡唤醒后恢复寄存器内容。CNend
373 *
374 * @par 描述:
375 *      Restore register related values after deep sleep wake up.CNcomment:深睡唤醒后恢复寄存器内容。CNend
376 *
377 * @attention Called after deep sleep wake up. It must be used in pairs with hi_tsensor_lp_save.
378 CNcomment:深睡唤醒后调用,必须与hi_tsensor_lp_save接口成对使用。CNend
379 * @param None
380 *
381 * @retval None
382 * @par 依赖:
383 *            @li hi_tsensor.h:for Tsensor APIs.CNcomment:文件用于描述tsensor相关接口。CNend
384 * @see  hi_tsensor_lp_save。
385 */
386 hi_void hi_tsensor_lp_restore(hi_void);
387 
388 #ifdef __cplusplus
389 }
390 #endif
391 
392 #endif
393