LibDriver STTS22H
Loading...
Searching...
No Matches
driver_stts22h_read_test.c
Go to the documentation of this file.
1
36
38
39static stts22h_handle_t gs_handle;
40
50uint8_t stts22h_read_test(stts22h_address_t addr_pin, uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 stts22h_info_t info;
55
56 /* link interface function */
65
66 /* get stts22h info */
67 res = stts22h_info(&info);
68 if (res != 0)
69 {
70 stts22h_interface_debug_print("stts22h: get info failed.\n");
71
72 return 1;
73 }
74 else
75 {
76 /* print chip information */
77 stts22h_interface_debug_print("stts22h: chip is %s.\n", info.chip_name);
78 stts22h_interface_debug_print("stts22h: manufacturer is %s.\n", info.manufacturer_name);
79 stts22h_interface_debug_print("stts22h: interface is %s.\n", info.interface);
80 stts22h_interface_debug_print("stts22h: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
81 stts22h_interface_debug_print("stts22h: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
82 stts22h_interface_debug_print("stts22h: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
83 stts22h_interface_debug_print("stts22h: max current is %0.2fmA.\n", info.max_current_ma);
84 stts22h_interface_debug_print("stts22h: max temperature is %0.1fC.\n", info.temperature_max);
85 stts22h_interface_debug_print("stts22h: min temperature is %0.1fC.\n", info.temperature_min);
86 }
87
88 /* set addr pin */
89 res = stts22h_set_addr_pin(&gs_handle, addr_pin);
90 if (res != 0)
91 {
92 stts22h_interface_debug_print("stts22h: set addr pin failed.\n");
93
94 return 1;
95 }
96
97 /* stts22h init */
98 res = stts22h_init(&gs_handle);
99 if (res != 0)
100 {
101 stts22h_interface_debug_print("stts22h: init failed.\n");
102
103 return 1;
104 }
105
106 /* enable smbus timeout */
108 if (res != 0)
109 {
110 stts22h_interface_debug_print("stts22h: set disable smbus timeout failed.\n");
111 (void)stts22h_deinit(&gs_handle);
112
113 return 1;
114 }
115
116 /* disable block data update */
118 if (res != 0)
119 {
120 stts22h_interface_debug_print("stts22h: set block data update failed.\n");
121 (void)stts22h_deinit(&gs_handle);
122
123 return 1;
124 }
125
126 /* enable iic address auto increment */
128 if (res != 0)
129 {
130 stts22h_interface_debug_print("stts22h: set iic address auto increment failed.\n");
131 (void)stts22h_deinit(&gs_handle);
132
133 return 1;
134 }
135
136 /* single read test */
137 stts22h_interface_debug_print("stts22h: single read test.\n");
138
139 /* set output data rate 1hz */
141 if (res != 0)
142 {
143 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
144 (void)stts22h_deinit(&gs_handle);
145
146 return 1;
147 }
148 stts22h_interface_debug_print("stts22h: set output data rate 1hz.\n");
149
150 for (i = 0; i < times; i++)
151 {
152 int16_t raw;
153 float celsius_deg;
154
155 /* delay 1000ms */
157
158 /* read data */
159 res = stts22h_single_read(&gs_handle, &raw, &celsius_deg);
160 if (res != 0)
161 {
162 stts22h_interface_debug_print("stts22h: single read failed.\n");
163 (void)stts22h_deinit(&gs_handle);
164
165 return 1;
166 }
167
168 /* output */
169 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
170 }
171
172 /* set output data rate 25hz */
174 if (res != 0)
175 {
176 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
177 (void)stts22h_deinit(&gs_handle);
178
179 return 1;
180 }
181 stts22h_interface_debug_print("stts22h: set output data rate 25hz.\n");
182
183 for (i = 0; i < times; i++)
184 {
185 int16_t raw;
186 float celsius_deg;
187
188 /* delay 1000ms */
190
191 /* read data */
192 res = stts22h_single_read(&gs_handle, &raw, &celsius_deg);
193 if (res != 0)
194 {
195 stts22h_interface_debug_print("stts22h: single read failed.\n");
196 (void)stts22h_deinit(&gs_handle);
197
198 return 1;
199 }
200
201 /* output */
202 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
203 }
204
205 /* set output data rate 50hz */
207 if (res != 0)
208 {
209 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
210 (void)stts22h_deinit(&gs_handle);
211
212 return 1;
213 }
214 stts22h_interface_debug_print("stts22h: set output data rate 50hz.\n");
215
216 for (i = 0; i < times; i++)
217 {
218 int16_t raw;
219 float celsius_deg;
220
221 /* delay 1000ms */
223
224 /* read data */
225 res = stts22h_single_read(&gs_handle, &raw, &celsius_deg);
226 if (res != 0)
227 {
228 stts22h_interface_debug_print("stts22h: single read failed.\n");
229 (void)stts22h_deinit(&gs_handle);
230
231 return 1;
232 }
233
234 /* output */
235 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
236 }
237
238 /* set output data rate 100hz */
240 if (res != 0)
241 {
242 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
243 (void)stts22h_deinit(&gs_handle);
244
245 return 1;
246 }
247 stts22h_interface_debug_print("stts22h: set output data rate 100hz.\n");
248
249 for (i = 0; i < times; i++)
250 {
251 int16_t raw;
252 float celsius_deg;
253
254 /* delay 1000ms */
256
257 /* read data */
258 res = stts22h_single_read(&gs_handle, &raw, &celsius_deg);
259 if (res != 0)
260 {
261 stts22h_interface_debug_print("stts22h: single read failed.\n");
262 (void)stts22h_deinit(&gs_handle);
263
264 return 1;
265 }
266
267 /* output */
268 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
269 }
270
271 /* set output data rate 200hz */
273 if (res != 0)
274 {
275 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
276 (void)stts22h_deinit(&gs_handle);
277
278 return 1;
279 }
280 stts22h_interface_debug_print("stts22h: set output data rate 200hz.\n");
281
282 for (i = 0; i < times; i++)
283 {
284 int16_t raw;
285 float celsius_deg;
286
287 /* delay 1000ms */
289
290 /* read data */
291 res = stts22h_single_read(&gs_handle, &raw, &celsius_deg);
292 if (res != 0)
293 {
294 stts22h_interface_debug_print("stts22h: single read failed.\n");
295 (void)stts22h_deinit(&gs_handle);
296
297 return 1;
298 }
299
300 /* output */
301 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
302 }
303
304 /* continuous read test */
305 stts22h_interface_debug_print("stts22h: continuous read test.\n");
306
307 /* start continuous read */
308 res = stts22h_start_continuous_read(&gs_handle);
309 if (res != 0)
310 {
311 stts22h_interface_debug_print("stts22h: start continuous read failed.\n");
312 (void)stts22h_deinit(&gs_handle);
313
314 return 1;
315 }
316
317 /* set output data rate 1hz */
319 if (res != 0)
320 {
321 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
322 (void)stts22h_deinit(&gs_handle);
323
324 return 1;
325 }
326 stts22h_interface_debug_print("stts22h: set output data rate 1hz.\n");
327
328 for (i = 0; i < times; i++)
329 {
330 int16_t raw;
331 float celsius_deg;
332
333 /* delay 1000ms */
335
336 /* read data */
337 res = stts22h_continuous_read(&gs_handle, &raw, &celsius_deg);
338 if (res != 0)
339 {
340 stts22h_interface_debug_print("stts22h: single read failed.\n");
341 (void)stts22h_deinit(&gs_handle);
342
343 return 1;
344 }
345
346 /* output */
347 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
348 }
349
350 /* set output data rate 25hz */
352 if (res != 0)
353 {
354 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
355 (void)stts22h_deinit(&gs_handle);
356
357 return 1;
358 }
359 stts22h_interface_debug_print("stts22h: set output data rate 25hz.\n");
360
361 for (i = 0; i < times; i++)
362 {
363 int16_t raw;
364 float celsius_deg;
365
366 /* delay 1000ms */
368
369 /* read data */
370 res = stts22h_continuous_read(&gs_handle, &raw, &celsius_deg);
371 if (res != 0)
372 {
373 stts22h_interface_debug_print("stts22h: single read failed.\n");
374 (void)stts22h_deinit(&gs_handle);
375
376 return 1;
377 }
378
379 /* output */
380 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
381 }
382
383 /* set output data rate 50hz */
385 if (res != 0)
386 {
387 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
388 (void)stts22h_deinit(&gs_handle);
389
390 return 1;
391 }
392 stts22h_interface_debug_print("stts22h: set output data rate 50hz.\n");
393
394 for (i = 0; i < times; i++)
395 {
396 int16_t raw;
397 float celsius_deg;
398
399 /* delay 1000ms */
401
402 /* read data */
403 res = stts22h_continuous_read(&gs_handle, &raw, &celsius_deg);
404 if (res != 0)
405 {
406 stts22h_interface_debug_print("stts22h: single read failed.\n");
407 (void)stts22h_deinit(&gs_handle);
408
409 return 1;
410 }
411
412 /* output */
413 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
414 }
415
416 /* set output data rate 100hz */
418 if (res != 0)
419 {
420 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
421 (void)stts22h_deinit(&gs_handle);
422
423 return 1;
424 }
425 stts22h_interface_debug_print("stts22h: set output data rate 100hz.\n");
426
427 for (i = 0; i < times; i++)
428 {
429 int16_t raw;
430 float celsius_deg;
431
432 /* delay 1000ms */
434
435 /* read data */
436 res = stts22h_continuous_read(&gs_handle, &raw, &celsius_deg);
437 if (res != 0)
438 {
439 stts22h_interface_debug_print("stts22h: single read failed.\n");
440 (void)stts22h_deinit(&gs_handle);
441
442 return 1;
443 }
444
445 /* output */
446 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
447 }
448
449 /* set output data rate 200hz */
451 if (res != 0)
452 {
453 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
454 (void)stts22h_deinit(&gs_handle);
455
456 return 1;
457 }
458 stts22h_interface_debug_print("stts22h: set output data rate 200hz.\n");
459
460 for (i = 0; i < times; i++)
461 {
462 int16_t raw;
463 float celsius_deg;
464
465 /* delay 1000ms */
467
468 /* read data */
469 res = stts22h_continuous_read(&gs_handle, &raw, &celsius_deg);
470 if (res != 0)
471 {
472 stts22h_interface_debug_print("stts22h: single read failed.\n");
473 (void)stts22h_deinit(&gs_handle);
474
475 return 1;
476 }
477
478 /* output */
479 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
480 }
481
482 /* disable iic address auto increment */
484 if (res != 0)
485 {
486 stts22h_interface_debug_print("stts22h: set iic address auto increment failed.\n");
487 (void)stts22h_deinit(&gs_handle);
488
489 return 1;
490 }
491 stts22h_interface_debug_print("stts22h: disable iic address auto increment.\n");
492
493 for (i = 0; i < times; i++)
494 {
495 int16_t raw;
496 float celsius_deg;
497
498 /* delay 1000ms */
500
501 /* read data */
502 res = stts22h_continuous_read(&gs_handle, &raw, &celsius_deg);
503 if (res != 0)
504 {
505 stts22h_interface_debug_print("stts22h: single read failed.\n");
506 (void)stts22h_deinit(&gs_handle);
507
508 return 1;
509 }
510
511 /* output */
512 stts22h_interface_debug_print("stts22h: temperature is %0.2fC.\n", celsius_deg);
513 }
514
515 /* stop continuous read */
516 res = stts22h_stop_continuous_read(&gs_handle);
517 if (res != 0)
518 {
519 stts22h_interface_debug_print("stts22h: stop continuous read failed.\n");
520 (void)stts22h_deinit(&gs_handle);
521
522 return 1;
523 }
524
525 /* finish read test */
526 stts22h_interface_debug_print("stts22h: finish read test.\n");
527 (void)stts22h_deinit(&gs_handle);
528
529 return 0;
530}
driver stts22h read test header file
uint8_t stts22h_init(stts22h_handle_t *handle)
initialize the chip
uint8_t stts22h_stop_continuous_read(stts22h_handle_t *handle)
stop the chip reading
uint8_t stts22h_set_iic_address_auto_increment(stts22h_handle_t *handle, stts22h_bool_t enable)
enable or disable iic address auto increment
struct stts22h_handle_s stts22h_handle_t
stts22h handle structure definition
uint8_t stts22h_set_addr_pin(stts22h_handle_t *handle, stts22h_address_t addr_pin)
set the iic address pin
uint8_t stts22h_set_output_data_rate(stts22h_handle_t *handle, stts22h_output_data_rate_t rate)
set output data rate
uint8_t stts22h_deinit(stts22h_handle_t *handle)
close the chip
uint8_t stts22h_info(stts22h_info_t *info)
get chip's information
uint8_t stts22h_set_block_data_update(stts22h_handle_t *handle, stts22h_bool_t enable)
enable or disable block data update
uint8_t stts22h_set_disable_smbus_timeout(stts22h_handle_t *handle, stts22h_bool_t enable)
enable or disable disable smbus timeout
uint8_t stts22h_continuous_read(stts22h_handle_t *handle, int16_t *raw, float *celsius_deg)
read data from the chip continuously
stts22h_address_t
stts22h address enumeration definition
uint8_t stts22h_start_continuous_read(stts22h_handle_t *handle)
start the chip reading
uint8_t stts22h_single_read(stts22h_handle_t *handle, int16_t *raw, float *celsius_deg)
read data from the chip once
struct stts22h_info_s stts22h_info_t
stts22h information structure definition
@ STTS22H_BOOL_TRUE
@ STTS22H_BOOL_FALSE
@ STTS22H_OUTPUT_DATA_RATE_50HZ
@ STTS22H_OUTPUT_DATA_RATE_25HZ
@ STTS22H_OUTPUT_DATA_RATE_100HZ
@ STTS22H_OUTPUT_DATA_RATE_1HZ
@ STTS22H_OUTPUT_DATA_RATE_200HZ
uint8_t stts22h_interface_iic_deinit(void)
interface iic bus deinit
void stts22h_interface_delay_ms(uint32_t ms)
interface delay ms
void stts22h_interface_receive_callback(uint8_t type)
interface receive callback
uint8_t stts22h_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void stts22h_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t stts22h_interface_iic_init(void)
interface iic bus init
uint8_t stts22h_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t stts22h_read_test(stts22h_address_t addr_pin, uint32_t times)
read test
uint32_t driver_version
char manufacturer_name[32]