LibDriver UVIS25
Loading...
Searching...
No Matches
driver_uvis25_read_test.c
Go to the documentation of this file.
1
37
39
40static uvis25_handle_t gs_handle;
41
51uint8_t uvis25_read_test(uvis25_interface_t interface, uint32_t times)
52{
53 uint8_t res, reg;
54 uint32_t i;
55 uvis25_info_t info;
56
57 /* link functions */
70
71 /* get information */
72 res = uvis25_info(&info);
73 if (res != 0)
74 {
75 uvis25_interface_debug_print("uvis25: get info failed.\n");
76
77 return 1;
78 }
79 else
80 {
81 /* print chip information */
82 uvis25_interface_debug_print("uvis25: chip is %s.\n", info.chip_name);
83 uvis25_interface_debug_print("uvis25: manufacturer is %s.\n", info.manufacturer_name);
84 uvis25_interface_debug_print("uvis25: interface is %s.\n", info.interface);
85 uvis25_interface_debug_print("uvis25: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
86 uvis25_interface_debug_print("uvis25: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
87 uvis25_interface_debug_print("uvis25: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
88 uvis25_interface_debug_print("uvis25: max current is %0.2fmA.\n", info.max_current_ma);
89 uvis25_interface_debug_print("uvis25: max temperature is %0.1fC.\n", info.temperature_max);
90 uvis25_interface_debug_print("uvis25: min temperature is %0.1fC.\n", info.temperature_min);
91 }
92
93 /* set interface */
94 res = uvis25_set_interface(&gs_handle, interface);
95 if (res != 0)
96 {
97 uvis25_interface_debug_print("uvis25: set interface failed.\n");
98
99 return 1;
100 }
101
102 /* uvis25 init */
103 res = uvis25_init(&gs_handle);
104 if (res != 0)
105 {
106 uvis25_interface_debug_print("uvis25: init failed.\n");
107
108 return 1;
109 }
110
111 /* start read test */
112 uvis25_interface_debug_print("uvis25: start read test.\n");
113
114 /* enable iic */
115 res = uvis25_set_iic(&gs_handle, UVIS25_BOOL_TRUE);
116 if (res != 0)
117 {
118 uvis25_interface_debug_print("uvis25: set iic failed.\n");
119 (void)uvis25_deinit(&gs_handle);
120
121 return 1;
122 }
123
124 /* set spi 4 wire */
125 res = uvis25_set_spi_wire(&gs_handle, UVIS25_SPI_WIRE_4);
126 if (res != 0)
127 {
128 uvis25_interface_debug_print("uvis25: set spi wire failed.\n");
129 (void)uvis25_deinit(&gs_handle);
130
131 return 1;
132 }
133
134 /* set normal mode */
135 res = uvis25_set_boot(&gs_handle, UVIS25_BOOT_NORMAL_MODE);
136 if (res != 0)
137 {
138 uvis25_interface_debug_print("uvis25: set boot failed.\n");
139 (void)uvis25_deinit(&gs_handle);
140
141 return 1;
142 }
143
144 /* disable block data update */
146 if (res != 0)
147 {
148 uvis25_interface_debug_print("uvis25: set block data update failed.\n");
149 (void)uvis25_deinit(&gs_handle);
150
151 return 1;
152 }
153
154 /* set interrupt active level lower */
156 if (res != 0)
157 {
158 uvis25_interface_debug_print("uvis25: set interrupt active level failed.\n");
159 (void)uvis25_deinit(&gs_handle);
160
161 return 1;
162 }
163
164 /* set interrupt pin type push-pull */
166 if (res != 0)
167 {
168 uvis25_interface_debug_print("uvis25: set interrupt pin type failed.\n");
169 (void)uvis25_deinit(&gs_handle);
170
171 return 1;
172 }
173
174 /* set interrupt uv index high low */
176 if (res != 0)
177 {
178 uvis25_interface_debug_print("uvis25: set interrupt type failed.\n");
179 (void)uvis25_deinit(&gs_handle);
180
181 return 1;
182 }
183
184 /* disable interrupt */
185 res = uvis25_set_interrupt(&gs_handle, UVIS25_BOOL_FALSE);
186 if (res != 0)
187 {
188 uvis25_interface_debug_print("uvis25: set interrupt failed.\n");
189 (void)uvis25_deinit(&gs_handle);
190
191 return 1;
192 }
193
194 /* enable latch interrupt */
196 if (res != 0)
197 {
198 uvis25_interface_debug_print("uvis25: set latch interrupt failed.\n");
199 (void)uvis25_deinit(&gs_handle);
200
201 return 1;
202 }
203
204 /* disable interrupt low threshold */
206 if (res != 0)
207 {
208 uvis25_interface_debug_print("uvis25: set interrupt low threshold failed.\n");
209 (void)uvis25_deinit(&gs_handle);
210
211 return 1;
212 }
213
214 /* disable interrupt high threshold */
216 if (res != 0)
217 {
218 uvis25_interface_debug_print("uvis25: set interrupt high threshold failed.\n");
219 (void)uvis25_deinit(&gs_handle);
220
221 return 1;
222 }
223
224 /* convert to register */
225 res = uvis25_threshold_convert_to_register(&gs_handle, 3.0f, (uint8_t *)&reg);
226 if (res != 0)
227 {
228 uvis25_interface_debug_print("uvis25: threshold convert to register failed.\n");
229 (void)uvis25_deinit(&gs_handle);
230
231 return 1;
232 }
233
234 /* set threshold */
235 res = uvis25_set_threshold(&gs_handle, reg);
236 if (res != 0)
237 {
238 uvis25_interface_debug_print("uvis25: set threshold failed.\n");
239 (void)uvis25_deinit(&gs_handle);
240
241 return 1;
242 }
243
244 /* set continuous read */
245 uvis25_interface_debug_print("uvis25: set continuous read.\n");
246
247 /* start continuous read */
248 res = uvis25_start_continuous_read(&gs_handle);
249 if (res != 0)
250 {
251 uvis25_interface_debug_print("uvis25: start continuous read failed.\n");
252 (void)uvis25_deinit(&gs_handle);
253
254 return 1;
255 }
256 for (i = 0; i < times; i++)
257 {
258 uint8_t raw;
259 float uv;
260
262
263 /* continuous read */
264 res = uvis25_continuous_read(&gs_handle, (uint8_t *)&raw, (float *)&uv);
265 if (res != 0)
266 {
267 uvis25_interface_debug_print("uvis25: read failed.\n");
268 (void)uvis25_deinit(&gs_handle);
269
270 return 1;
271 }
272 uvis25_interface_debug_print("uvis25: uv is %0.4f.\n", uv);
273 }
274
275 /* stop continuous read */
276 res = uvis25_stop_continuous_read(&gs_handle);
277 if (res != 0)
278 {
279 uvis25_interface_debug_print("uvis25: stop continuous read failed.\n");
280
281 return 1;
282 }
283
284 /* set one shot read */
285 uvis25_interface_debug_print("uvis25: set one shot read.\n");
286 for (i = 0; i < times; i++)
287 {
288 uint8_t raw;
289 float uv;
290
292
293 /* single read */
294 res = uvis25_single_read(&gs_handle, (uint8_t *)&raw, (float *)&uv);
295 if (res != 0)
296 {
297 uvis25_interface_debug_print("uvis25: read failed.\n");
298 (void)uvis25_deinit(&gs_handle);
299
300 return 1;
301 }
302 uvis25_interface_debug_print("uvis25: uv is %0.4f.\n", uv);
303 }
304
305 /* finish read test */
306 uvis25_interface_debug_print("uvis25: finish read test.\n");
307 (void)uvis25_deinit(&gs_handle);
308
309 return 0;
310}
driver uvis25 read test header file
uvis25_interface_t
uvis25 interface enumeration definition
uint8_t uvis25_set_boot(uvis25_handle_t *handle, uvis25_boot_mode_t mode)
set the boot mode
uint8_t uvis25_set_spi_wire(uvis25_handle_t *handle, uvis25_spi_wire_t wire)
set the spi wire
uint8_t uvis25_init(uvis25_handle_t *handle)
initialize the chip
uint8_t uvis25_set_iic(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the chip iic
uint8_t uvis25_continuous_read(uvis25_handle_t *handle, uint8_t *raw, float *uv)
read data continuously
uint8_t uvis25_deinit(uvis25_handle_t *handle)
close the chip
uint8_t uvis25_set_interface(uvis25_handle_t *handle, uvis25_interface_t interface)
set the chip interface
uint8_t uvis25_single_read(uvis25_handle_t *handle, uint8_t *raw, float *uv)
read data once
struct uvis25_info_s uvis25_info_t
uvis25 information structure definition
struct uvis25_handle_s uvis25_handle_t
uvis25 handle structure definition
uint8_t uvis25_info(uvis25_info_t *info)
get chip's information
uint8_t uvis25_set_block_data_update(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable blocking data update
uint8_t uvis25_start_continuous_read(uvis25_handle_t *handle)
start reading
uint8_t uvis25_stop_continuous_read(uvis25_handle_t *handle)
stop reading
@ UVIS25_BOOT_NORMAL_MODE
@ UVIS25_SPI_WIRE_4
@ UVIS25_BOOL_TRUE
@ UVIS25_BOOL_FALSE
uint8_t uvis25_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void uvis25_interface_debug_print(const char *const fmt,...)
interface print format data
void uvis25_interface_receive_callback(uint8_t type)
interface receive callback
uint8_t uvis25_interface_iic_init(void)
interface iic bus init
uint8_t uvis25_interface_iic_deinit(void)
interface iic bus deinit
uint8_t uvis25_interface_spi_init(void)
interface spi bus init
uint8_t uvis25_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t uvis25_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t uvis25_interface_spi_deinit(void)
interface spi bus deinit
uint8_t uvis25_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
void uvis25_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t uvis25_set_interrupt_low_threshold(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the low threshold interrupt
uint8_t uvis25_set_interrupt_high_threshold(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the high threshold interrupt
uint8_t uvis25_set_interrupt_pin_type(uvis25_handle_t *handle, uvis25_interrupt_pin_type_t pin_type)
set the interrupt pin type
uint8_t uvis25_set_threshold(uvis25_handle_t *handle, uint8_t threshold)
set the interrupt threshold
uint8_t uvis25_set_interrupt_active_level(uvis25_handle_t *handle, uvis25_interrupt_active_level_t level)
set the interrupt active level
uint8_t uvis25_threshold_convert_to_register(uvis25_handle_t *handle, float uv, uint8_t *reg)
convert a uv index to a raw register data
uint8_t uvis25_set_latch_interrupt(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable latching interrupt
uint8_t uvis25_set_interrupt_type(uvis25_handle_t *handle, uvis25_interrupt_type_t type)
set the interrupt type
uint8_t uvis25_set_interrupt(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the chip interrupt
@ UVIS25_INTERRUPT_PIN_TYPE_PUSH_PULL
@ UVIS25_INTERRUPT_ACTIVE_LEVEL_LOWER
@ UVIS25_INTERRUPT_TYPE_UV_INDEX_HIGH_LOW
uint8_t uvis25_read_test(uvis25_interface_t interface, 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]