ISSDK  1.8
IoT Sensing Software Development Kit
isl29023.h
Go to the documentation of this file.
1 /*
2  * Copyright 2018 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 #ifndef ISL29023_H_
8 #define ISL29023_H_
9 
10 /**
11  **
12  ** ISL29023 Ambient Light Sensor Internal Registers
13  */
14 enum {
23  ISL29023_TEST = 0x08,
24 };
25 
26 #define ISL29023_I2C_ADDRESS (0x44) /*ISL29023 I2C Address */
27 #define ISL29023_I2C_TEST_VALUE (0x00) /*ISL29023 test register value */
28 
29 /*--------------------------------
30 ** Register: COMMAND-I
31 ** Enum: ISL29023_CMD_I
32 ** --
33 ** Offset : 0x00 - Control & Status bits
34 ** ------------------------------*/
35 typedef union {
36  struct {
37  uint8_t prst: 2; /* IRQ persist bits. */
38 
39  uint8_t flag: 1; /* IRQ flag bit. */
40 
41  uint8_t _reserved_ : 2;
42  uint8_t op : 3; /* Operation mode bits. */
43 
44  } b;
45  uint8_t w;
47 
48 
49 /*
50 ** COMMAND-I - Bit field mask definitions
51 */
52 #define ISL29023_CMD_I_PRST_MASK ((uint8_t) 0x03)
53 #define ISL29023_CMD_I_PRST_SHIFT ((uint8_t) 0)
54 
55 #define ISL29023_CMD_I_FLAG_MASK ((uint8_t) 0x04)
56 #define ISL29023_CMD_I_FLAG_SHIFT ((uint8_t) 2)
57 
58 #define ISL29023_CMD_I_OP_MASK ((uint8_t) 0xe0)
59 #define ISL29023_CMD_I_OP_SHIFT ((uint8_t) 5)
60 
61 
62 /*
63 ** COMMAND-I - Bit field value definitions
64 */
65 #define ISL29023_CMD_I_PRST_1 ((uint8_t) 0x00) /* Number of Integration Samples = 1 */
66 #define ISL29023_CMD_I_PRST_4 ((uint8_t) 0x01) /* Number of Integration Samples = 4 */
67 #define ISL29023_CMD_I_PRST_8 ((uint8_t) 0x02) /* Number of Integration Samples = 8 */
68 #define ISL29023_CMD_I_PRST_16 ((uint8_t) 0x03) /* Number of Integration Samples = 16 */
69 #define ISL29023_CMD_I_FLAG_CLEARED ((uint8_t) 0x00) /* IRQ flag is cleared or not triggered yet */
70 #define ISL29023_CMD_I_FLAG_TRIGGERED ((uint8_t) 0x04) /* IRQ flag is triggered */
71 #define ISL29023_CMD_I_OP_POWER_DOWN ((uint8_t) 0x00) /* Power-down the device (default) */
72 #define ISL29023_CMD_I_OP_ALS_ONCE ((uint8_t) 0x20) /* IC measures ALS only once */
73 #define ISL29023_CMD_I_OP_IR_ONCE ((uint8_t) 0x40) /* IC meausres IR only once */
74 #define ISL29023_CMD_I_OP_ALS_CONT ((uint8_t) 0xA0) /* IC meausres ALS continuously */
75 #define ISL29023_CMD_I_OP_IR_CONT ((uint8_t) 0xC0) /* IC meausres IR continuous */
76 
77 /*------------------------------*/
78 
79 
80 
81 /*--------------------------------
82 ** Register: COMMAND-II
83 ** Enum: ISL29023_CMD_II
84 ** --
85 ** Offset : 0x01 - Control bits
86 ** ------------------------------*/
87 typedef union {
88  struct {
89  uint8_t range: 2; /* Full scale range bits */
90 
91  uint8_t res : 2; /* ADC resolution bits */
92 
93  uint8_t _reserved_ : 4;
94 
95  } b;
96  uint8_t w;
98 
99 
100 /*
101 ** COMMAND-II - Bit field mask definitions
102 */
103 #define ISL29023_CMD_II_RANGE_MASK ((uint8_t) 0x03)
104 #define ISL29023_CMD_II_RANGE_SHIFT ((uint8_t) 0)
105 
106 #define ISL29023_CMD_II_RES_MASK ((uint8_t) 0x0C)
107 #define ISL29023_CMD_II_RES_SHIFT ((uint8_t) 2)
108 
109 
110 /*
111 ** COMMAND-II - Bit field value definitions
112 */
113 #define ISL29023_CMD_II_RANGE_1 ((uint8_t) 0x00) /* FSR @ALS Sensing = 1.000 */
114 #define ISL29023_CMD_II_RANGE_2 ((uint8_t) 0x01) /* FSR @ALS Sensing = 4.000 */
115 #define ISL29023_CMD_II_RANGE_3 ((uint8_t) 0x02) /* FSR @ALS Sensing = 16.000 */
116 #define ISL29023_CMD_II_RANGE_4 ((uint8_t) 0x03) /* FSR @ALS Sensing = 64.000 */
117 #define ISL29023_CMD_II_RES_16 ((uint8_t) 0x00) /* 2^16 ADC resolution */
118 #define ISL29023_CMD_II_RES_12 ((uint8_t) 0x04) /* 2^12 ADC resolution */
119 #define ISL29023_CMD_II_RES_8 ((uint8_t) 0x08) /* 2^8 ADC resolution */
120 #define ISL29023_CMD_II_RES_4 ((uint8_t) 0x0C) /* 2^4 ADC resolution */
121 
122 /*------------------------------*/
123 
124 
125 /*--------------------------------
126 ** Register: DATA_LSB
127 ** Enum: ISL29023_DATA_LSB
128 ** --
129 ** Offset : 0x02 - Bits 7-0 of the 16-bit data register.
130 ** ------------------------------*/
131 typedef uint8_t ISL29023_DATA_LSB_t;
132 
133 
134 /*--------------------------------
135 ** Register: DATA_MSB
136 ** Enum: ISL29023_DATA_MSB
137 ** --
138 ** Offset : 0x03 - Bits 15-8 of the 16-bit data register.
139 ** ------------------------------*/
140 typedef uint8_t ISL29023_DATA_MSB_t;
141 
142 
143 /*--------------------------------
144 ** Register: INT_LT_LSB
145 ** Enum: ISL29023_INT_LT_LSB
146 ** --
147 ** Offset : 0x04 - Bits 7-0 of the 16-bit lower IRQ treshold register.
148 ** ------------------------------*/
149 typedef uint8_t ISL29023_INT_LT_LSB_t;
150 
151 
152 /*--------------------------------
153 ** Register: INT_LT_MSB
154 ** Enum: ISL29023_INT_LT_MSB
155 ** --
156 ** Offset : 0x05 - Bits 15-8 of the 16-bit lower IRQ treshold register.
157 ** ------------------------------*/
158 typedef uint8_t ISL29023_INT_LT_MSB_t;
159 
160 
161 /*--------------------------------
162 ** Register: INT_HT_LSB
163 ** Enum: ISL29023_INT_HT_LSB
164 ** --
165 ** Offset : 0x06 - Bits 7-0 of the 16-bit upper IRQ treshold register.
166 ** ------------------------------*/
167 typedef uint8_t ISL29023_INT_HT_LSB_t;
168 
169 
170 /*--------------------------------
171 ** Register: INT_HT_MSB
172 ** Enum: ISL29023_INT_HT_MSB
173 ** --
174 ** Offset : 0x07 - Bits 15-8 of the 16-bit upper IRQ treshold register.
175 ** ------------------------------*/
176 typedef uint8_t ISL29023_INT_HT_MSB_t;
177 
178 
179 /*--------------------------------
180 ** Register: TEST
181 ** Enum: ISL29023_TEST
182 ** --
183 ** Offset : 0x08 - Test register (hold 00h during normal operation).
184 ** ------------------------------*/
185 typedef uint8_t ISL29023_TEST_t;
186 
187 #endif /* ISL29023_H_ */
uint8_t ISL29023_DATA_LSB_t
Definition: isl29023.h:131
uint8_t _reserved_
Definition: isl29023.h:41
uint8_t flag
Definition: isl29023.h:39
uint8_t op
Definition: isl29023.h:42
uint8_t ISL29023_INT_HT_LSB_t
Definition: isl29023.h:167
uint8_t prst
Definition: isl29023.h:37
uint8_t _reserved_
Definition: isl29023.h:93
uint8_t ISL29023_DATA_MSB_t
Definition: isl29023.h:140
uint8_t ISL29023_INT_LT_MSB_t
Definition: isl29023.h:158
uint8_t range
Definition: isl29023.h:89
uint8_t ISL29023_INT_LT_LSB_t
Definition: isl29023.h:149
uint8_t ISL29023_INT_HT_MSB_t
Definition: isl29023.h:176
uint8_t ISL29023_TEST_t
Definition: isl29023.h:185