Go to the documentation of this file.
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_spi_master.h"
60 #define IRGESTURE2_REG_INT_STATUS 0x00
61 #define IRGESTURE2_REG_MAIN_CONFIG_1 0x01
62 #define IRGESTURE2_REG_MAIN_CONFIG_2 0x02
63 #define IRGESTURE2_REG_SEQ_CONFIG_1 0x03
64 #define IRGESTURE2_REG_SEQ_CONFIG_2 0x04
65 #define IRGESTURE2_REG_AFE_CONFIG 0x05
66 #define IRGESTURE2_REG_LED_CONFIG 0x06
67 #define IRGESTURE2_REG_ADC00H 0x10
68 #define IRGESTURE2_REG_ADC00L 0x11
69 #define IRGESTURE2_REG_ADC01H 0x12
70 #define IRGESTURE2_REG_ADC01L 0x13
71 #define IRGESTURE2_REG_ADC02H 0x14
72 #define IRGESTURE2_REG_ADC02L 0x15
73 #define IRGESTURE2_REG_ADC03H 0x16
74 #define IRGESTURE2_REG_ADC03L 0x17
75 #define IRGESTURE2_REG_ADC04H 0x18
76 #define IRGESTURE2_REG_ADC04L 0x19
77 #define IRGESTURE2_REG_ADC05H 0x1A
78 #define IRGESTURE2_REG_ADC05L 0x1B
79 #define IRGESTURE2_REG_ADC06H 0x1C
80 #define IRGESTURE2_REG_ADC06L 0x1D
81 #define IRGESTURE2_REG_ADC07H 0x1E
82 #define IRGESTURE2_REG_ADC07L 0x1F
83 #define IRGESTURE2_REG_ADC08H 0x20
84 #define IRGESTURE2_REG_ADC08L 0x21
85 #define IRGESTURE2_REG_ADC09H 0x22
86 #define IRGESTURE2_REG_ADC09L 0x23
87 #define IRGESTURE2_REG_ADC10H 0x24
88 #define IRGESTURE2_REG_ADC10L 0x25
89 #define IRGESTURE2_REG_ADC11H 0x26
90 #define IRGESTURE2_REG_ADC11L 0x27
91 #define IRGESTURE2_REG_ADC12H 0x28
92 #define IRGESTURE2_REG_ADC12L 0x29
93 #define IRGESTURE2_REG_ADC13H 0x2A
94 #define IRGESTURE2_REG_ADC13L 0x2B
95 #define IRGESTURE2_REG_ADC14H 0x2C
96 #define IRGESTURE2_REG_ADC14L 0x2D
97 #define IRGESTURE2_REG_ADC15H 0x2E
98 #define IRGESTURE2_REG_ADC15L 0x2F
99 #define IRGESTURE2_REG_ADC16H 0x30
100 #define IRGESTURE2_REG_ADC16L 0x31
101 #define IRGESTURE2_REG_ADC17H 0x32
102 #define IRGESTURE2_REG_ADC17L 0x33
103 #define IRGESTURE2_REG_ADC18H 0x34
104 #define IRGESTURE2_REG_ADC18L 0x35
105 #define IRGESTURE2_REG_ADC19H 0x36
106 #define IRGESTURE2_REG_ADC19L 0x37
107 #define IRGESTURE2_REG_ADC20H 0x38
108 #define IRGESTURE2_REG_ADC20L 0x39
109 #define IRGESTURE2_REG_ADC21H 0x3A
110 #define IRGESTURE2_REG_ADC21L 0x3B
111 #define IRGESTURE2_REG_ADC22H 0x3C
112 #define IRGESTURE2_REG_ADC22L 0x3D
113 #define IRGESTURE2_REG_ADC23H 0x3E
114 #define IRGESTURE2_REG_ADC23L 0x3F
115 #define IRGESTURE2_REG_ADC24H 0x40
116 #define IRGESTURE2_REG_ADC24L 0x41
117 #define IRGESTURE2_REG_ADC25H 0x42
118 #define IRGESTURE2_REG_ADC25L 0x43
119 #define IRGESTURE2_REG_ADC26H 0x44
120 #define IRGESTURE2_REG_ADC26L 0x45
121 #define IRGESTURE2_REG_ADC27H 0x46
122 #define IRGESTURE2_REG_ADC27L 0x47
123 #define IRGESTURE2_REG_ADC28H 0x48
124 #define IRGESTURE2_REG_ADC28L 0x49
125 #define IRGESTURE2_REG_ADC29H 0x4A
126 #define IRGESTURE2_REG_ADC29L 0x4B
127 #define IRGESTURE2_REG_ADC30H 0x4C
128 #define IRGESTURE2_REG_ADC30L 0x4D
129 #define IRGESTURE2_REG_ADC31H 0x4E
130 #define IRGESTURE2_REG_ADC31L 0x4F
131 #define IRGESTURE2_REG_ADC32H 0x50
132 #define IRGESTURE2_REG_ADC32L 0x51
133 #define IRGESTURE2_REG_ADC33H 0x52
134 #define IRGESTURE2_REG_ADC33L 0x53
135 #define IRGESTURE2_REG_ADC34H 0x54
136 #define IRGESTURE2_REG_ADC34L 0x55
137 #define IRGESTURE2_REG_ADC35H 0x56
138 #define IRGESTURE2_REG_ADC35L 0x57
139 #define IRGESTURE2_REG_ADC36H 0x58
140 #define IRGESTURE2_REG_ADC36L 0x59
141 #define IRGESTURE2_REG_ADC37H 0x5A
142 #define IRGESTURE2_REG_ADC37L 0x5B
143 #define IRGESTURE2_REG_ADC38H 0x5C
144 #define IRGESTURE2_REG_ADC38L 0x5D
145 #define IRGESTURE2_REG_ADC39H 0x5E
146 #define IRGESTURE2_REG_ADC39L 0x5F
147 #define IRGESTURE2_REG_ADC40H 0x60
148 #define IRGESTURE2_REG_ADC40L 0x61
149 #define IRGESTURE2_REG_ADC41H 0x62
150 #define IRGESTURE2_REG_ADC41L 0x63
151 #define IRGESTURE2_REG_ADC42H 0x64
152 #define IRGESTURE2_REG_ADC42L 0x65
153 #define IRGESTURE2_REG_ADC43H 0x66
154 #define IRGESTURE2_REG_ADC43L 0x67
155 #define IRGESTURE2_REG_ADC44H 0x68
156 #define IRGESTURE2_REG_ADC44L 0x69
157 #define IRGESTURE2_REG_ADC45H 0x6A
158 #define IRGESTURE2_REG_ADC45L 0x6B
159 #define IRGESTURE2_REG_ADC46H 0x6C
160 #define IRGESTURE2_REG_ADC46L 0x6D
161 #define IRGESTURE2_REG_ADC47H 0x6E
162 #define IRGESTURE2_REG_ADC47L 0x6F
163 #define IRGESTURE2_REG_ADC48H 0x70
164 #define IRGESTURE2_REG_ADC48L 0x71
165 #define IRGESTURE2_REG_ADC49H 0x72
166 #define IRGESTURE2_REG_ADC49L 0x73
167 #define IRGESTURE2_REG_ADC50H 0x74
168 #define IRGESTURE2_REG_ADC50L 0x75
169 #define IRGESTURE2_REG_ADC51H 0x76
170 #define IRGESTURE2_REG_ADC51L 0x77
171 #define IRGESTURE2_REG_ADC52H 0x78
172 #define IRGESTURE2_REG_ADC52L 0x79
173 #define IRGESTURE2_REG_ADC53H 0x7A
174 #define IRGESTURE2_REG_ADC53L 0x7B
175 #define IRGESTURE2_REG_ADC54H 0x7C
176 #define IRGESTURE2_REG_ADC54L 0x7D
177 #define IRGESTURE2_REG_ADC55H 0x7E
178 #define IRGESTURE2_REG_ADC55L 0x7F
179 #define IRGESTURE2_REG_ADC56H 0x80
180 #define IRGESTURE2_REG_ADC56L 0x81
181 #define IRGESTURE2_REG_ADC57H 0x82
182 #define IRGESTURE2_REG_ADC57L 0x83
183 #define IRGESTURE2_REG_ADC58H 0x84
184 #define IRGESTURE2_REG_ADC58L 0x85
185 #define IRGESTURE2_REG_ADC59H 0x86
186 #define IRGESTURE2_REG_ADC59L 0x87
187 #define IRGESTURE2_REG_COLUMN_GAIN_2_1 0xA5
188 #define IRGESTURE2_REG_COLUMN_GAIN_4_3 0xA6
189 #define IRGESTURE2_REG_COLUMN_GAIN_6_5 0xA7
190 #define IRGESTURE2_REG_COLUMN_GAIN_8_7 0xA8
191 #define IRGESTURE2_REG_COLUMN_GAIN_10_9 0xA9
192 #define IRGESTURE2_REG_LED_CTRL 0xC1
210 #define IRGESTRURE2_EXSYNC_INPUT 0x00
211 #define IRGESTRURE2_EXSYNC_INPUT_SLAVE 0x10
212 #define IRGESTRURE2_EXSYNC_INPUT_MASTER 0x20
213 #define IRGESTRURE2_EOCINTE_ENABLE 0x04
219 #define IRGESTURE2_SHUTDOWN 0x80
220 #define IRGESTURE2_RESET 0x40
221 #define IRGESTURE2_SYNC 0x10
222 #define IRGESTURE2_ONE_SHOT_ENABLE 0x08
223 #define IRGESTURE2_ONE_SHOT_TRIGGER 0x04
224 #define IRGESTURE2_CONTINUOUS_CONVERSION 0x02
230 #define IRGESTURE2_EOC_DELAY_0MS 0x00
231 #define IRGESTURE2_EOC_DELAY_1p56MS 0x10
232 #define IRGESTURE2_EOC_DELAY_3p12MS 0x20
233 #define IRGESTURE2_EOC_DELAY_6p25MS 0x30
234 #define IRGESTURE2_EOC_DELAY_12p49MS 0x40
235 #define IRGESTURE2_EOC_DELAY_24p98MS 0x50
236 #define IRGESTURE2_EOC_DELAY_49p97MS 0x60
237 #define IRGESTURE2_EOC_DELAY_99p94MS 0x70
238 #define IRGESTURE2_EOC_DELAY_199p98MS 0x80
239 #define IRGESTURE2_EOC_DELAY_399p75MS 0x90
240 #define IRGESTURE2_EOC_DELAY_799p5MS 0xA0
241 #define IRGESTURE2_EOC_DELAY_1599MS 0xB0
242 #define IRGESTURE2_INTEGRATION_TIME_6p25US 0x00
243 #define IRGESTURE2_INTEGRATION_TIME_12p5US 0x02
244 #define IRGESTURE2_INTEGRATION_TIME_25US 0x04
245 #define IRGESTURE2_INTEGRATION_TIME_50US 0x06
246 #define IRGESTURE2_INTEGRATION_TIME_100US 0x08
247 #define IRGESTURE2_INTEGRATION_TIME_200US 0x0A
248 #define IRGESTURE2_INTEGRATION_TIME_400US 0x0C
249 #define IRGESTURE2_INTEGRATION_TIME_800US 0x0E
255 #define IRGESTURE2_NRPT_1 0x00
256 #define IRGESTURE2_NRPT_2 0x20
257 #define IRGESTURE2_NRPT_4 0x40
258 #define IRGESTURE2_NRPT_8 0x60
259 #define IRGESTURE2_NRPT_16 0x80
260 #define IRGESTURE2_NRPT_32 0xA0
261 #define IRGESTURE2_NRPT_64 0xC0
262 #define IRGESTURE2_NRPT_128 0xE0
263 #define IRGESTURE2_NCDS_1 0x00
264 #define IRGESTURE2_NCDS_2 0x04
265 #define IRGESTURE2_NCDS_4 0x08
266 #define IRGESTURE2_NCDS_8 0x0C
267 #define IRGESTURE2_NCDS_16 0x10
268 #define IRGESTURE2_NCDS_32 0x14
269 #define IRGESTURE2_NCDS_64 0x18
270 #define IRGESTURE2_NCDS_128 0x1C
271 #define IRGESTURE2_CDSMODE 0x02
277 #define IRGESTURE2_ALC_COARSE 0x40
278 #define IRGESTURE2_ALCEN_ENABLE 0x08
279 #define IRGESTURE2_PGA_1 0x00
280 #define IRGESTURE2_PGA_1_PER_4 0x01
281 #define IRGESTURE2_PGA_1_PER_16 0x02
282 #define IRGESTURE2_PGA_1_PER_32 0x03
288 #define IRGESTURE2_DUTY_CYCLE_1 0x00
289 #define IRGESTURE2_DUTY_CYCLE_2 0x01
290 #define IRGESTURE2_DUTY_CYCLE_3 0x02
291 #define IRGESTURE2_DUTY_CYCLE_4 0x03
292 #define IRGESTURE2_DUTY_CYCLE_5 0x04
293 #define IRGESTURE2_DUTY_CYCLE_6 0x05
294 #define IRGESTURE2_DUTY_CYCLE_7 0x06
295 #define IRGESTURE2_DUTY_CYCLE_8 0x07
296 #define IRGESTURE2_DUTY_CYCLE_9 0x08
297 #define IRGESTURE2_DUTY_CYCLE_10 0x09
298 #define IRGESTURE2_DUTY_CYCLE_11 0x0A
299 #define IRGESTURE2_DUTY_CYCLE_12 0x0B
300 #define IRGESTURE2_DUTY_CYCLE_13 0x0C
301 #define IRGESTURE2_DUTY_CYCLE_14 0x0D
302 #define IRGESTURE2_DUTY_CYCLE_15 0x0E
303 #define IRGESTURE2_DUTY_CYCLE_16 0x0F
309 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p33 0x00
310 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p37 0x10
311 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p43 0x20
312 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p49 0x30
313 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p56 0x40
314 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p65 0x50
315 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p75 0x60
316 #define IRGESTURE2_UPPER_CGAIN_FACTOR_0p86 0x70
317 #define IRGESTURE2_UPPER_CGAIN_FACTOR_1p00 0x80
318 #define IRGESTURE2_UPPER_CGAIN_FACTOR_1p14 0x90
319 #define IRGESTURE2_UPPER_CGAIN_FACTOR_1p33 0xA0
320 #define IRGESTURE2_UPPER_CGAIN_FACTOR_1p53 0xB0
321 #define IRGESTURE2_UPPER_CGAIN_FACTOR_1p79 0xC0
322 #define IRGESTURE2_UPPER_CGAIN_FACTOR_2p04 0xD0
323 #define IRGESTURE2_UPPER_CGAIN_FACTOR_2p38 0xE0
324 #define IRGESTURE2_UPPER_CGAIN_FACTOR_2p70 0xF0
325 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p33 0x00
326 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p37 0x01
327 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p43 0x02
328 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p49 0x03
329 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p56 0x04
330 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p65 0x05
331 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p75 0x06
332 #define IRGESTURE2_LOWER_CGAIN_FACTOR_0p86 0x07
333 #define IRGESTURE2_LOWER_CGAIN_FACTOR_1p00 0x08
334 #define IRGESTURE2_LOWER_CGAIN_FACTOR_1p14 0x09
335 #define IRGESTURE2_LOWER_CGAIN_FACTOR_1p33 0x0A
336 #define IRGESTURE2_LOWER_CGAIN_FACTOR_1p53 0x0B
337 #define IRGESTURE2_LOWER_CGAIN_FACTOR_1p79 0x0C
338 #define IRGESTURE2_LOWER_CGAIN_FACTOR_2p04 0x0D
339 #define IRGESTURE2_LOWER_CGAIN_FACTOR_2p38 0x0E
340 #define IRGESTURE2_LOWER_CGAIN_FACTOR_2p70 0x0F
346 #define IRGESTURE2_GAINSEL_CGAIN 0x00
347 #define IRGESTURE2_GAINSEL_INTERNAL_TRIM 0x08
348 #define IRGESTURE2_DRV_EN_DISABLE 0x00
349 #define IRGESTURE2_DRV_EN_ENABLE 0x04
350 #define IRGESTURE2_ELED_EN_DISABLE 0x00
351 #define IRGESTURE2_ELED_EN_ENABLE 0x02
352 #define IRGESTURE2_ELED_POL_NMOS 0x00
353 #define IRGESTURE2_ELED_POL_PMOS 0x01
359 #define IRGESTURE2_SPI_READ 0x80
360 #define IRGESTURE2_SPI_WRITE 0x00
366 #define IRGESTURE2_SENSOR_X_SIZE 10
367 #define IRGESTURE2_SENSOR_Y_SIZE 6
368 #define IRGESTURE2_NUM_SENSOR_PIXELS ( IRGESTURE2_SENSOR_X_SIZE * IRGESTURE2_SENSOR_Y_SIZE )
378 #define IRGESTURE2_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
379 #define IRGESTURE2_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
397 #define IRGESTURE2_MAP_MIKROBUS( cfg, mikrobus ) \
398 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
399 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
400 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
401 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
402 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
589 #endif // IRGESTURE2_H
err_t irgesture2_write_register(irgesture2_t *ctx, uint8_t reg, uint8_t data_in)
IR Gesture 2 write register function.
pin_name_t chip_select
Definition: irgesture2.h:419
irgesture2_return_value_t
IR Gesture 2 Click return value data.
Definition: irgesture2.h:450
pin_name_t mosi
Definition: irgesture2.h:431
This file contains SPI specific macros, functions, etc.
err_t irgesture2_read_register(irgesture2_t *ctx, uint8_t reg, uint8_t *data_out)
IR Gesture 2 read register function.
err_t irgesture2_generic_write(irgesture2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
IR Gesture 2 data writing function.
err_t irgesture2_read_pixels(irgesture2_t *ctx, int16_t *pixels, bool flip_pixels)
IR Gesture 2 read pixels function.
err_t irgesture2_init(irgesture2_t *ctx, irgesture2_cfg_t *cfg)
IR Gesture 2 initialization function.
uint8_t irgesture2_get_int_pin(irgesture2_t *ctx)
IR Gesture 2 get int pin function.
void irgesture2_cfg_setup(irgesture2_cfg_t *cfg)
IR Gesture 2 configuration object setup function.
IR Gesture 2 Click context object.
Definition: irgesture2.h:412
@ IRGESTURE2_ERROR
Definition: irgesture2.h:452
spi_master_chip_select_polarity_t cs_polarity
Definition: irgesture2.h:441
err_t irgesture2_generic_read(irgesture2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
IR Gesture 2 data reading function.
digital_in_t int_pin
Definition: irgesture2.h:414
pin_name_t int_pin
Definition: irgesture2.h:436
err_t irgesture2_default_cfg(irgesture2_t *ctx)
IR Gesture 2 default configuration function.
pin_name_t cs
Definition: irgesture2.h:433
uint32_t spi_speed
Definition: irgesture2.h:439
IR Gesture 2 Click configuration object.
Definition: irgesture2.h:428
spi_master_t spi
Definition: irgesture2.h:417
pin_name_t miso
Definition: irgesture2.h:430
spi_master_mode_t spi_mode
Definition: irgesture2.h:440
pin_name_t sck
Definition: irgesture2.h:432
@ IRGESTURE2_OK
Definition: irgesture2.h:451