color17 2.1.0.0
color17.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef COLOR17_H
29#define COLOR17_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
52
73#define COLOR17_REG_CH0_EXP_RESMSB 0x00
74#define COLOR17_REG_CH0_RESMSB_CNT_CRC 0x01
75#define COLOR17_REG_CH1_EXP_RES_MSB 0x02
76#define COLOR17_REG_CH1_RESMSB_CNT_CRC 0x03
77#define COLOR17_REG_CH2_EXP_RES_MSB 0x04
78#define COLOR17_REG_CH2_RESMSB_CNT_CRC 0x05
79#define COLOR17_REG_CH3_EXP_RES_MSB 0x06
80#define COLOR17_REG_CH4_RESMSB_CNT_CRC 0x07
81#define COLOR17_REG_THLD_EXP_RES_L 0x08
82#define COLOR17_REG_THLD_EXP_RES_H 0x09
83#define COLOR17_REG_CONFIG_0 0x0A
84#define COLOR17_REG_CONFIG_1 0x0B
85#define COLOR17_REG_CONFIG_2 0x0C
86#define COLOR17_REG_DEVICE_ID 0x11
87
88 // color17_reg
89
104#define COLOR17_DEVICE_ID 0x0821u
105
110#define COLOR17_CONFIG_0_QWAKE_DIS 0x00
111#define COLOR17_CONFIG_0_QWAKE_EN 0x01
112#define COLOR17_CONFIG_0_RANGE_2_2KLUX 0x00
113#define COLOR17_CONFIG_0_RANGE_4_5KLUX 0x01
114#define COLOR17_CONFIG_0_RANGE_9KLUX 0x02
115#define COLOR17_CONFIG_0_RANGE_18KLUX 0x03
116#define COLOR17_CONFIG_0_RANGE_36KLUX 0x04
117#define COLOR17_CONFIG_0_RANGE_72KLUX 0x05
118#define COLOR17_CONFIG_0_RANGE_144KLUX 0x06
119#define COLOR17_CONFIG_0_RANGE_AUTO 0x0C
120#define COLOR17_CONFIG_0_CONV_600US 0x00
121#define COLOR17_CONFIG_0_CONV_1_MS 0x01
122#define COLOR17_CONFIG_0_CONV_1_8MS 0x02
123#define COLOR17_CONFIG_0_CONV_3_4MS 0x03
124#define COLOR17_CONFIG_0_CONV_6_5MS 0x04
125#define COLOR17_CONFIG_0_CONV_12_7MS 0x05
126#define COLOR17_CONFIG_0_CONV_25MS 0x06
127#define COLOR17_CONFIG_0_CONV_50MS 0x07
128#define COLOR17_CONFIG_0_CONV_100MS 0x08
129#define COLOR17_CONFIG_0_CONV_200MS 0x09
130#define COLOR17_CONFIG_0_CONV_400MS 0x0A
131#define COLOR17_CONFIG_0_CONV_800MS 0x0B
132#define COLOR17_CONFIG_0_OP_MODE_PD 0x00
133#define COLOR17_CONFIG_0_OP_MODE_F_ONESHOT 0x01
134#define COLOR17_CONFIG_0_OP_MODE_ONESHOT 0x02
135#define COLOR17_CONFIG_0_OP_MODE_CONTINUOUS 0x03
136#define COLOR17_CONFIG_0_LATCH_DIS 0x00
137#define COLOR17_CONFIG_0_LATCH_EN 0x01
138#define COLOR17_CONFIG_0_INT_POL_LOW 0x00
139#define COLOR17_CONFIG_0_INT_POL_HIGH 0x01
140#define COLOR17_CONFIG_0_FAULT_COUNT_0 0x00
141#define COLOR17_CONFIG_0_FAULT_COUNT_2 0x01
142#define COLOR17_CONFIG_0_FAULT_COUNT_4 0x02
143#define COLOR17_CONFIG_0_FAULT_COUNT_8 0x03
144
149#define COLOR17_CONFIG_1_MUST_READ_WRITE 0x8000u
150#define COLOR17_CONFIG_1_THRESHOLD_CH0 0x00
151#define COLOR17_CONFIG_1_THRESHOLD_CH1 0x01
152#define COLOR17_CONFIG_1_THRESHOLD_CH2 0x02
153#define COLOR17_CONFIG_1_THRESHOLD_CH3 0x03
154#define COLOR17_CONFIG_1_INT_DIR_INPUT 0x00
155#define COLOR17_CONFIG_1_INT_DIR_OUTPUT 0x01
156#define COLOR17_CONFIG_1_INT_CFG_SMBUS_ALR 0x00
157#define COLOR17_CONFIG_1_INT_CFG_NEXT_CH 0x01
158#define COLOR17_CONFIG_1_INT_CFG_ALL_CH 0x03
159#define COLOR17_CONFIG_1_I2C_BURST_DISABLE 0x00
160#define COLOR17_CONFIG_1_I2C_BURST_ENABLE 0x01
161
166#define COLOR17_CONFIG_2_FLAG_DISABLE 0x00
167#define COLOR17_CONFIG_2_FLAG_ENABLE 0x01
168
173#define COLOR17_SEL_CHANNEL_0 0x00
174#define COLOR17_SEL_CHANNEL_1 0x01
175#define COLOR17_SEL_CHANNEL_2 0x02
176#define COLOR17_SEL_CHANNEL_3 0x03
177
183#define COLOR17_DEVICE_ADDRESS_GND 0x44
184#define COLOR17_DEVICE_ADDRESS_VCC 0x45
185
186 // color17_set
187
202#define COLOR17_MAP_MIKROBUS( cfg, mikrobus ) \
203 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
204 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
205 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
206
207 // color17_map
208 // color17
209
214typedef struct
215{
216 // Input pins
217 digital_in_t int_pin;
219 // Modules
220 i2c_master_t i2c;
222 // I2C slave address
225} color17_t;
226
231typedef struct
232{
233 pin_name_t scl;
234 pin_name_t sda;
236 pin_name_t int_pin;
238 uint32_t i2c_speed;
239 uint8_t i2c_address;
242
247typedef struct
248{
249 uint8_t qwake;
250 uint8_t range;
251 uint8_t conv_time;
252 uint8_t op_mode;
253 uint8_t latch;
254 uint8_t int_pol;
255 uint8_t fault_cnt;
256 uint8_t thld_ch_sel;
257 uint8_t int_dir;
258 uint8_t int_cfg;
259 uint8_t i2c_burst;
262
267typedef struct
268{
269 uint8_t ovld_flag;
271 uint8_t flag_h;
272 uint8_t flag_l;
275
280typedef enum
281{
283 COLOR17_ERROR = -1
284
286
303
318
332
347err_t color17_generic_write ( color17_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
348
363err_t color17_generic_read ( color17_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
364
379err_t color17_write_reg ( color17_t *ctx, uint8_t reg, uint16_t data_in );
380
395err_t color17_read_reg ( color17_t *ctx, uint8_t reg, uint16_t *data_out );
396
410err_t color17_get_device_id ( color17_t *ctx, uint16_t *device_id );
411
427
443
457err_t color17_get_ch_measurement ( color17_t *ctx, uint8_t ch, uint32_t *adc_codes );
458
473err_t color17_get_measurement ( color17_t *ctx, uint32_t *adc_codes );
474
490err_t color17_get_cct ( color17_t *ctx, float *cct, float *light_intensity );
491
504
505#ifdef __cplusplus
506}
507#endif
508#endif // COLOR17_H
509
510 // color17
511
512// ------------------------------------------------------------------------ END
color17_return_value_t
Color 17 Click return value data.
Definition color17.h:281
@ COLOR17_ERROR
Definition color17.h:283
@ COLOR17_OK
Definition color17.h:282
err_t color17_get_device_id(color17_t *ctx, uint16_t *device_id)
Color 17 gets device ID function.
err_t color17_get_measurement(color17_t *ctx, uint32_t *adc_codes)
Color 17 gets light and color measurement data function.
err_t color17_get_ch_measurement(color17_t *ctx, uint8_t ch, uint32_t *adc_codes)
Color 17 gets the channel measurements data function.
err_t color17_set_config(color17_t *ctx, color17_config_t config)
Color 17 set the configuration function.
err_t color17_generic_read(color17_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Color 17 I2C reading function.
err_t color17_default_cfg(color17_t *ctx)
Color 17 default configuration function.
uint8_t color17_get_int_pin(color17_t *ctx)
Color 17 gets interrupt function.
err_t color17_get_status_flag(color17_t *ctx, color17_status_flag_t *status_flag)
Color 17 gets the status flag function.
err_t color17_generic_write(color17_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Color 17 I2C writing function.
err_t color17_write_reg(color17_t *ctx, uint8_t reg, uint16_t data_in)
Color 17write register function.
err_t color17_get_cct(color17_t *ctx, float *cct, float *light_intensity)
Color 17 gets correlated color temperature data function.
void color17_cfg_setup(color17_cfg_t *cfg)
Color 17 configuration object setup function.
err_t color17_read_reg(color17_t *ctx, uint8_t reg, uint16_t *data_out)
Color 17 read register function.
err_t color17_init(color17_t *ctx, color17_cfg_t *cfg)
Color 17 initialization function.
Color 17 Click configuration object.
Definition color17.h:232
uint32_t i2c_speed
Definition color17.h:238
pin_name_t scl
Definition color17.h:233
pin_name_t int_pin
Definition color17.h:236
pin_name_t sda
Definition color17.h:234
uint8_t i2c_address
Definition color17.h:239
Color 17 Click configuration data object.
Definition color17.h:248
uint8_t latch
Definition color17.h:253
uint8_t int_pol
Definition color17.h:254
uint8_t fault_cnt
Definition color17.h:255
uint8_t int_dir
Definition color17.h:257
uint8_t int_cfg
Definition color17.h:258
uint8_t i2c_burst
Definition color17.h:259
uint8_t range
Definition color17.h:250
uint8_t qwake
Definition color17.h:249
uint8_t thld_ch_sel
Definition color17.h:256
uint8_t op_mode
Definition color17.h:252
uint8_t conv_time
Definition color17.h:251
Color 17 Click status flag object.
Definition color17.h:268
uint8_t conv_ready_flag
Definition color17.h:270
uint8_t ovld_flag
Definition color17.h:269
uint8_t flag_h
Definition color17.h:271
uint8_t flag_l
Definition color17.h:272
Color 17 Click context object.
Definition color17.h:215
digital_in_t int_pin
Definition color17.h:217
i2c_master_t i2c
Definition color17.h:220
uint8_t slave_address
Definition color17.h:223