Go to the documentation of this file.
45 #define EX_VL53L0X_VERSION "1.0.0"
50 #define EX_VL53L0X_MAJOR 1
55 #define EX_VL53L0X_MINOR 0
60 #define EX_VL53L0X_PATCH 0
71 #define VL53L0X_RANGE_NUMBER_OF_AXES 1U
74 #define VL53L0X_RANGE_SENS 0.00024414f
75 #define VL53L0X_RANGE_BIAS 0.0f
82 #define VL53L0X_REG_SYSRANGE_START 0x00
83 #define VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG 0x01
84 #define VL53L0X_REG_SYSTEM_INTERMEASUREMENT_PERIOD 0x04
85 #define VL53L0X_REG_SYSTEM_RANGE_CONFIG 0x09
86 #define VL53L0X_REG_SYSTEM_INTERRUPT_CONFIG_GPIO 0x0A
87 #define VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR 0x0B
88 #define VL53L0X_REG_SYSTEM_THRESH_HIGH 0x0C
89 #define VL53L0X_REG_SYSTEM_THRESH_LOW 0x0E
91 #define VL53L0X_REG_RESULT_INTERRUPT_STATUS 0x13
92 #define VL53L0X_REG_RESULT_RANGE_STATUS 0x14
94 #define VL53L0X_REG_CROSSTALK_COMPENSATION_PEAK_RATE_MCPS 0x20
95 #define VL53L0X_REG_PRE_RANGE_CONFIG_MIN_SNR 0x27
96 #define VL53L0X_REG_ALGO_PART_TO_PART_RANGE_OFFSET_MM 0x28
97 #define VL53L0X_REG_ALGO_PHASECAL_LIM 0x30
98 #define VL53L0X_REG_ALGO_PHASECAL_CONFIG_TIMEOUT 0x30
99 #define VL53L0X_REG_GLOBAL_CONFIG_VCSEL_WIDTH 0x32
100 #define VL53L0X_REG_HISTOGRAM_CONFIG_INITIAL_PHASE_SELECT 0x33
102 #define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT 0x44
103 #define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW 0x47
104 #define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH 0x48
105 #define VL53L0X_REG_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD 0x4E
106 #define VL53L0X_REG_DYNAMIC_SPAD_REF_EN_START_OFFSET 0x4F
108 #define VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD 0x50
109 #define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x51
110 #define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x52
111 #define VL53L0X_REG_HISTOGRAM_CONFIG_READOUT_CTRL 0x55
112 #define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW 0x56
113 #define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH 0x57
115 #define VL53L0X_REG_MSRC_CONFIG_CONTROL 0x60
116 #define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_HI 0x61
117 #define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_LO 0x62
118 #define VL53L0X_REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT 0x64
119 #define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_SNR 0x67
121 #define VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD 0x70
122 #define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x71
123 #define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x72
125 #define VL53L0X_REG_POWER_MANAGEMENT_GO1_POWER_FORCE 0x80
126 #define VL53L0X_REG_SYSTEM_HISTOGRAM_BIN 0x81
127 #define VL53L0X_REG_GPIO_HV_MUX_ACTIVE_HIGH 0x84
128 #define VL53L0X_REG_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV 0x89
129 #define VL53L0X_REG_I2C_SLAVE_DEVICE_ADDRESS 0x8A
131 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_0 0xB0
132 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_1 0xB1
133 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_2 0xB2
134 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_3 0xB3
135 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_4 0xB4
136 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_5 0xB5
137 #define VL53L0X_REG_GLOBAL_CONFIG_REF_EN_START_SELECT 0xB6
138 #define VL53L0X_REG_RESULT_PEAK_SIGNAL_RATE_REF 0xB6
139 #define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_RTN 0xBC
140 #define VL53L0X_REG_SOFT_RESET_GO2_SOFT_RESET_N 0xBF
142 #define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_RTN 0xC0
143 #define VL53L0X_REG_IDENTIFICATION_MODEL_ID 0xC0
144 #define VL53L0X_REG_IDENTIFICATION_REVISION_ID 0xC2
146 #define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_REF 0xD0
147 #define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_REF 0xD4
149 #define VL53L0X_REG_OSC_CALIBRATE_VAL 0xF8
156 #define VL53L0X_INT_CFG_MASK 0xFF
157 #define VL53L0X_INT_CFG_PHE (1 << 0)
158 #define VL53L0X_INT_CFG_PLE (1 << 1)
159 #define VL53L0X_INT_CFG_LIR (1 << 2)
160 #define VL53L0X_INT_CFG_DIFF_EN (1 << 3)
161 #define VL53L0X_INT_CFG_RESET_AZ (1 << 4)
162 #define VL53L0X_INT_CFG_AUTOZERO (1 << 5)
163 #define VL53L0X_INT_CFG_RESET_ARP (1 << 6)
164 #define VL53L0X_INT_CFG_AUTORIFP (1 << 7)
171 #define VL53L0X_CTRL_REG1_MASK 0x7F
172 #define VL53L0X_CTRL_REG1_SIM (1 << 0)
173 #define VL53L0X_CTRL_REG1_BDU (1 << 1)
174 #define VL53L0X_CTRL_REG1_LPFP_CFG (1 << 2)
175 #define VL53L0X_CTRL_REG1_LPFP_EN (1 << 3)
176 #define VL53L0X_CTRL_REG1_ODR0 (1 << 4)
177 #define VL53L0X_CTRL_REG1_ODR1 (1 << 5)
178 #define VL53L0X_CTRL_REG1_ODR2 (1 << 6)
185 #define VL53L0X_CTRL_REG2_MASK 0xFD
186 #define VL53L0X_CTRL_REG2_ONE_SHOT (1 << 0)
187 #define VL53L0X_CTRL_REG2_SWRESET (1 << 2)
188 #define VL53L0X_CTRL_REG2_I2C_DIS (1 << 3)
189 #define VL53L0X_CTRL_REG2_IF_ADD_INC (1 << 4)
190 #define VL53L0X_CTRL_REG2_STOP_ON_FTH (1 << 5)
191 #define VL53L0X_CTRL_REG2_FIFO_EN (1 << 6)
192 #define VL53L0X_CTRL_REG2_BOOT (1 << 7)
199 #define VL53L0X_CTRL_REG3_MASK 0xFF
200 #define VL53L0X_CTRL_REG3_INT_S1 (1 << 0)
201 #define VL53L0X_CTRL_REG3_INT_S2 (1 << 1)
202 #define VL53L0X_CTRL_REG3_DRDY (1 << 2)
203 #define VL53L0X_CTRL_REG3_F_OVR (1 << 3)
204 #define VL53L0X_CTRL_REG3_F_FTH (1 << 4)
205 #define VL53L0X_CTRL_REG3_F_FSS5 (1 << 5)
206 #define VL53L0X_CTRL_REG3_PP_OD (1 << 6)
207 #define VL53L0X_CTRL_REG3_INT_H_L (1 << 7)
214 #define VL53L0X_INT_SRC_MASK 0x87
215 #define VL53L0X_INT_SRC_PH (1 << 0)
216 #define VL53L0X_INT_SRC_PL (1 << 1)
217 #define VL53L0X_INT_SRC_IA (1 << 2)
218 #define VL53L0X_INT_SRC_BOOT_STATUS (1 << 8)
234 #if !defined(VL53L0X_USE_I2C) || defined(__DOXYGEN__)
235 #define VL53L0X_USE_I2C TRUE
244 #if !defined(VL53L0X_SHARED_I2C) || defined(__DOXYGEN__)
245 #define VL53L0X_SHARED_I2C FALSE
253 #if !defined(VL53L0X_USE_ADVANCED) || defined(__DOXYGEN__)
254 #define VL53L0X_USE_ADVANCED FALSE
262 #if VL53L0X_USE_I2C && !HAL_USE_I2C
263 #error "VL53L0X_USE_I2C requires HAL_USE_I2C"
266 #if VL53L0X_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
267 #error "VL53L0X_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
303 #if VL53L0X_USE_I2C || defined(__DOXYGEN__)
317 #if VL53L0X_USE_ADVANCED || defined(__DOXYGEN__)
328 #define _vl53l0x_methods_alone
333 #define _vl53l0x_methods \
334 _base_object_methods \
335 _vl53l0x_methods_alone
349 #define _vl53l0x_data \
351 vl53l0x_state_t state; \
353 const VL53L0XConfig *config; \
382 #define vl53l0xRangeFinderGetAxesNumber(devp) \
383 rangemeterGetAxesNumber(&((devp)->range_if))
403 #define vl53l0xRangeFinderReadRaw(devp, axes) \
404 rangemeterReadRaw(&((devp)->range_if), axes)
423 #define vl53l0xRangeFinderReadCooked(devp, axes) \
424 rangemeterReadCooked(&((devp)->range_if), axes)
const I2CConfig * i2ccfg
I2C configuration associated to this VL53L0X.
vl53l0x_state_t
Driver state machine possible states.
const struct VL53L0XVMT * vmt
Virtual Methods Table.
VL53L0X 2-axis rangemeter/thermometer class.
BaseRangeFinder range_if
Base rangemeter interface.
I2CDriver * i2cp
I2C driver associated to this VL53L0X.
Generic rangefinder interface header.
VL53L0X configuration structure.
vl53l0x_sad_t slaveaddress
VL53L0X slave address.
VL53L0X virtual methods table.
#define _vl53l0x_methods
VL53L0X specific methods with inherited ones.
#define _vl53l0x_data
VL53L0XDriver specific data.
vl53l0x_sad_t
VL53L0X slave address.