ChibiOS/EX  1.2.0
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)   rangemeterGetAxesNumber(&((devp)->range_if))
 Return the number of axes of the BaseRangeFinder. More...
 
#define vl53l0xRangeFinderReadRaw(devp, axes)   rangemeterReadRaw(&((devp)->range_if), axes)
 Retrieves raw data from the BaseRangeFinder. More...
 
#define vl53l0xRangeFinderReadCooked(devp, axes)   rangemeterReadCooked(&((devp)->range_if), axes)
 Retrieves cooked data from the BaseRangeFinder. More...
 
Version identification
#define EX_VL53L0X_VERSION   "1.0.0"
 VL53L0X driver version string. More...
 
#define EX_VL53L0X_MAJOR   1
 VL53L0X driver version major number. More...
 
#define EX_VL53L0X_MINOR   0
 VL53L0X driver version minor number. More...
 
#define EX_VL53L0X_PATCH   0
 VL53L0X driver version patch number. More...
 
#define VL53L0X_RANGE_NUMBER_OF_AXES   1U
 VL53L0X rangefinder subsystem characteristics. More...
 
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. More...
 
#define VL53L0X_SHARED_I2C   FALSE
 VL53L0X shared I2C switch. More...
 
#define VL53L0X_USE_ADVANCED   FALSE
 VL53L0X advanced configurations switch. More...
 

VL53L0X data structures and types.

#define _vl53l0x_methods_alone
 VL53L0X specific methods. More...
 
#define _vl53l0x_methods
 VL53L0X specific methods with inherited ones. More...
 
#define _vl53l0x_data
 VL53L0XDriver specific data. More...
 
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. More...
 

Detailed Description

VL53L0X MEMS interface module header.

Definition in file vl53l0x.h.