LibDriver STS21
Loading...
Searching...
No Matches
driver_sts21_register_test.c
Go to the documentation of this file.
1
36
38
39static sts21_handle_t gs_handle;
40
49{
50 uint8_t res;
51 uint8_t sn[8];
52 sts21_status_t status;
53 sts21_bool_t enable;
54 sts21_info_t info;
55 sts21_mode_t mode;
56 sts21_resolution_t resolution;
57
58 /* link functions */
70
71 /* sts21 info */
72 res = sts21_info(&info);
73 if (res != 0)
74 {
75 sts21_interface_debug_print("sts21: get info failed.\n");
76
77 return 1;
78 }
79 else
80 {
81 /* print chip information */
82 sts21_interface_debug_print("sts21: chip is %s.\n", info.chip_name);
83 sts21_interface_debug_print("sts21: manufacturer is %s.\n", info.manufacturer_name);
84 sts21_interface_debug_print("sts21: interface is %s.\n", info.interface);
85 sts21_interface_debug_print("sts21: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
86 sts21_interface_debug_print("sts21: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
87 sts21_interface_debug_print("sts21: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
88 sts21_interface_debug_print("sts21: max current is %0.2fmA.\n", info.max_current_ma);
89 sts21_interface_debug_print("sts21: max temperature is %0.1fC.\n", info.temperature_max);
90 sts21_interface_debug_print("sts21: min temperature is %0.1fC.\n", info.temperature_min);
91 }
92
93 /* start register test */
94 sts21_interface_debug_print("sts21: start register test.\n");
95
96 /* sts21 init */
97 res = sts21_init(&gs_handle);
98 if (res != 0)
99 {
100 sts21_interface_debug_print("sts21: init failed.\n");
101
102 return 1;
103 }
104
105 /* sts21_set_mode/sts21_get_mode test */
106 sts21_interface_debug_print("sts21: sts21_set_mode/sts21_get_mode test.\n");
107
108 /* set hold master mode */
109 res = sts21_set_mode(&gs_handle, STS21_MODE_HOLD_MASTER);
110 if (res != 0)
111 {
112 sts21_interface_debug_print("sts21: set mode failed.\n");
113 (void)sts21_deinit(&gs_handle);
114
115 return 1;
116 }
117 sts21_interface_debug_print("sts21: set hold master mode.\n");
118 res = sts21_get_mode(&gs_handle, &mode);
119 if (res != 0)
120 {
121 sts21_interface_debug_print("sts21: get mode failed.\n");
122 (void)sts21_deinit(&gs_handle);
123
124 return 1;
125 }
126 sts21_interface_debug_print("sts21: check mode %s.\n", (mode == STS21_MODE_HOLD_MASTER) ? "ok" : "error");
127
128 /* set no hold master mode */
129 res = sts21_set_mode(&gs_handle, STS21_MODE_NO_HOLD_MASTER);
130 if (res != 0)
131 {
132 sts21_interface_debug_print("sts21: set mode failed.\n");
133 (void)sts21_deinit(&gs_handle);
134
135 return 1;
136 }
137 sts21_interface_debug_print("sts21: set no hold master mode.\n");
138 res = sts21_get_mode(&gs_handle, &mode);
139 if (res != 0)
140 {
141 sts21_interface_debug_print("sts21: get mode failed.\n");
142 (void)sts21_deinit(&gs_handle);
143
144 return 1;
145 }
146 sts21_interface_debug_print("sts21: check mode %s.\n", (mode == STS21_MODE_NO_HOLD_MASTER) ? "ok" : "error");
147
148 /* sts21_set_resolution/sts21_get_resolution test */
149 sts21_interface_debug_print("sts21: sts21_set_resolution/sts21_get_resolution test.\n");
150
151 /* set resolution t 14bit */
153 if (res != 0)
154 {
155 sts21_interface_debug_print("sts21: set resolution failed.\n");
156 (void)sts21_deinit(&gs_handle);
157
158 return 1;
159 }
160 sts21_interface_debug_print("sts21: set resolution t 14bit.\n");
161 res = sts21_get_resolution(&gs_handle, &resolution);
162 if (res != 0)
163 {
164 sts21_interface_debug_print("sts21: get resolution failed.\n");
165 (void)sts21_deinit(&gs_handle);
166
167 return 1;
168 }
169 sts21_interface_debug_print("sts21: check resolution %s.\n", (resolution == STS21_RESOLUTION_T_14BIT) ? "ok" : "error");
170
171 /* set resolution t 12bit */
173 if (res != 0)
174 {
175 sts21_interface_debug_print("sts21: set resolution failed.\n");
176 (void)sts21_deinit(&gs_handle);
177
178 return 1;
179 }
180 sts21_interface_debug_print("sts21: set resolution t 12bit.\n");
181 res = sts21_get_resolution(&gs_handle, &resolution);
182 if (res != 0)
183 {
184 sts21_interface_debug_print("sts21: get resolution failed.\n");
185 (void)sts21_deinit(&gs_handle);
186
187 return 1;
188 }
189 sts21_interface_debug_print("sts21: check resolution %s.\n", (resolution == STS21_RESOLUTION_T_12BIT) ? "ok" : "error");
190
191 /* set resolution t 13bit */
193 if (res != 0)
194 {
195 sts21_interface_debug_print("sts21: set resolution failed.\n");
196 (void)sts21_deinit(&gs_handle);
197
198 return 1;
199 }
200 sts21_interface_debug_print("sts21: set resolution t 13bit.\n");
201 res = sts21_get_resolution(&gs_handle, &resolution);
202 if (res != 0)
203 {
204 sts21_interface_debug_print("sts21: get resolution failed.\n");
205 (void)sts21_deinit(&gs_handle);
206
207 return 1;
208 }
209 sts21_interface_debug_print("sts21: check resolution %s.\n", (resolution == STS21_RESOLUTION_T_13BIT) ? "ok" : "error");
210
211 /* set resolution t 11bit */
213 if (res != 0)
214 {
215 sts21_interface_debug_print("sts21: set resolution failed.\n");
216 (void)sts21_deinit(&gs_handle);
217
218 return 1;
219 }
220 sts21_interface_debug_print("sts21: set resolution t 11bit.\n");
221 res = sts21_get_resolution(&gs_handle, &resolution);
222 if (res != 0)
223 {
224 sts21_interface_debug_print("sts21: get resolution failed.\n");
225 (void)sts21_deinit(&gs_handle);
226
227 return 1;
228 }
229 sts21_interface_debug_print("sts21: check resolution %s.\n", (resolution == STS21_RESOLUTION_T_11BIT) ? "ok" : "error");
230
231 /* sts21_set_heater/sts21_get_heater test */
232 sts21_interface_debug_print("sts21: sts21_set_heater/sts21_get_heater test.\n");
233
234 /* enable heater */
235 res = sts21_set_heater(&gs_handle, STS21_BOOL_TRUE);
236 if (res != 0)
237 {
238 sts21_interface_debug_print("sts21: set heater failed.\n");
239 (void)sts21_deinit(&gs_handle);
240
241 return 1;
242 }
243 sts21_interface_debug_print("sts21: enable heater.\n");
244 res = sts21_get_heater(&gs_handle, &enable);
245 if (res != 0)
246 {
247 sts21_interface_debug_print("sts21: get heater failed.\n");
248 (void)sts21_deinit(&gs_handle);
249
250 return 1;
251 }
252 sts21_interface_debug_print("sts21: check heater %s.\n", (enable == STS21_BOOL_TRUE) ? "ok" : "error");
253
254 /* disable heater */
255 res = sts21_set_heater(&gs_handle, STS21_BOOL_FALSE);
256 if (res != 0)
257 {
258 sts21_interface_debug_print("sts21: set heater failed.\n");
259 (void)sts21_deinit(&gs_handle);
260
261 return 1;
262 }
263 sts21_interface_debug_print("sts21: disable heater.\n");
264 res = sts21_get_heater(&gs_handle, &enable);
265 if (res != 0)
266 {
267 sts21_interface_debug_print("sts21: get heater failed.\n");
268 (void)sts21_deinit(&gs_handle);
269
270 return 1;
271 }
272 sts21_interface_debug_print("sts21: check heater %s.\n", (enable == STS21_BOOL_FALSE) ? "ok" : "error");
273
274 /* sts21_set_disable_otp_reload/sts21_get_disable_otp_reload test */
275 sts21_interface_debug_print("sts21: sts21_set_disable_otp_reload/sts21_get_disable_otp_reload test.\n");
276
277 /* enable disable otp reload */
279 if (res != 0)
280 {
281 sts21_interface_debug_print("sts21: set disable otp reload failed.\n");
282 (void)sts21_deinit(&gs_handle);
283
284 return 1;
285 }
286 sts21_interface_debug_print("sts21: enable disable otp reload.\n");
287 res = sts21_get_disable_otp_reload(&gs_handle, &enable);
288 if (res != 0)
289 {
290 sts21_interface_debug_print("sts21: get disable otp reload failed.\n");
291 (void)sts21_deinit(&gs_handle);
292
293 return 1;
294 }
295 sts21_interface_debug_print("sts21: check disable otp reload %s.\n", (enable == STS21_BOOL_TRUE) ? "ok" : "error");
296
297 /* disable disable otp reload */
299 if (res != 0)
300 {
301 sts21_interface_debug_print("sts21: set disable otp reload failed.\n");
302 (void)sts21_deinit(&gs_handle);
303
304 return 1;
305 }
306 sts21_interface_debug_print("sts21: disable disable otp reload.\n");
307 res = sts21_get_disable_otp_reload(&gs_handle, &enable);
308 if (res != 0)
309 {
310 sts21_interface_debug_print("sts21: get disable otp reload failed.\n");
311 (void)sts21_deinit(&gs_handle);
312
313 return 1;
314 }
315 sts21_interface_debug_print("sts21: check disable otp reload %s.\n", (enable == STS21_BOOL_FALSE) ? "ok" : "error");
316
317 /* sts21_get_status test */
318 sts21_interface_debug_print("sts21: sts21_get_status test.\n");
319
320 /* get status */
321 res = sts21_get_status(&gs_handle, &status);
322 if (res != 0)
323 {
324 sts21_interface_debug_print("sts21: get status failed.\n");
325 (void)sts21_deinit(&gs_handle);
326
327 return 1;
328 }
329 sts21_interface_debug_print("sts21: check vdd 2.25v status %s.\n", (status == SHT35_STATUS_VDD_OVER_2P25V) ? "over" : "less");
330
331 /* sts21_get_serial_number test */
332 sts21_interface_debug_print("sts21: sts21_get_serial_number test.\n");
333
334 /* get serial number */
335 res = sts21_get_serial_number(&gs_handle, sn);
336 if (res != 0)
337 {
338 sts21_interface_debug_print("sts21: get serial number failed.\n");
339 (void)sts21_deinit(&gs_handle);
340
341 return 1;
342 }
343 sts21_interface_debug_print("sts21: sn 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X.\n",
344 sn[0], sn[1], sn[2], sn[3], sn[4], sn[5], sn[6], sn[7]);
345
346 /* sts21_soft_reset test */
347 sts21_interface_debug_print("sts21: sts21_soft_reset test.\n");
348
349 /* soft reset */
350 res = sts21_soft_reset(&gs_handle);
351 if (res != 0)
352 {
353 sts21_interface_debug_print("sts21: soft reset failed.\n");
354 (void)sts21_deinit(&gs_handle);
355
356 return 1;
357 }
358 sts21_interface_debug_print("sts21: soft reset.\n");
359
360 /* finish register test */
361 sts21_interface_debug_print("sts21: finish register test.\n");
362 (void)sts21_deinit(&gs_handle);
363
364 return 0;
365}
driver sts21 register test header file
sts21_resolution_t
sts21 resolution enumeration definition
uint8_t sts21_soft_reset(sts21_handle_t *handle)
soft reset the chip
uint8_t sts21_info(sts21_info_t *info)
get chip's information
uint8_t sts21_set_heater(sts21_handle_t *handle, sts21_bool_t enable)
enable or disable heater
uint8_t sts21_get_status(sts21_handle_t *handle, sts21_status_t *status)
get status
uint8_t sts21_get_disable_otp_reload(sts21_handle_t *handle, sts21_bool_t *enable)
get disable otp reload status
sts21_mode_t
sts21 mode enumeration definition
uint8_t sts21_get_mode(sts21_handle_t *handle, sts21_mode_t *mode)
get chip mode
uint8_t sts21_set_resolution(sts21_handle_t *handle, sts21_resolution_t resolution)
set resolution
sts21_status_t
sts21 status enumeration definition
uint8_t sts21_get_serial_number(sts21_handle_t *handle, uint8_t sn[8])
get serial number
uint8_t sts21_get_heater(sts21_handle_t *handle, sts21_bool_t *enable)
get heater status
struct sts21_info_s sts21_info_t
sts21 information structure definition
uint8_t sts21_set_disable_otp_reload(sts21_handle_t *handle, sts21_bool_t enable)
enable or disable disable otp reload
struct sts21_handle_s sts21_handle_t
sts21 handle structure definition
sts21_bool_t
sts21 bool enumeration definition
uint8_t sts21_deinit(sts21_handle_t *handle)
close the chip
uint8_t sts21_set_mode(sts21_handle_t *handle, sts21_mode_t mode)
set chip mode
uint8_t sts21_get_resolution(sts21_handle_t *handle, sts21_resolution_t *resolution)
get resolution
uint8_t sts21_init(sts21_handle_t *handle)
initialize the chip
@ STS21_RESOLUTION_T_11BIT
@ STS21_RESOLUTION_T_14BIT
@ STS21_RESOLUTION_T_13BIT
@ STS21_RESOLUTION_T_12BIT
@ STS21_MODE_HOLD_MASTER
@ STS21_MODE_NO_HOLD_MASTER
@ SHT35_STATUS_VDD_OVER_2P25V
@ STS21_BOOL_FALSE
@ STS21_BOOL_TRUE
void sts21_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t sts21_interface_iic_init(void)
interface iic bus init
uint8_t sts21_interface_iic_read_command(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
uint8_t sts21_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t sts21_interface_iic_read_with_wait(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read with wait
uint8_t sts21_interface_iic_deinit(void)
interface iic bus deinit
uint8_t sts21_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void sts21_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t sts21_interface_iic_write_command(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
uint8_t sts21_interface_iic_read_address16(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
interface iic bus read with 16 bits register address
uint8_t sts21_register_test(void)
register test
float temperature_max
float supply_voltage_max_v
uint32_t driver_version
float temperature_min
float max_current_ma
char manufacturer_name[32]
float supply_voltage_min_v
char interface[8]
char chip_name[32]