LibDriver ENS160
Loading...
Searching...
No Matches
driver_ens160_read_test.c
Go to the documentation of this file.
1
36
38
39static ens160_handle_t gs_handle;
40
51uint8_t ens160_read_test(ens160_interface_t interface, ens160_address_t addr_pin, uint32_t times)
52{
53 uint8_t res;
54 uint32_t i;
55 ens160_info_t info;
56
57 /* link interface function */
70
71 /* get information */
72 res = ens160_info(&info);
73 if (res != 0)
74 {
75 ens160_interface_debug_print("ens160: get info failed.\n");
76
77 return 1;
78 }
79 else
80 {
81 /* print chip info */
82 ens160_interface_debug_print("ens160: chip is %s.\n", info.chip_name);
83 ens160_interface_debug_print("ens160: manufacturer is %s.\n", info.manufacturer_name);
84 ens160_interface_debug_print("ens160: interface is %s.\n", info.interface);
85 ens160_interface_debug_print("ens160: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
86 ens160_interface_debug_print("ens160: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
87 ens160_interface_debug_print("ens160: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
88 ens160_interface_debug_print("ens160: max current is %0.2fmA.\n", info.max_current_ma);
89 ens160_interface_debug_print("ens160: max temperature is %0.1fC.\n", info.temperature_max);
90 ens160_interface_debug_print("ens160: min temperature is %0.1fC.\n", info.temperature_min);
91 }
92
93 /* start read test */
94 ens160_interface_debug_print("ens160: start read test.\n");
95
96 /* set the interface */
97 res = ens160_set_interface(&gs_handle, interface);
98 if (res != 0)
99 {
100 ens160_interface_debug_print("ens160: set interface failed.\n");
101
102 return 1;
103 }
104
105 /* set the address pin */
106 res = ens160_set_addr_pin(&gs_handle, addr_pin);
107 if (res != 0)
108 {
109 ens160_interface_debug_print("ens160: set addr pin failed.\n");
110
111 return 1;
112 }
113
114 /* init ens160 */
115 res = ens160_init(&gs_handle);
116 if (res != 0)
117 {
118 ens160_interface_debug_print("ens160: init failed.\n");
119
120 return 1;
121 }
122
123 /* soft reset */
124 res = ens160_soft_reset(&gs_handle);
125 if (res != 0)
126 {
127 ens160_interface_debug_print("ens160: soft reset failed.\n");
128 (void)ens160_deinit(&gs_handle);
129
130 return 1;
131 }
132
133 /* set interrupt pin polarity low */
135 if (res != 0)
136 {
137 ens160_interface_debug_print("ens160: set interrupt pin polarity failed.\n");
138 (void)ens160_deinit(&gs_handle);
139
140 return 1;
141 }
142
143 /* set interrupt pin drive push-pull */
145 if (res != 0)
146 {
147 ens160_interface_debug_print("ens160: set interrupt pin drive failed.\n");
148 (void)ens160_deinit(&gs_handle);
149
150 return 1;
151 }
152
153 /* enable general purpose read interrupt pin asserted */
155 if (res != 0)
156 {
157 ens160_interface_debug_print("ens160: set general purpose read interrupt pin asserted failed.\n");
158 (void)ens160_deinit(&gs_handle);
159
160 return 1;
161 }
162
163 /* enable data interrupt pin asserted */
165 if (res != 0)
166 {
167 ens160_interface_debug_print("ens160: set data interrupt pin asserted failed.\n");
168 (void)ens160_deinit(&gs_handle);
169
170 return 1;
171 }
172
173 /* disable interrupt */
174 res = ens160_set_interrupt(&gs_handle, ENS160_BOOL_FALSE);
175 if (res != 0)
176 {
177 ens160_interface_debug_print("ens160: set interrupt failed.\n");
178 (void)ens160_deinit(&gs_handle);
179
180 return 1;
181 }
182
183 /* set standard mode */
184 res = ens160_set_mode(&gs_handle, ENS160_MODE_STANDARD);
185 if (res != 0)
186 {
187 ens160_interface_debug_print("ens160: set mode failed.\n");
188 (void)ens160_deinit(&gs_handle);
189
190 return 1;
191 }
192
193 /* output */
194 ens160_interface_debug_print("ens160: ens160_read_aqi test.\n");
195
196 for (i = 0; i < times; i++)
197 {
198 uint8_t uba;
199
200 /* delay 1000ms */
202
203 /* read aqi */
204 res = ens160_read_aqi(&gs_handle, &uba);
205 if (res != 0)
206 {
207 ens160_interface_debug_print("ens160: read aqi failed.\n");
208 (void)ens160_deinit(&gs_handle);
209
210 return 1;
211 }
212
213 /* output */
214 ens160_interface_debug_print("ens160: aqi is %d.\n", uba);
215 }
216
217 /* output */
218 ens160_interface_debug_print("ens160: ens160_read_tvoc test.\n");
219
220 for (i = 0; i < times; i++)
221 {
222 uint16_t tvoc_ppb;
223
224 /* delay 1000ms */
226
227 /* read tvoc */
228 res = ens160_read_tvoc(&gs_handle, &tvoc_ppb);
229 if (res != 0)
230 {
231 ens160_interface_debug_print("ens160: read tvoc failed.\n");
232 (void)ens160_deinit(&gs_handle);
233
234 return 1;
235 }
236
237 /* output */
238 ens160_interface_debug_print("ens160: tvoc is %d ppb.\n", tvoc_ppb);
239 }
240
241 /* output */
242 ens160_interface_debug_print("ens160: ens160_read_eco2 test.\n");
243
244 for (i = 0; i < times; i++)
245 {
246 uint16_t eco2_ppm;
247
248 /* delay 1000ms */
250
251 /* read eco2 */
252 res = ens160_read_eco2(&gs_handle, &eco2_ppm);
253 if (res != 0)
254 {
255 ens160_interface_debug_print("ens160: read eco2 failed.\n");
256 (void)ens160_deinit(&gs_handle);
257
258 return 1;
259 }
260
261 /* output */
262 ens160_interface_debug_print("ens160: eco2 is %d ppm.\n", eco2_ppm);
263 }
264
265 /* output */
266 ens160_interface_debug_print("ens160: ens160_read_etoh test.\n");
267
268 for (i = 0; i < times; i++)
269 {
270 uint16_t etoh_ppb;
271
272 /* delay 1000ms */
274
275 /* read etoh */
276 res = ens160_read_etoh(&gs_handle, &etoh_ppb);
277 if (res != 0)
278 {
279 ens160_interface_debug_print("ens160: read etoh failed.\n");
280 (void)ens160_deinit(&gs_handle);
281
282 return 1;
283 }
284
285 /* output */
286 ens160_interface_debug_print("ens160: etoh is %d ppb.\n", etoh_ppb);
287 }
288
289 /* output */
290 ens160_interface_debug_print("ens160: ens160_get_params_output test.\n");
291
292 for (i = 0; i < times; i++)
293 {
294 uint8_t params[8];
295 uint16_t resistance0;
296 uint16_t resistance1;
297 uint16_t resistance2;
298 uint16_t resistance3;
299 float resistance0_ohm;
300 float resistance1_ohm;
301 float resistance2_ohm;
302 float resistance3_ohm;
303
304 /* delay 1000ms */
306
307 /* get params output */
308 res = ens160_get_params_output(&gs_handle, params);
309 if (res != 0)
310 {
311 ens160_interface_debug_print("ens160: get params output failed.\n");
312 (void)ens160_deinit(&gs_handle);
313
314 return 1;
315 }
316
317 /* resistance split */
318 res = ens160_resistance_split(&gs_handle, params,
319 &resistance0, &resistance1,
320 &resistance2, &resistance3);
321 if (res != 0)
322 {
323 ens160_interface_debug_print("ens160: resistance split failed.\n");
324 (void)ens160_deinit(&gs_handle);
325
326 return 1;
327 }
328
329 /* resistance convert to data */
330 res = ens160_resistance_convert_to_data(&gs_handle, resistance0, &resistance0_ohm);
331 if (res != 0)
332 {
333 ens160_interface_debug_print("ens160: resistance convert to data failed.\n");
334 (void)ens160_deinit(&gs_handle);
335
336 return 1;
337 }
338
339 /* resistance convert to data */
340 res = ens160_resistance_convert_to_data(&gs_handle, resistance1, &resistance1_ohm);
341 if (res != 0)
342 {
343 ens160_interface_debug_print("ens160: resistance convert to data failed.\n");
344 (void)ens160_deinit(&gs_handle);
345
346 return 1;
347 }
348
349 /* resistance convert to data */
350 res = ens160_resistance_convert_to_data(&gs_handle, resistance2, &resistance2_ohm);
351 if (res != 0)
352 {
353 ens160_interface_debug_print("ens160: resistance convert to data failed.\n");
354 (void)ens160_deinit(&gs_handle);
355
356 return 1;
357 }
358
359 /* resistance convert to data */
360 res = ens160_resistance_convert_to_data(&gs_handle, resistance3, &resistance3_ohm);
361 if (res != 0)
362 {
363 ens160_interface_debug_print("ens160: resistance convert to data failed.\n");
364 (void)ens160_deinit(&gs_handle);
365
366 return 1;
367 }
368
369 /* output */
370 ens160_interface_debug_print("ens160: resistance0 is %0.2f ohm.\n", resistance0_ohm);
371 ens160_interface_debug_print("ens160: resistance1 is %0.2f ohm.\n", resistance1_ohm);
372 ens160_interface_debug_print("ens160: resistance2 is %0.2f ohm.\n", resistance2_ohm);
373 ens160_interface_debug_print("ens160: resistance3 is %0.2f ohm.\n", resistance3_ohm);
374 }
375
376 /* finish read test */
377 ens160_interface_debug_print("ens160: finish read test.\n");
378 (void)ens160_deinit(&gs_handle);
379
380 return 0;
381}
driver ens160 read test header file
ens160_address_t
ens160 address enumeration definition
uint8_t ens160_resistance_convert_to_data(ens160_handle_t *handle, uint16_t reg, float *ohm)
convert the register raw data to the resistance
uint8_t ens160_deinit(ens160_handle_t *handle)
close the chip
uint8_t ens160_set_addr_pin(ens160_handle_t *handle, ens160_address_t addr_pin)
set the iic address pin
uint8_t ens160_set_interrupt_pin_drive(ens160_handle_t *handle, ens160_pin_drive_t drive)
set interrupt pin drive
uint8_t ens160_read_eco2(ens160_handle_t *handle, uint16_t *eco2_ppm)
read eco2
struct ens160_info_s ens160_info_t
ens160 information structure definition
uint8_t ens160_info(ens160_info_t *info)
get chip's information
uint8_t ens160_get_params_output(ens160_handle_t *handle, uint8_t params[8])
get params output
uint8_t ens160_set_interface(ens160_handle_t *handle, ens160_interface_t interface)
set the chip interface
uint8_t ens160_soft_reset(ens160_handle_t *handle)
soft reset
uint8_t ens160_read_tvoc(ens160_handle_t *handle, uint16_t *tvoc_ppb)
read tvoc
uint8_t ens160_set_interrupt_pin_polarity(ens160_handle_t *handle, ens160_pin_polarity_t polarity)
set interrupt pin polarity
uint8_t ens160_set_mode(ens160_handle_t *handle, ens160_mode_t mode)
set mode
ens160_interface_t
ens160 interface enumeration definition
uint8_t ens160_set_interrupt(ens160_handle_t *handle, ens160_bool_t enable)
enable or disable interrupt
uint8_t ens160_set_general_purpose_read_interrupt_pin_asserted(ens160_handle_t *handle, ens160_bool_t enable)
set general purpose read interrupt pin asserted
uint8_t ens160_read_aqi(ens160_handle_t *handle, uint8_t *uba)
read aqi
struct ens160_handle_s ens160_handle_t
ens160 handle structure definition
uint8_t ens160_resistance_split(ens160_handle_t *handle, uint8_t raw[8], uint16_t *resistance0, uint16_t *resistance1, uint16_t *resistance2, uint16_t *resistance3)
resistance split
uint8_t ens160_init(ens160_handle_t *handle)
initialize the chip
uint8_t ens160_set_data_interrupt_pin_asserted(ens160_handle_t *handle, ens160_bool_t enable)
set data interrupt pin asserted
uint8_t ens160_read_etoh(ens160_handle_t *handle, uint16_t *etoh_ppb)
read etoh
@ ENS160_MODE_STANDARD
@ ENS160_PIN_POLARITY_LOW
@ ENS160_BOOL_TRUE
@ ENS160_BOOL_FALSE
@ ENS160_PIN_DRIVE_PUSH_PULL
uint8_t ens160_interface_iic_init(void)
interface iic bus init
uint8_t ens160_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t ens160_interface_iic_deinit(void)
interface iic bus deinit
void ens160_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ens160_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void ens160_interface_receive_callback(uint8_t type, uint16_t *dat)
interface receive callback
void ens160_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ens160_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t ens160_interface_spi_deinit(void)
interface spi bus deinit
uint8_t ens160_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t ens160_interface_spi_init(void)
interface spi bus init
uint8_t ens160_read_test(ens160_interface_t interface, ens160_address_t addr_pin, 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]