LibDriver HTU21D
Loading...
Searching...
No Matches
driver_htu21d_read_test.c
Go to the documentation of this file.
1
36
38
39static htu21d_handle_t gs_handle;
40
50uint8_t htu21d_read_test(htu21d_bool_t hold_master_enable, uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 htu21d_info_t info;
55
56 /* link functions */
67
68 /* htu21d info */
69 res = htu21d_info(&info);
70 if (res != 0)
71 {
72 htu21d_interface_debug_print("htu21d: get info failed.\n");
73
74 return 1;
75 }
76 else
77 {
78 /* print chip information */
79 htu21d_interface_debug_print("htu21d: chip is %s.\n", info.chip_name);
80 htu21d_interface_debug_print("htu21d: manufacturer is %s.\n", info.manufacturer_name);
81 htu21d_interface_debug_print("htu21d: interface is %s.\n", info.interface);
82 htu21d_interface_debug_print("htu21d: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
83 htu21d_interface_debug_print("htu21d: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
84 htu21d_interface_debug_print("htu21d: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
85 htu21d_interface_debug_print("htu21d: max current is %0.2fmA.\n", info.max_current_ma);
86 htu21d_interface_debug_print("htu21d: max temperature is %0.1fC.\n", info.temperature_max);
87 htu21d_interface_debug_print("htu21d: min temperature is %0.1fC.\n", info.temperature_min);
88 }
89
90 /* start read test */
91 htu21d_interface_debug_print("htu21d: start read test.\n");
92
93 /* init */
94 res = htu21d_init(&gs_handle);
95 if (res != 0)
96 {
97 htu21d_interface_debug_print("htu21d: init failed.\n");
98
99 return 1;
100 }
101
102 /* enable heater */
103 res = htu21d_set_heater(&gs_handle, HTU21D_BOOL_TRUE);
104 if (res != 0)
105 {
106 htu21d_interface_debug_print("htu21d: set heater failed.\n");
107 (void)htu21d_deinit(&gs_handle);
108
109 return 1;
110 }
111
112 /* enable otp reload */
114 if (res != 0)
115 {
116 htu21d_interface_debug_print("htu21d: set disable otp reload failed.\n");
117 (void)htu21d_deinit(&gs_handle);
118
119 return 1;
120 }
121
122 /* if hold master enable */
123 if (hold_master_enable == HTU21D_BOOL_TRUE)
124 {
125 /* set hold master mode */
126 res = htu21d_set_mode(&gs_handle, HTU21D_MODE_HOLD_MASTER);
127 if (res != 0)
128 {
129 htu21d_interface_debug_print("htu21d: set mode failed.\n");
130 (void)htu21d_deinit(&gs_handle);
131
132 return 1;
133 }
134
135 /* set hold master mode */
136 htu21d_interface_debug_print("htu21d: set hold master mode.\n");
137
138 for (i = 0; i < times; i++)
139 {
140 uint16_t temperature_raw;
141 float temperature_s;
142 uint16_t humidity_raw;
143 float humidity_s;
144
145 res = htu21d_read_temperature_humidity(&gs_handle,
146 &temperature_raw, &temperature_s,
147 &humidity_raw, &humidity_s
148 );
149 if (res != 0)
150 {
151 htu21d_interface_debug_print("htu21d: read temperature humidity failed.\n");
152 (void)htu21d_deinit(&gs_handle);
153
154 return 1;
155 }
156
157 /* output */
158 htu21d_interface_debug_print("htu21d: temperature is %0.2fC.\n", temperature_s);
159 htu21d_interface_debug_print("htu21d: humidity is %0.2f%%.\n", humidity_s);
160
161 /* delay 2000ms */
163 }
164 }
165
166 /* set no hold master mode */
168 if (res != 0)
169 {
170 htu21d_interface_debug_print("htu21d: set mode failed.\n");
171 (void)htu21d_deinit(&gs_handle);
172
173 return 1;
174 }
175
176 /* set no hold master mode */
177 htu21d_interface_debug_print("htu21d: set no hold master mode.\n");
178
179 for (i = 0; i < times; i++)
180 {
181 uint16_t temperature_raw;
182 float temperature_s;
183 uint16_t humidity_raw;
184 float humidity_s;
185
186 res = htu21d_read_temperature_humidity(&gs_handle,
187 &temperature_raw, &temperature_s,
188 &humidity_raw, &humidity_s
189 );
190 if (res != 0)
191 {
192 htu21d_interface_debug_print("htu21d: read temperature humidity failed.\n");
193 (void)htu21d_deinit(&gs_handle);
194
195 return 1;
196 }
197
198 /* output */
199 htu21d_interface_debug_print("htu21d: temperature is %0.2fC.\n", temperature_s);
200 htu21d_interface_debug_print("htu21d: humidity is %0.2f%%.\n", humidity_s);
201
202 /* delay 2000ms */
204 }
205
206 /* set resolution temp 11 bits and rh 11 bits */
207 htu21d_interface_debug_print("htu21d: set resolution temp 11 bits and rh 11 bits.\n");
208
209 /* set resolution temp 11 bits and rh 11 bits */
211 if (res != 0)
212 {
213 htu21d_interface_debug_print("htu21d: set resolution failed.\n");
214 (void)htu21d_deinit(&gs_handle);
215
216 return 1;
217 }
218
219 for (i = 0; i < times; i++)
220 {
221 uint16_t temperature_raw;
222 float temperature_s;
223 uint16_t humidity_raw;
224 float humidity_s;
225
226 res = htu21d_read_temperature_humidity(&gs_handle,
227 &temperature_raw, &temperature_s,
228 &humidity_raw, &humidity_s
229 );
230 if (res != 0)
231 {
232 htu21d_interface_debug_print("htu21d: read temperature humidity failed.\n");
233 (void)htu21d_deinit(&gs_handle);
234
235 return 1;
236 }
237
238 /* output */
239 htu21d_interface_debug_print("htu21d: temperature is %0.2fC.\n", temperature_s);
240 htu21d_interface_debug_print("htu21d: humidity is %0.2f%%.\n", humidity_s);
241
242 /* delay 2000ms */
244 }
245
246 /* set resolution temp 12 bits and rh 8 bits */
247 htu21d_interface_debug_print("htu21d: set resolution temp 12 bits and rh 8 bits.\n");
248
249 /* set resolution temp 12 bits and rh 8 bits */
251 if (res != 0)
252 {
253 htu21d_interface_debug_print("htu21d: set resolution failed.\n");
254 (void)htu21d_deinit(&gs_handle);
255
256 return 1;
257 }
258
259 for (i = 0; i < times; i++)
260 {
261 uint16_t temperature_raw;
262 float temperature_s;
263 uint16_t humidity_raw;
264 float humidity_s;
265
266 res = htu21d_read_temperature_humidity(&gs_handle,
267 &temperature_raw, &temperature_s,
268 &humidity_raw, &humidity_s
269 );
270 if (res != 0)
271 {
272 htu21d_interface_debug_print("htu21d: read temperature humidity failed.\n");
273 (void)htu21d_deinit(&gs_handle);
274
275 return 1;
276 }
277
278 /* output */
279 htu21d_interface_debug_print("htu21d: temperature is %0.2fC.\n", temperature_s);
280 htu21d_interface_debug_print("htu21d: humidity is %0.2f%%.\n", humidity_s);
281
282 /* delay 2000ms */
284 }
285
286 /* set resolution temp 13 bits and rh 10 bits */
287 htu21d_interface_debug_print("htu21d: set resolution temp 13 bits and rh 10 bits.\n");
288
289 /* set resolution temp 13 bits and rh 10 bits */
291 if (res != 0)
292 {
293 htu21d_interface_debug_print("htu21d: set resolution failed.\n");
294 (void)htu21d_deinit(&gs_handle);
295
296 return 1;
297 }
298
299 for (i = 0; i < times; i++)
300 {
301 uint16_t temperature_raw;
302 float temperature_s;
303 uint16_t humidity_raw;
304 float humidity_s;
305
306 res = htu21d_read_temperature_humidity(&gs_handle,
307 &temperature_raw, &temperature_s,
308 &humidity_raw, &humidity_s
309 );
310 if (res != 0)
311 {
312 htu21d_interface_debug_print("htu21d: read temperature humidity failed.\n");
313 (void)htu21d_deinit(&gs_handle);
314
315 return 1;
316 }
317
318 /* output */
319 htu21d_interface_debug_print("htu21d: temperature is %0.2fC.\n", temperature_s);
320 htu21d_interface_debug_print("htu21d: humidity is %0.2f%%.\n", humidity_s);
321
322 /* delay 2000ms */
324 }
325
326 /* set resolution temp 14 bits and rh 12 bits */
327 htu21d_interface_debug_print("htu21d: set resolution temp 14 bits and rh 12 bits.\n");
328
329 /* set resolution temp 14 bits and rh 12 bits */
331 if (res != 0)
332 {
333 htu21d_interface_debug_print("htu21d: set resolution failed.\n");
334 (void)htu21d_deinit(&gs_handle);
335
336 return 1;
337 }
338
339 for (i = 0; i < times; i++)
340 {
341 uint16_t temperature_raw;
342 float temperature_s;
343 uint16_t humidity_raw;
344 float humidity_s;
345
346 res = htu21d_read_temperature_humidity(&gs_handle,
347 &temperature_raw, &temperature_s,
348 &humidity_raw, &humidity_s
349 );
350 if (res != 0)
351 {
352 htu21d_interface_debug_print("htu21d: read temperature humidity failed.\n");
353 (void)htu21d_deinit(&gs_handle);
354
355 return 1;
356 }
357
358 /* output */
359 htu21d_interface_debug_print("htu21d: temperature is %0.2fC.\n", temperature_s);
360 htu21d_interface_debug_print("htu21d: humidity is %0.2f%%.\n", humidity_s);
361
362 /* delay 2000ms */
364 }
365
366 /* finish read test */
367 htu21d_interface_debug_print("htu21d: finish read test.\n");
368 (void)htu21d_deinit(&gs_handle);
369
370 return 0;
371}
driver htu21d read test header file
uint8_t htu21d_set_disable_otp_reload(htu21d_handle_t *handle, htu21d_bool_t enable)
enable or disable otp reload
uint8_t htu21d_read_temperature_humidity(htu21d_handle_t *handle, uint16_t *temperature_raw, float *temperature_s, uint16_t *humidity_raw, float *humidity_s)
read the temperature and humidity data
uint8_t htu21d_info(htu21d_info_t *info)
get chip's information
uint8_t htu21d_set_mode(htu21d_handle_t *handle, htu21d_mode_t mode)
set the chip mode
uint8_t htu21d_init(htu21d_handle_t *handle)
initialize the chip
uint8_t htu21d_set_resolution(htu21d_handle_t *handle, htu21d_resolution_t resolution)
set the resolution
uint8_t htu21d_set_heater(htu21d_handle_t *handle, htu21d_bool_t enable)
enable or disable the heater
struct htu21d_handle_s htu21d_handle_t
htu21d handle structure definition
struct htu21d_info_s htu21d_info_t
htu21d information structure definition
htu21d_bool_t
htu21d bool enumeration definition
uint8_t htu21d_deinit(htu21d_handle_t *handle)
close the chip
@ HTU21D_RESOLUTION_TEMP_13_BITS_RH_10_BITS
@ HTU21D_RESOLUTION_TEMP_14_BITS_RH_12_BITS
@ HTU21D_RESOLUTION_TEMP_12_BITS_RH_8_BITS
@ HTU21D_RESOLUTION_TEMP_11_BITS_RH_11_BITS
@ HTU21D_MODE_HOLD_MASTER
@ HTU21D_MODE_NO_HOLD_MASTER
@ HTU21D_BOOL_FALSE
@ HTU21D_BOOL_TRUE
uint8_t htu21d_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t htu21d_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
uint8_t htu21d_interface_iic_init(void)
interface iic bus init
uint8_t htu21d_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
uint8_t htu21d_interface_iic_deinit(void)
interface iic bus deinit
uint8_t htu21d_interface_iic_read_with_scl(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read with scl clock
uint8_t htu21d_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void htu21d_interface_debug_print(const char *const fmt,...)
interface print format data
void htu21d_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t htu21d_read_test(htu21d_bool_t hold_master_enable, uint32_t times)
read test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]