LibDriver STTS22H
Loading...
Searching...
No Matches
driver_stts22h_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static stts22h_handle_t gs_handle;
41
51{
52 uint8_t res;
53 uint8_t reg;
54 uint8_t reg_check;
55 uint8_t status;
56 float celsius_deg;
57 float celsius_deg_check;
58 stts22h_address_t addr_pin_check;
59 stts22h_info_t info;
61 stts22h_bool_t enable;
62
63 /* link interface function */
72
73 /* get stts22h info */
74 res = stts22h_info(&info);
75 if (res != 0)
76 {
77 stts22h_interface_debug_print("stts22h: get info failed.\n");
78
79 return 1;
80 }
81 else
82 {
83 /* print chip information */
84 stts22h_interface_debug_print("stts22h: chip is %s.\n", info.chip_name);
85 stts22h_interface_debug_print("stts22h: manufacturer is %s.\n", info.manufacturer_name);
86 stts22h_interface_debug_print("stts22h: interface is %s.\n", info.interface);
87 stts22h_interface_debug_print("stts22h: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
88 stts22h_interface_debug_print("stts22h: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
89 stts22h_interface_debug_print("stts22h: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
90 stts22h_interface_debug_print("stts22h: max current is %0.2fmA.\n", info.max_current_ma);
91 stts22h_interface_debug_print("stts22h: max temperature is %0.1fC.\n", info.temperature_max);
92 stts22h_interface_debug_print("stts22h: min temperature is %0.1fC.\n", info.temperature_min);
93 }
94
95 /* start register test */
96 stts22h_interface_debug_print("stts22h: start register test.\n");
97
98 /* stts22h_set_addr_pin/stts22h_get_addr_pin test */
99 stts22h_interface_debug_print("stts22h: stts22h_set_addr_pin/stts22h_get_addr_pin test.\n");
100
101 /* set addr pin vdd */
102 res = stts22h_set_addr_pin(&gs_handle, STTS22H_ADDRESS_VDD);
103 if (res != 0)
104 {
105 stts22h_interface_debug_print("stts22h: set addr pin failed.\n");
106
107 return 1;
108 }
109 stts22h_interface_debug_print("stts22h: set addr pin vdd.\n");
110 res = stts22h_get_addr_pin(&gs_handle, &addr_pin_check);
111 if (res != 0)
112 {
113 stts22h_interface_debug_print("stts22h: get addr pin failed.\n");
114
115 return 1;
116 }
117 stts22h_interface_debug_print("stts22h: check addr pin %s.\n", (addr_pin_check == STTS22H_ADDRESS_VDD) ? "ok" : "error");
118
119 /* set addr pin 15k */
120 res = stts22h_set_addr_pin(&gs_handle, STTS22H_ADDRESS_15K);
121 if (res != 0)
122 {
123 stts22h_interface_debug_print("stts22h: set addr pin failed.\n");
124
125 return 1;
126 }
127 stts22h_interface_debug_print("stts22h: set addr pin 15k.\n");
128 res = stts22h_get_addr_pin(&gs_handle, &addr_pin_check);
129 if (res != 0)
130 {
131 stts22h_interface_debug_print("stts22h: get addr pin failed.\n");
132
133 return 1;
134 }
135 stts22h_interface_debug_print("stts22h: check addr pin %s.\n", (addr_pin_check == STTS22H_ADDRESS_15K) ? "ok" : "error");
136
137 /* set addr pin 56k */
138 res = stts22h_set_addr_pin(&gs_handle, STTS22H_ADDRESS_56K);
139 if (res != 0)
140 {
141 stts22h_interface_debug_print("stts22h: set addr pin failed.\n");
142
143 return 1;
144 }
145 stts22h_interface_debug_print("stts22h: set addr pin 56k.\n");
146 res = stts22h_get_addr_pin(&gs_handle, &addr_pin_check);
147 if (res != 0)
148 {
149 stts22h_interface_debug_print("stts22h: get addr pin failed.\n");
150
151 return 1;
152 }
153 stts22h_interface_debug_print("stts22h: check addr pin %s.\n", (addr_pin_check == STTS22H_ADDRESS_56K) ? "ok" : "error");
154
155 /* set addr pin gnd */
156 res = stts22h_set_addr_pin(&gs_handle, STTS22H_ADDRESS_GND);
157 if (res != 0)
158 {
159 stts22h_interface_debug_print("stts22h: set addr pin failed.\n");
160
161 return 1;
162 }
163 stts22h_interface_debug_print("stts22h: set addr pin gnd.\n");
164 res = stts22h_get_addr_pin(&gs_handle, &addr_pin_check);
165 if (res != 0)
166 {
167 stts22h_interface_debug_print("stts22h: get addr pin failed.\n");
168
169 return 1;
170 }
171 stts22h_interface_debug_print("stts22h: check addr pin %s.\n", (addr_pin_check == STTS22H_ADDRESS_GND) ? "ok" : "error");
172
173 /* set addr pin */
174 res = stts22h_set_addr_pin(&gs_handle, addr_pin);
175 if (res != 0)
176 {
177 stts22h_interface_debug_print("stts22h: set addr pin failed.\n");
178
179 return 1;
180 }
181
182 /* init */
183 res = stts22h_init(&gs_handle);
184 if (res != 0)
185 {
186 stts22h_interface_debug_print("stts22h: init failed.\n");
187
188 return 1;
189 }
190
191 /* stts22h_set_temperature_high_limit/stts22h_get_temperature_high_limit test */
192 stts22h_interface_debug_print("stts22h: stts22h_set_temperature_high_limit/stts22h_get_temperature_high_limit test.\n");
193
194 reg = rand() % 0xFF;
195 res = stts22h_set_temperature_high_limit(&gs_handle, reg);
196 if (res != 0)
197 {
198 stts22h_interface_debug_print("stts22h: set temperature high limit failed.\n");
199 (void)stts22h_deinit(&gs_handle);
200
201 return 1;
202 }
203 stts22h_interface_debug_print("stts22h: set temperature high limit 0x%02X.\n", reg);
204 res = stts22h_get_temperature_high_limit(&gs_handle, &reg_check);
205 if (res != 0)
206 {
207 stts22h_interface_debug_print("stts22h: get temperature high limit failed.\n");
208 (void)stts22h_deinit(&gs_handle);
209
210 return 1;
211 }
212 stts22h_interface_debug_print("stts22h: check temperature high limit %s.\n", (reg == reg_check) ? "ok" : "error");
213
214 /* stts22h_set_temperature_low_limit/stts22h_get_temperature_low_limit test */
215 stts22h_interface_debug_print("stts22h: stts22h_set_temperature_low_limit/stts22h_get_temperature_low_limit test.\n");
216
217 reg = rand() % 0xFF;
218 res = stts22h_set_temperature_low_limit(&gs_handle, reg);
219 if (res != 0)
220 {
221 stts22h_interface_debug_print("stts22h: set temperature low limit failed.\n");
222 (void)stts22h_deinit(&gs_handle);
223
224 return 1;
225 }
226 stts22h_interface_debug_print("stts22h: set temperature low limit 0x%02X.\n", reg);
227 res = stts22h_get_temperature_low_limit(&gs_handle, &reg_check);
228 if (res != 0)
229 {
230 stts22h_interface_debug_print("stts22h: get temperature low limit failed.\n");
231 (void)stts22h_deinit(&gs_handle);
232
233 return 1;
234 }
235 stts22h_interface_debug_print("stts22h: check temperature low limit %s.\n", (reg == reg_check) ? "ok" : "error");
236
237 /* stts22h_set_output_data_rate/stts22h_get_output_data_rate test */
238 stts22h_interface_debug_print("stts22h: stts22h_set_output_data_rate/stts22h_get_output_data_rate test.\n");
239
240 /* set output data rate 25hz */
242 if (res != 0)
243 {
244 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
245 (void)stts22h_deinit(&gs_handle);
246
247 return 1;
248 }
249 stts22h_interface_debug_print("stts22h: set output data rate 25hz.\n");
250 res = stts22h_get_output_data_rate(&gs_handle, &rate);
251 if (res != 0)
252 {
253 stts22h_interface_debug_print("stts22h: get output data rate failed.\n");
254 (void)stts22h_deinit(&gs_handle);
255
256 return 1;
257 }
258 stts22h_interface_debug_print("stts22h: check output data rate %s.\n", (rate == STTS22H_OUTPUT_DATA_RATE_25HZ) ? "ok" : "error");
259
260 /* set output data rate 50hz */
262 if (res != 0)
263 {
264 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
265 (void)stts22h_deinit(&gs_handle);
266
267 return 1;
268 }
269 stts22h_interface_debug_print("stts22h: set output data rate 50hz.\n");
270 res = stts22h_get_output_data_rate(&gs_handle, &rate);
271 if (res != 0)
272 {
273 stts22h_interface_debug_print("stts22h: get output data rate failed.\n");
274 (void)stts22h_deinit(&gs_handle);
275
276 return 1;
277 }
278 stts22h_interface_debug_print("stts22h: check output data rate %s.\n", (rate == STTS22H_OUTPUT_DATA_RATE_50HZ) ? "ok" : "error");
279
280 /* set output data rate 100hz */
282 if (res != 0)
283 {
284 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
285 (void)stts22h_deinit(&gs_handle);
286
287 return 1;
288 }
289 stts22h_interface_debug_print("stts22h: set output data rate 100hz.\n");
290 res = stts22h_get_output_data_rate(&gs_handle, &rate);
291 if (res != 0)
292 {
293 stts22h_interface_debug_print("stts22h: get output data rate failed.\n");
294 (void)stts22h_deinit(&gs_handle);
295
296 return 1;
297 }
298 stts22h_interface_debug_print("stts22h: check output data rate %s.\n", (rate == STTS22H_OUTPUT_DATA_RATE_100HZ) ? "ok" : "error");
299
300 /* set output data rate 200hz */
302 if (res != 0)
303 {
304 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
305 (void)stts22h_deinit(&gs_handle);
306
307 return 1;
308 }
309 stts22h_interface_debug_print("stts22h: set output data rate 200hz.\n");
310 res = stts22h_get_output_data_rate(&gs_handle, &rate);
311 if (res != 0)
312 {
313 stts22h_interface_debug_print("stts22h: get output data rate failed.\n");
314 (void)stts22h_deinit(&gs_handle);
315
316 return 1;
317 }
318 stts22h_interface_debug_print("stts22h: check output data rate %s.\n", (rate == STTS22H_OUTPUT_DATA_RATE_200HZ) ? "ok" : "error");
319
320 /* set output data rate 1hz */
322 if (res != 0)
323 {
324 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
325 (void)stts22h_deinit(&gs_handle);
326
327 return 1;
328 }
329 stts22h_interface_debug_print("stts22h: set output data rate 1hz.\n");
330 res = stts22h_get_output_data_rate(&gs_handle, &rate);
331 if (res != 0)
332 {
333 stts22h_interface_debug_print("stts22h: get output data rate failed.\n");
334 (void)stts22h_deinit(&gs_handle);
335
336 return 1;
337 }
338 stts22h_interface_debug_print("stts22h: check output data rate %s.\n", (rate == STTS22H_OUTPUT_DATA_RATE_1HZ) ? "ok" : "error");
339
340 /* stts22h_set_block_data_update/stts22h_get_block_data_update test */
341 stts22h_interface_debug_print("stts22h: stts22h_set_block_data_update/stts22h_get_block_data_update test.\n");
342
343 /* enable block data update */
345 if (res != 0)
346 {
347 stts22h_interface_debug_print("stts22h: set block data update failed.\n");
348 (void)stts22h_deinit(&gs_handle);
349
350 return 1;
351 }
352 stts22h_interface_debug_print("stts22h: enable block data update.\n");
353 res = stts22h_get_block_data_update(&gs_handle, &enable);
354 if (res != 0)
355 {
356 stts22h_interface_debug_print("stts22h: get block data update failed.\n");
357 (void)stts22h_deinit(&gs_handle);
358
359 return 1;
360 }
361 stts22h_interface_debug_print("stts22h: check block data update %s.\n", (enable == STTS22H_BOOL_TRUE) ? "ok" : "error");
362
363 /* disable block data update */
365 if (res != 0)
366 {
367 stts22h_interface_debug_print("stts22h: set block data update failed.\n");
368 (void)stts22h_deinit(&gs_handle);
369
370 return 1;
371 }
372 stts22h_interface_debug_print("stts22h: disable block data update.\n");
373 res = stts22h_get_block_data_update(&gs_handle, &enable);
374 if (res != 0)
375 {
376 stts22h_interface_debug_print("stts22h: get block data update failed.\n");
377 (void)stts22h_deinit(&gs_handle);
378
379 return 1;
380 }
381 stts22h_interface_debug_print("stts22h: check block data update %s.\n", (enable == STTS22H_BOOL_FALSE) ? "ok" : "error");
382
383 /* stts22h_set_iic_address_auto_increment/stts22h_get_iic_address_auto_increment test */
384 stts22h_interface_debug_print("stts22h: stts22h_set_iic_address_auto_increment/stts22h_get_iic_address_auto_increment test.\n");
385
386 /* enable iic address auto increment */
388 if (res != 0)
389 {
390 stts22h_interface_debug_print("stts22h: set iic address auto increment failed.\n");
391 (void)stts22h_deinit(&gs_handle);
392
393 return 1;
394 }
395 stts22h_interface_debug_print("stts22h: enable iic address auto increment.\n");
396 res = stts22h_get_iic_address_auto_increment(&gs_handle, &enable);
397 if (res != 0)
398 {
399 stts22h_interface_debug_print("stts22h: get iic address auto increment failed.\n");
400 (void)stts22h_deinit(&gs_handle);
401
402 return 1;
403 }
404 stts22h_interface_debug_print("stts22h: check iic address auto increment %s.\n", (enable == STTS22H_BOOL_TRUE) ? "ok" : "error");
405
406 /* disable iic address auto increment */
408 if (res != 0)
409 {
410 stts22h_interface_debug_print("stts22h: set iic address auto increment failed.\n");
411 (void)stts22h_deinit(&gs_handle);
412
413 return 1;
414 }
415 stts22h_interface_debug_print("stts22h: disable iic address auto increment.\n");
416 res = stts22h_get_iic_address_auto_increment(&gs_handle, &enable);
417 if (res != 0)
418 {
419 stts22h_interface_debug_print("stts22h: get iic address auto increment failed.\n");
420 (void)stts22h_deinit(&gs_handle);
421
422 return 1;
423 }
424 stts22h_interface_debug_print("stts22h: check iic address auto increment %s.\n", (enable == STTS22H_BOOL_FALSE) ? "ok" : "error");
425
426 /* stts22h_set_disable_smbus_timeout/stts22h_get_disable_smbus_timeout test */
427 stts22h_interface_debug_print("stts22h: stts22h_set_disable_smbus_timeout/stts22h_get_disable_smbus_timeout test.\n");
428
429 /* enable disable smbus timeout */
431 if (res != 0)
432 {
433 stts22h_interface_debug_print("stts22h: set disable smbus timeout failed.\n");
434 (void)stts22h_deinit(&gs_handle);
435
436 return 1;
437 }
438 stts22h_interface_debug_print("stts22h: enable disable smbus timeout.\n");
439 res = stts22h_get_disable_smbus_timeout(&gs_handle, &enable);
440 if (res != 0)
441 {
442 stts22h_interface_debug_print("stts22h: get disable smbus timeout failed.\n");
443 (void)stts22h_deinit(&gs_handle);
444
445 return 1;
446 }
447 stts22h_interface_debug_print("stts22h: check enable disable smbus timeout %s.\n", (enable == STTS22H_BOOL_TRUE) ? "ok" : "error");
448
449 /* disable disable smbus timeout */
451 if (res != 0)
452 {
453 stts22h_interface_debug_print("stts22h: set disable smbus timeout failed.\n");
454 (void)stts22h_deinit(&gs_handle);
455
456 return 1;
457 }
458 stts22h_interface_debug_print("stts22h: disable disable smbus timeout.\n");
459 res = stts22h_get_disable_smbus_timeout(&gs_handle, &enable);
460 if (res != 0)
461 {
462 stts22h_interface_debug_print("stts22h: get disable smbus timeout failed.\n");
463 (void)stts22h_deinit(&gs_handle);
464
465 return 1;
466 }
467 stts22h_interface_debug_print("stts22h: check enable disable smbus timeout %s.\n", (enable == STTS22H_BOOL_FALSE) ? "ok" : "error");
468
469 /* stts22h_get_status test */
470 stts22h_interface_debug_print("stts22h: stts22h_get_status test.\n");
471
472 /* get status */
473 res = stts22h_get_status(&gs_handle, &status);
474 if (res != 0)
475 {
476 stts22h_interface_debug_print("stts22h: get status failed.\n");
477 (void)stts22h_deinit(&gs_handle);
478
479 return 1;
480 }
481 stts22h_interface_debug_print("stts22h: status is 0x%02X.\n", status);
482
483 /* stts22h_temperature_convert_to_register/stts22h_temperature_convert_to_data test */
484 stts22h_interface_debug_print("stts22h: stts22h_temperature_convert_to_register/stts22h_temperature_convert_to_data test.\n");
485
486 celsius_deg = (float)(rand() % 1000) / 10.0f;
487 res = stts22h_temperature_convert_to_register(&gs_handle, celsius_deg, &reg);
488 if (res != 0)
489 {
490 stts22h_interface_debug_print("stts22h: temperature convert to register failed.\n");
491 (void)stts22h_deinit(&gs_handle);
492
493 return 1;
494 }
495 stts22h_interface_debug_print("stts22h: set celsius degrees %0.2fC.\n", celsius_deg);
496 res = stts22h_temperature_convert_to_data(&gs_handle, reg, &celsius_deg_check);
497 if (res != 0)
498 {
499 stts22h_interface_debug_print("stts22h: temperature convert to data failed.\n");
500 (void)stts22h_deinit(&gs_handle);
501
502 return 1;
503 }
504 stts22h_interface_debug_print("stts22h: check celsius degrees %0.2fC.\n", celsius_deg_check);
505
506 /* finish register test */
507 stts22h_interface_debug_print("stts22h: finish register test.\n");
508 (void)stts22h_deinit(&gs_handle);
509
510 return 0;
511}
driver stts22h register test header file
uint8_t stts22h_init(stts22h_handle_t *handle)
initialize the chip
uint8_t stts22h_set_temperature_low_limit(stts22h_handle_t *handle, uint8_t raw)
set temperature low limit
uint8_t stts22h_get_temperature_high_limit(stts22h_handle_t *handle, uint8_t *raw)
get temperature high limit
uint8_t stts22h_get_temperature_low_limit(stts22h_handle_t *handle, uint8_t *raw)
get temperature low limit
uint8_t stts22h_get_status(stts22h_handle_t *handle, uint8_t *status)
get status
uint8_t stts22h_get_addr_pin(stts22h_handle_t *handle, stts22h_address_t *addr_pin)
get the iic address pin
stts22h_bool_t
stts22h bool enumeration definition
uint8_t stts22h_set_iic_address_auto_increment(stts22h_handle_t *handle, stts22h_bool_t enable)
enable or disable iic address auto increment
uint8_t stts22h_set_temperature_high_limit(stts22h_handle_t *handle, uint8_t raw)
set temperature high limit
struct stts22h_handle_s stts22h_handle_t
stts22h handle structure definition
uint8_t stts22h_get_disable_smbus_timeout(stts22h_handle_t *handle, stts22h_bool_t *enable)
get disable smbus timeout status
uint8_t stts22h_temperature_convert_to_data(stts22h_handle_t *handle, uint8_t reg, float *celsius_deg)
convert the register raw data to the temperature
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_get_iic_address_auto_increment(stts22h_handle_t *handle, stts22h_bool_t *enable)
get iic address auto increment status
uint8_t stts22h_get_block_data_update(stts22h_handle_t *handle, stts22h_bool_t *enable)
get block data update status
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_temperature_convert_to_register(stts22h_handle_t *handle, float celsius_deg, uint8_t *reg)
convert the temperature to the register raw data
stts22h_address_t
stts22h address enumeration definition
struct stts22h_info_s stts22h_info_t
stts22h information structure definition
uint8_t stts22h_get_output_data_rate(stts22h_handle_t *handle, stts22h_output_data_rate_t *rate)
get output data rate
stts22h_output_data_rate_t
stts22h output data rate enumeration definition
@ STTS22H_BOOL_TRUE
@ STTS22H_BOOL_FALSE
@ STTS22H_ADDRESS_VDD
@ STTS22H_ADDRESS_56K
@ STTS22H_ADDRESS_GND
@ STTS22H_ADDRESS_15K
@ 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_register_test(stts22h_address_t addr_pin)
register test
uint32_t driver_version
char manufacturer_name[32]