Loading...
Searching...
No Matches
si1133_internals.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 iosabi
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
19
20#include <stdint.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
29#define SI1133_I2C_ADDRESS (0x52) /* or 0x55 */
30
35#define SI1133_REG_PART_ID (0x00)
36#define SI1133_REG_HW_ID (0x01)
37#define SI1133_REG_REV_ID (0x02)
38#define SI1133_REG_INFO0 (0x03)
39#define SI1133_REG_INFO1 (0x04)
40#define SI1133_REG_HOSTIN0 (0x0a)
41#define SI1133_REG_COMMAND (0x0b)
42#define SI1133_REG_IRQENABLE (0x0f) /* Also RESET in the datasheet.*/
43#define SI1133_REG_RESPONSE1 (0x10)
44#define SI1133_REG_RESPONSE0 (0x11)
45#define SI1133_REG_IRQ_STATUS (0x12)
46#define SI1133_REG_HOSTOUTx (0x13) /* Ranges from 0x13 to 0x2c */
48
53#define SI1133_CMD_RESET_CMD_CTR (0x00)
54#define SI1133_CMD_RESET_SW (0x01)
55#define SI1133_CMD_FORCE (0x11)
56#define SI1133_CMD_PAUSE (0x12)
57#define SI1133_CMD_START (0x13)
58#define SI1133_CMD_PARAM_QUERY (0x40) /* Add to SI1133_PARAM_* */
59#define SI1133_CMD_PARAM_SET (0x80) /* Add to SI1133_PARAM_* */
61
70typedef struct __attribute__((packed)) _si1133_channel_params {
71 uint8_t adcconfig;
72 uint8_t adcsens;
73 uint8_t adcpost;
74 uint8_t measconfig;
76
85#define SI1133_PARAM_I2C_ADDR (0x00)
86#define SI1133_PARAM_CHAN_LIST (0x01)
87#define SI1133_PARAM_ADCCONFIG0 (0x02)
88#define SI1133_PARAM_ADCSENS0 (0x03)
89#define SI1133_PARAM_ADCPOST0 (0x04)
90#define SI1133_PARAM_MEASCONFIG0 (0x05)
91#define SI1133_PARAM_ADCCONFIG1 (0x06)
92#define SI1133_PARAM_ADCSENS1 (0x07)
93#define SI1133_PARAM_ADCPOST1 (0x08)
94#define SI1133_PARAM_MEASCONFIG1 (0x09)
95#define SI1133_PARAM_ADCCONFIG2 (0x0a)
96#define SI1133_PARAM_ADCSENS2 (0x0b)
97#define SI1133_PARAM_ADCPOST2 (0x0c)
98#define SI1133_PARAM_MEASCONFIG2 (0x0d)
99#define SI1133_PARAM_ADCCONFIG3 (0x0e)
100#define SI1133_PARAM_ADCSENS3 (0x0f)
101#define SI1133_PARAM_ADCPOST3 (0x10)
102#define SI1133_PARAM_MEASCONFIG3 (0x11)
103#define SI1133_PARAM_ADCCONFIG4 (0x12)
104#define SI1133_PARAM_ADCSENS4 (0x13)
105#define SI1133_PARAM_ADCPOST4 (0x14)
106#define SI1133_PARAM_MEASCONFIG4 (0x15)
107#define SI1133_PARAM_ADCCONFIG5 (0x16)
108#define SI1133_PARAM_ADCSENS5 (0x17)
109#define SI1133_PARAM_ADCPOST5 (0x18)
110#define SI1133_PARAM_MEASCONFIG5 (0x19)
111#define SI1133_PARAM_MEASRATE_H (0x1a)
112#define SI1133_PARAM_MEASRATE_L (0x1b)
113#define SI1133_PARAM_MEASCOUNT0 (0x1c)
114#define SI1133_PARAM_MEASCOUNT1 (0x1d)
115#define SI1133_PARAM_MEASCOUNT2 (0x1e)
116#define SI1133_PARAM_THRESHOLD0_H (0x25)
117#define SI1133_PARAM_THRESHOLD0_L (0x26)
118#define SI1133_PARAM_THRESHOLD1_H (0x27)
119#define SI1133_PARAM_THRESHOLD1_L (0x28)
120#define SI1133_PARAM_THRESHOLD2_H (0x29)
121#define SI1133_PARAM_THRESHOLD2_L (0x2a)
122#define SI1133_PARAM_BURST (0x2b)
124
129#define SI1133_RESP0_COUNTER_MASK (0x0f)
130#define SI1133_RESP0_CMD_ERR_MASK (0x10)
131#define SI1133_RESP0_SLEEP_MASK (0x20)
132#define SI1133_RESP0_SUSPEND_MASK (0x40)
133#define SI1133_RESP0_RUNNING_MASK (0x80)
134
135/* Possible error values if SI1133_RESP0_CMD_ERR_MASK is set. */
136#define SI1133_RESP0_ERR_INVALID_COMMAND (0x01)
137#define SI1133_RESP0_ERR_INVALID_PARAM_ADDR (0x80)
138#define SI1133_RESP0_ERR_ADC_OVERFLOW (0x88)
139#define SI1133_RESP0_ERR_BUFFER_OVERFLOW (0x89)
141
146#define SI1133_ADCCONFIG_DECIM_RATE_MASK (0x60)
147#define SI1133_ADCCONFIG_DECIM_RATE_SHIFT (5u)
148#define SI1133_ADCCONFIG_ADCMUX_MASK (0x1f)
149#define SI1133_ADCCONFIG_ADCMUX_SHIFT (0u)
150
151#define SI1133_ADCSENS_HSIG_MASK (0x80)
152#define SI1133_ADCSENS_SW_GAIN_MASK (0x70)
153#define SI1133_ADCSENS_SW_GAIN_SHIFT (4u)
154#define SI1133_ADCSENS_HW_GAIN_MASK (0x0f)
155#define SI1133_ADCSENS_HW_GAIN_SHIFT (0u)
156
157#define SI1133_ADCPOST_24BIT_OUT_MASK (0x40)
158#define SI1133_ADCPOST_POSTSHIFT_MASK (0x38)
159#define SI1133_ADCPOST_POSTSHIFT_SHIFT (3u)
160#define SI1133_ADCPOST_THRESH_SEL_MASK (0x03)
161#define SI1133_ADCPOST_THRESH_SEL_SHIFT (0u)
162
163#define SI1133_MEASCONFIG_COUNTER_IDX_MASK (0xc0)
164#define SI1133_MEASCONFIG_COUNTER_IDX_SHIFT (6u)
166
171#define SI1133_ADCMUX_SMALL_IR (0u)
172#define SI1133_ADCMUX_MEDIUM_IR (1u)
173#define SI1133_ADCMUX_LARGE_IR (2u)
174#define SI1133_ADCMUX_WHITE (11u)
175#define SI1133_ADCMUX_LARGE_WHITE (13u)
176#define SI1133_ADCMUX_UV (24u)
177#define SI1133_ADCMUX_DEEP_UV (25u)
179
184#define SI1133_ID (0x33)
185#define SI1133_STARTUP_TIME_MS (25u)
186#define SI1133_NUM_CHANNELS (6u)
188
189#ifdef __cplusplus
190}
191#endif
192
struct _si1133_channel_params si1133_channel_params_t
Si1133 channel parameters.
Si1133 channel parameters.
uint8_t adcsens
ADCSENSx register.
uint8_t measconfig
MEASCONFIGx register.
uint8_t adcpost
ADCPOSTx register.
uint8_t adcconfig
ADCCONFIGx register.