ChibiOS 21.11.4
vl53l0x.h File Reference

VL53L0X MEMS interface module header. More...

#include "ex_rangefinder.h"

Go to the source code of this file.

Data Structures

struct  VL53L0XConfig
 VL53L0X configuration structure. More...
struct  VL53L0XVMT
 VL53L0X virtual methods table. More...
struct  VL53L0XDriver
 VL53L0X 2-axis rangemeter/thermometer class. More...

Macros

#define vl53l0xRangeFinderGetAxesNumber(devp)
 Return the number of axes of the BaseRangeFinder.
#define vl53l0xRangeFinderReadRaw(devp, axes)
 Retrieves raw data from the BaseRangeFinder.
#define vl53l0xRangeFinderReadCooked(devp, axes)
 Retrieves cooked data from the BaseRangeFinder.
Version identification
#define EX_VL53L0X_VERSION   "1.0.0"
 VL53L0X driver version string.
#define EX_VL53L0X_MAJOR   1
 VL53L0X driver version major number.
#define EX_VL53L0X_MINOR   0
 VL53L0X driver version minor number.
#define EX_VL53L0X_PATCH   0
 VL53L0X driver version patch number.
#define VL53L0X_RANGE_NUMBER_OF_AXES   1U
 VL53L0X rangefinder subsystem characteristics.
#define VL53L0X_RANGE_SENS   0.00024414f
#define VL53L0X_RANGE_BIAS   0.0f
VL53L0X register addresses
#define VL53L0X_REG_SYSRANGE_START   0x00
#define VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG   0x01
#define VL53L0X_REG_SYSTEM_INTERMEASUREMENT_PERIOD   0x04
#define VL53L0X_REG_SYSTEM_RANGE_CONFIG   0x09
#define VL53L0X_REG_SYSTEM_INTERRUPT_CONFIG_GPIO   0x0A
#define VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR   0x0B
#define VL53L0X_REG_SYSTEM_THRESH_HIGH   0x0C
#define VL53L0X_REG_SYSTEM_THRESH_LOW   0x0E
#define VL53L0X_REG_RESULT_INTERRUPT_STATUS   0x13
#define VL53L0X_REG_RESULT_RANGE_STATUS   0x14
#define VL53L0X_REG_CROSSTALK_COMPENSATION_PEAK_RATE_MCPS   0x20
#define VL53L0X_REG_PRE_RANGE_CONFIG_MIN_SNR   0x27
#define VL53L0X_REG_ALGO_PART_TO_PART_RANGE_OFFSET_MM   0x28
#define VL53L0X_REG_ALGO_PHASECAL_LIM   0x30
#define VL53L0X_REG_ALGO_PHASECAL_CONFIG_TIMEOUT   0x30
#define VL53L0X_REG_GLOBAL_CONFIG_VCSEL_WIDTH   0x32
#define VL53L0X_REG_HISTOGRAM_CONFIG_INITIAL_PHASE_SELECT   0x33
#define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT   0x44
#define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW   0x47
#define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH   0x48
#define VL53L0X_REG_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD   0x4E
#define VL53L0X_REG_DYNAMIC_SPAD_REF_EN_START_OFFSET   0x4F
#define VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD   0x50
#define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI   0x51
#define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_LO   0x52
#define VL53L0X_REG_HISTOGRAM_CONFIG_READOUT_CTRL   0x55
#define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW   0x56
#define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH   0x57
#define VL53L0X_REG_MSRC_CONFIG_CONTROL   0x60
#define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_HI   0x61
#define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_LO   0x62
#define VL53L0X_REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT   0x64
#define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_SNR   0x67
#define VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD   0x70
#define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI   0x71
#define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_LO   0x72
#define VL53L0X_REG_POWER_MANAGEMENT_GO1_POWER_FORCE   0x80
#define VL53L0X_REG_SYSTEM_HISTOGRAM_BIN   0x81
#define VL53L0X_REG_GPIO_HV_MUX_ACTIVE_HIGH   0x84
#define VL53L0X_REG_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV   0x89
#define VL53L0X_REG_I2C_SLAVE_DEVICE_ADDRESS   0x8A
#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_0   0xB0
#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_1   0xB1
#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_2   0xB2
#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_3   0xB3
#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_4   0xB4
#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_5   0xB5
#define VL53L0X_REG_GLOBAL_CONFIG_REF_EN_START_SELECT   0xB6
#define VL53L0X_REG_RESULT_PEAK_SIGNAL_RATE_REF   0xB6
#define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_RTN   0xBC
#define VL53L0X_REG_SOFT_RESET_GO2_SOFT_RESET_N   0xBF
#define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_RTN   0xC0
#define VL53L0X_REG_IDENTIFICATION_MODEL_ID   0xC0
#define VL53L0X_REG_IDENTIFICATION_REVISION_ID   0xC2
#define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_REF   0xD0
#define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_REF   0xD4
#define VL53L0X_REG_OSC_CALIBRATE_VAL   0xF8
VL53L0X_INT_CFG register bits definitions
#define VL53L0X_INT_CFG_MASK   0xFF
#define VL53L0X_INT_CFG_PHE   (1 << 0)
#define VL53L0X_INT_CFG_PLE   (1 << 1)
#define VL53L0X_INT_CFG_LIR   (1 << 2)
#define VL53L0X_INT_CFG_DIFF_EN   (1 << 3)
#define VL53L0X_INT_CFG_RESET_AZ   (1 << 4)
#define VL53L0X_INT_CFG_AUTOZERO   (1 << 5)
#define VL53L0X_INT_CFG_RESET_ARP   (1 << 6)
#define VL53L0X_INT_CFG_AUTORIFP   (1 << 7)
VL53L0X_CTRL_REG1 register bits definitions
#define VL53L0X_CTRL_REG1_MASK   0x7F
#define VL53L0X_CTRL_REG1_SIM   (1 << 0)
#define VL53L0X_CTRL_REG1_BDU   (1 << 1)
#define VL53L0X_CTRL_REG1_LPFP_CFG   (1 << 2)
#define VL53L0X_CTRL_REG1_LPFP_EN   (1 << 3)
#define VL53L0X_CTRL_REG1_ODR0   (1 << 4)
#define VL53L0X_CTRL_REG1_ODR1   (1 << 5)
#define VL53L0X_CTRL_REG1_ODR2   (1 << 6)
VL53L0X_CTRL_REG2 register bits definitions
#define VL53L0X_CTRL_REG2_MASK   0xFD
#define VL53L0X_CTRL_REG2_ONE_SHOT   (1 << 0)
#define VL53L0X_CTRL_REG2_SWRESET   (1 << 2)
#define VL53L0X_CTRL_REG2_I2C_DIS   (1 << 3)
#define VL53L0X_CTRL_REG2_IF_ADD_INC   (1 << 4)
#define VL53L0X_CTRL_REG2_STOP_ON_FTH   (1 << 5)
#define VL53L0X_CTRL_REG2_FIFO_EN   (1 << 6)
#define VL53L0X_CTRL_REG2_BOOT   (1 << 7)
VL53L0X_CTRL_REG3 register bits definitions
#define VL53L0X_CTRL_REG3_MASK   0xFF
#define VL53L0X_CTRL_REG3_INT_S1   (1 << 0)
#define VL53L0X_CTRL_REG3_INT_S2   (1 << 1)
#define VL53L0X_CTRL_REG3_DRDY   (1 << 2)
#define VL53L0X_CTRL_REG3_F_OVR   (1 << 3)
#define VL53L0X_CTRL_REG3_F_FTH   (1 << 4)
#define VL53L0X_CTRL_REG3_F_FSS5   (1 << 5)
#define VL53L0X_CTRL_REG3_PP_OD   (1 << 6)
#define VL53L0X_CTRL_REG3_INT_H_L   (1 << 7)
VL53L0X_INT_SRC register bits definitions
#define VL53L0X_INT_SRC_MASK   0x87
#define VL53L0X_INT_SRC_PH   (1 << 0)
#define VL53L0X_INT_SRC_PL   (1 << 1)
#define VL53L0X_INT_SRC_IA   (1 << 2)
#define VL53L0X_INT_SRC_BOOT_STATUS   (1 << 8)
Configuration options
#define VL53L0X_USE_I2C   TRUE
 VL53L0X I2C interface switch.
#define VL53L0X_SHARED_I2C   FALSE
 VL53L0X shared I2C switch.
#define VL53L0X_USE_ADVANCED   FALSE
 VL53L0X advanced configurations switch.

Functions

void vl53l0xObjectInit (VL53L0XDriver *devp)
void vl53l0xStart (VL53L0XDriver *devp, const VL53L0XConfig *config)
void vl53l0xStop (VL53L0XDriver *devp)

VL53L0X data structures and types.

#define _vl53l0x_methods_alone
 VL53L0X specific methods.
#define _vl53l0x_methods
 VL53L0X specific methods with inherited ones.
#define _vl53l0x_data
 VL53L0XDriver specific data.
enum  vl53l0x_sad_t { VL53L0X_SAD_DEFAULT = 0x29 }
 VL53L0X slave address. More...
enum  vl53l0x_state_t { VL53L0X_UNINIT = 0 , VL53L0X_STOP = 1 , VL53L0X_READY = 2 }
 Driver state machine possible states. More...
typedef struct VL53L0XDriver VL53L0XDriver
 Structure representing a VL53L0X driver.

Detailed Description

VL53L0X MEMS interface module header.

Definition in file vl53l0x.h.