Condensed Version of Public VL53L0X
Diff: VL53L0X_def.h
- Revision:
- 11:c6f95a42d4d7
- Parent:
- 10:cd251e0fc2fd
- Child:
- 12:aa177f0e4c10
--- a/VL53L0X_def.h Sun Mar 24 22:24:16 2019 +0000 +++ b/VL53L0X_def.h Mon Apr 08 16:26:19 2019 +0000 @@ -53,46 +53,77 @@ #define VL53L0X_I2C_USER_VAR /* none but could be for a flag var to get/pass to mutex interruptible return flags and try again */ -/** PAL SPECIFICATION major version */ +/** Device SPECIFICATION major version */ #define VL53L0X10_SPECIFICATION_VER_MAJOR 1 -/** PAL SPECIFICATION minor version */ +/** Device SPECIFICATION minor version */ #define VL53L0X10_SPECIFICATION_VER_MINOR 2 -/** PAL SPECIFICATION sub version */ +/** Device SPECIFICATION sub version */ #define VL53L0X10_SPECIFICATION_VER_SUB 7 -/** PAL SPECIFICATION sub version */ +/** Device SPECIFICATION sub version */ #define VL53L0X10_SPECIFICATION_VER_REVISION 1440 -/** VL53L0X PAL IMPLEMENTATION major version */ +/** VL53L0X Device IMPLEMENTATION major version */ #define VL53L0X10_IMPLEMENTATION_VER_MAJOR 1 -/** VL53L0X PAL IMPLEMENTATION minor version */ +/** VL53L0X Device IMPLEMENTATION minor version */ #define VL53L0X10_IMPLEMENTATION_VER_MINOR 0 -/** VL53L0X PAL IMPLEMENTATION sub version */ +/** VL53L0X Device IMPLEMENTATION sub version */ #define VL53L0X10_IMPLEMENTATION_VER_SUB 9 -/** VL53L0X PAL IMPLEMENTATION sub version */ +/** VL53L0X Device IMPLEMENTATION sub version */ #define VL53L0X10_IMPLEMENTATION_VER_REVISION 3673 -/** PAL SPECIFICATION major version */ +/** Device SPECIFICATION major version */ #define VL53L0X_SPECIFICATION_VER_MAJOR 1 -/** PAL SPECIFICATION minor version */ +/** Device SPECIFICATION minor version */ #define VL53L0X_SPECIFICATION_VER_MINOR 2 -/** PAL SPECIFICATION sub version */ +/** Device SPECIFICATION sub version */ #define VL53L0X_SPECIFICATION_VER_SUB 7 -/** PAL SPECIFICATION sub version */ +/** Device SPECIFICATION sub version */ #define VL53L0X_SPECIFICATION_VER_REVISION 1440 -/** VL53L0X PAL IMPLEMENTATION major version */ +/** VL53L0X Device IMPLEMENTATION major version */ #define VL53L0X_IMPLEMENTATION_VER_MAJOR 1 -/** VL53L0X PAL IMPLEMENTATION minor version */ +/** VL53L0X Device IMPLEMENTATION minor version */ #define VL53L0X_IMPLEMENTATION_VER_MINOR 1 -/** VL53L0X PAL IMPLEMENTATION sub version */ +/** VL53L0X Device IMPLEMENTATION sub version */ #define VL53L0X_IMPLEMENTATION_VER_SUB 21 -/** VL53L0X PAL IMPLEMENTATION sub version */ +/** VL53L0X Device IMPLEMENTATION sub version */ #define VL53L0X_IMPLEMENTATION_VER_REVISION 4823 #define VL53L0X_DEFAULT_MAX_LOOP 2000 #define VL53L0X_MAX_STRING_LENGTH 32 +/** The device model ID */ +#define IDENTIFICATION_MODEL_ID 0x000 +#define STATUS_OK 0x00 +#define STATUS_FAIL 0x01 + +/** default device address */ +#define VL53L0X_DEFAULT_ADDRESS 0x52 /* (8-bit) */ + +#define VL53L0X_STRING_DEVICE_INFO_NAME_TS0 "VL53L0X TS0" +#define VL53L0X_STRING_DEVICE_INFO_NAME_TS1 "VL53L0X TS1" +#define VL53L0X_STRING_DEVICE_INFO_NAME_TS2 "VL53L0X TS2" +#define VL53L0X_STRING_DEVICE_INFO_NAME_ES1 "VL53L0X ES1 or later" +#define VL53L0X_STRING_DEVICE_INFO_TYPE "VL53L0X" + +#define REF_ARRAY_SPAD_0 0 +#define REF_ARRAY_SPAD_5 5 +#define REF_ARRAY_SPAD_10 10 + + +/* sensor operating modes */ +typedef enum { + op_single_shot_poll = 1, + op_poll, // was range_continuous_polling + op_INT, + op_poll_low_threshold, + op_poll_high_threshold, + op_poll_out_of_window, + op_INT_low_threshold, + op_INT_high_threshold, + op_INT_out_of_window, +} TOperatingMode; /** * Device specific defines. To be adapted by implementer for the targeted @@ -101,8 +132,8 @@ /** use where fractional values are expected * - * Given a floating point value f it's .16 bit point is (int)(f*(1<<16))*/ -typedef uint32_t FixPoint1616_t; + * Given a floating point value f it's 16.16 bit point is (int)(f*(1<<16))*/ +typedef uint32_t TFP1616; /** @defgroup VL53L0X_DevSpecDefines_group VL53L0X cut1.1 Device Specific Defines * @brief VL53L0X cut1.1 Device Specific Defines @@ -117,63 +148,55 @@ * It is related to Status Register of the Device. * @{ */ -typedef uint8_t VL53L0X_DeviceError; +typedef uint8_t TDevError; -#define VL53L0X_DEVICEERROR_NONE ((VL53L0X_DeviceError) 0) +#define VL53L0X_DEVICEERROR_NONE ((TDevError) 0) /*!< 0 NoError */ -#define VL53L0X_DEVICEERROR_VCSELCONTINUITYTESTFAILURE ((VL53L0X_DeviceError) 1) -#define VL53L0X_DEVICEERROR_VCSELWATCHDOGTESTFAILURE ((VL53L0X_DeviceError) 2) -#define VL53L0X_DEVICEERROR_NOVHVVALUEFOUND ((VL53L0X_DeviceError) 3) -#define VL53L0X_DEVICEERROR_MSRCNOTARGET ((VL53L0X_DeviceError) 4) -#define VL53L0X_DEVICEERROR_SNRCHECK ((VL53L0X_DeviceError) 5) -#define VL53L0X_DEVICEERROR_RANGEPHASECHECK ((VL53L0X_DeviceError) 6) -#define VL53L0X_DEVICEERROR_SIGMATHRESHOLDCHECK ((VL53L0X_DeviceError) 7) -#define VL53L0X_DEVICEERROR_TCC ((VL53L0X_DeviceError) 8) -#define VL53L0X_DEVICEERROR_MINCLIP ((VL53L0X_DeviceError) 10) -#define VL53L0X_DEVICEERROR_RANGECOMPLETE ((VL53L0X_DeviceError) 11) -#define VL53L0X_DEVICEERROR_ALGOUNDERFLOW ((VL53L0X_DeviceError) 12) -#define VL53L0X_DEVICEERROR_ALGOOVERFLOW ((VL53L0X_DeviceError) 13) -#define VL53L0X_DEVICEERROR_RANGEIGNORETHRESHOLD ((VL53L0X_DeviceError) 14) +#define VL53L0X_DEVICEERROR_VCSELCONTINUITYTESTFAILURE ((TDevError) 1) +#define VL53L0X_DEVICEERROR_VCSELWATCHDOGTESTFAILURE ((TDevError) 2) +#define VL53L0X_DEVICEERROR_NOVHVVALUEFOUND ((TDevError) 3) +#define VL53L0X_DEVICEERROR_MSRCNOTARGET ((TDevError) 4) +#define VL53L0X_DEVICEERROR_SNRCHECK ((TDevError) 5) +#define VL53L0X_DEVICEERROR_RANGEPHASECHECK ((TDevError) 6) +#define VL53L0X_DEVICEERROR_SIGMATHRESHOLDCHECK ((TDevError) 7) +#define VL53L0X_DEVICEERROR_TCC ((TDevError) 8) +#define VL53L0X_DEVICEERROR_MINCLIP ((TDevError) 10) +#define VL53L0X_DEVICEERROR_RANGECOMPLETE ((TDevError) 11) +#define VL53L0X_DEVICEERROR_ALGOUNDERFLOW ((TDevError) 12) +#define VL53L0X_DEVICEERROR_ALGOOVERFLOW ((TDevError) 13) +#define VL53L0X_DEVICEERROR_RANGEIGNORETHRESHOLD ((TDevError) 14) /** @} end of VL53L0X_DeviceError_group */ -/** @defgroup VL53L0X_CheckEnable_group Check Enable list +/** @defgroup VL53L0X_CHECKEN_group Check Enable list * @brief Check Enable code * * Define used to specify the LimitCheckId. * Use @a VL53L0X_GetLimitCheckInfo() to get the string. * @{ */ - -#define VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE 0 -#define VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE 1 -#define VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP 2 -#define VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD 3 -#define VL53L0X_CHECKENABLE_SIGNAL_RATE_MSRC 4 -#define VL53L0X_CHECKENABLE_SIGNAL_RATE_PRE_RANGE 5 -#define VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS 6 -/** @} end of VL53L0X_CheckEnable_group */ +#define VL53L0X_CHECKEN_SIGMA_FINAL_RANGE 0 +#define VL53L0X_CHECKEN_SIG_RATE_FINAL_RANGE 1 +#define VL53L0X_CHECKEN_SIG_REF_CLIP 2 +#define VL53L0X_CHECKEN_RANGE_IGNORE_THRESHOLD 3 +#define VL53L0X_CHECKEN_SIG_RATE_MSRC 4 +#define VL53L0X_CHECKEN_SIG_RATE_PRE_RANGE 5 +#define VL53L0X_CHECKEN_NUMBER_OF_CHECKS 6 +/** @} end of VL53L0X_CHECKEN_group */ -/** @defgroup VL53L0X_GpioFunctionality_group Gpio Functionality +/** @defgroup GPIO_Func_group Gpio Functionality * @brief Defines the different functionalities for the device GPIO(s) - * @{ - */ -typedef uint8_t VL53L0X_GpioFunctionality; - -#define VL53L0X_GPIOFUNCTIONALITY_OFF \ - ((VL53L0X_GpioFunctionality) 0) /*!< NO Interrupt */ -#define VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_LOW \ - ((VL53L0X_GpioFunctionality) 1) /*!< Level Low (value < thresh_low) */ -#define VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_HIGH \ - ((VL53L0X_GpioFunctionality) 2) /*!< Level High (value > thresh_high) */ -#define VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_OUT \ - ((VL53L0X_GpioFunctionality) 3) -/*!< Out Of Window (value < thresh_low OR value > thresh_high) */ -#define VL53L0X_GPIOFUNCTIONALITY_NEW_MEASURE_READY \ - ((VL53L0X_GpioFunctionality) 4) /*!< New Sample Ready */ -/** @} end of VL53L0X_GpioFunctionality_group */ + * @{ */ +typedef enum { + GPIO_FUNC_OFF = 0, /*!< NO Interrupt */ + GPIO_FUNC_THRESHOLD_CROSSED_LOW, /*!< Level Low (value < thresh_low) */ + GPIO_FUNC_THRESHOLD_CROSSED_HIGH, /*!< Level High (value > thresh_high) */ + GPIO_FUNC_THRESHOLD_CROSSED_OUT, /*!< Out Of Window (value < thresh_low OR value > thresh_high) */ + GPIO_FUNC_NEW_MEASURE_READY /*!< New Sample Ready */ +} TGPIO_Func; +/** @} end of GPIO_FUNC_group */ /* Device register map */ @@ -182,117 +205,116 @@ * @brief List of all the defined registers * @{ */ -#define VL53L0X_REG_SYSRANGE_START 0x000 -/** mask existing bit in #VL53L0X_REG_SYSRANGE_START*/ -#define VL53L0X_REG_SYSRANGE_MODE_MASK 0x0F -/** bit 0 in #VL53L0X_REG_SYSRANGE_START write 1 toggle state in +#define REG_SYSRANGE_START 0x000 +/** mask existing bit in #REG_SYSRANGE_START*/ +#define REG_SYSRANGE_MODE_MASK 0x0F +/** bit 0 in #REG_SYSRANGE_START write 1 toggle state in * continuous mode and arm next shot in single shot mode */ -#define VL53L0X_REG_SYSRANGE_MODE_START_STOP 0x01 -/** bit 1 write 0 in #VL53L0X_REG_SYSRANGE_START set single shot mode */ -#define VL53L0X_REG_SYSRANGE_MODE_SINGLESHOT 0x00 -/** bit 1 write 1 in #VL53L0X_REG_SYSRANGE_START set back-to-back +#define REG_SYSRANGE_MODE_START_STOP 0x01 +/** bit 1 write 0 in #REG_SYSRANGE_START set single shot mode */ +#define REG_SYSRANGE_MODE_SINGLESHOT 0x00 +/** bit 1 write 1 in #REG_SYSRANGE_START set back-to-back * operation mode */ -#define VL53L0X_REG_SYSRANGE_MODE_BACKTOBACK 0x02 -/** bit 2 write 1 in #VL53L0X_REG_SYSRANGE_START set timed operation +#define REG_SYSRANGE_MODE_BACKTOBACK 0x02 +/** bit 2 write 1 in #REG_SYSRANGE_START set timed operation * mode */ -#define VL53L0X_REG_SYSRANGE_MODE_TIMED 0x04 -/** bit 3 write 1 in #VL53L0X_REG_SYSRANGE_START set histogram operation +#define REG_SYSRANGE_MODE_TIMED 0x04 +/** bit 3 write 1 in #REG_SYSRANGE_START set histogram operation * mode */ -#define VL53L0X_REG_SYSRANGE_MODE_HISTOGRAM 0x08 +#define REG_SYSRANGE_MODE_HISTOGRAM 0x08 -#define VL53L0X_REG_SYSTEM_THRESH_HIGH 0x000C -#define VL53L0X_REG_SYSTEM_THRESH_LOW 0x000E - -#define VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG 0x0001 -#define VL53L0X_REG_SYSTEM_RANGE_CONFIG 0x0009 -#define VL53L0X_REG_SYSTEM_INTERMEASUREMENT_PERIOD 0x0004 +#define REG_SYSTEM_THRESH_HIGH 0x0C +#define REG_SYSTEM_THRESH_LOW 0x0E +#define REG_SYSTEM_SEQUENCE_CONFIG 0x01 +#define REG_SYSTEM_RANGE_CONFIG 0x09 +#define REG_SYSTEM_MEASURE_PERIOD 0x04 -#define VL53L0X_REG_SYSTEM_INTERRUPT_CONFIG_GPIO 0x000A -#define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_DISABLED 0x00 -#define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_LEVEL_LOW 0x01 -#define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_LEVEL_HIGH 0x02 -#define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_OUT_OF_WINDOW 0x03 -#define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_NEW_SAMPLE_READY 0x04 +#define REG_SYSINT_CONFIG_GPIO 0x0A +#define REG_SYSINT_GPIO_DISABLED 0x00 +#define REG_SYSINT_GPIO_LEVEL_LOW 0x01 +#define REG_SYSINT_GPIO_LEVEL_HIGH 0x02 +#define REG_SYSINT_GPIO_OUT_OF_WINDOW 0x03 +#define REG_SYSINT_GPIO_NEW_SAMPLE_READY 0x04 -#define VL53L0X_REG_GPIO_HV_MUX_ACTIVE_HIGH 0x0084 -#define VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR 0x000B +#define REG_GPIO_HV_MUX_ACTIVE_HIGH 0x84 +#define REG_SYSINT_CLEAR 0x0B /* Result registers */ -#define VL53L0X_REG_RESULT_INTERRUPT_STATUS 0x0013 -#define VL53L0X_REG_RESULT_RANGE_STATUS 0x0014 +#define REG_RESULT_INTERRUPT_STATUS 0x13 +#define REG_RESULT_RANGE_STATUS 0x14 -#define VL53L0X_REG_RESULT_CORE_PAGE 1 -#define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_RTN 0x00BC -#define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_RTN 0x00C0 -#define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_REF 0x00D0 -#define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_REF 0x00D4 -#define VL53L0X_REG_RESULT_PEAK_SIGNAL_RATE_REF 0x00B6 +#define REG_RESULT_CORE_PAGE 1 +#define REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_RTN 0xBC +#define REG_RESULT_CORE_RANGING_TOTAL_EVENTS_RTN 0xC0 +#define REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_REF 0xD0 +#define REG_RESULT_CORE_RANGING_TOTAL_EVENTS_REF 0xD4 +#define REG_RESULT_PEAK_SIG_RATE_REF 0xB6 /* Algo register */ -#define VL53L0X_REG_ALGO_PART_TO_PART_RANGE_OFFSET_MM 0x0028 -#define VL53L0X_REG_I2C_SLAVE_DEVICE_ADDRESS 0x008a +#define REG_ALGO_PART_TO_PART_RANGE_OFFSET_MM 0x28 +#define REG_I2C_SLAVE_DEVICE_ADDRESS 0x8a /* Check Limit registers */ -#define VL53L0X_REG_MSRC_CONFIG_CONTROL 0x0060 +#define REG_MSRC_CONFIG_CONTROL 0x60 -#define VL53L0X_REG_PRE_RANGE_CONFIG_MIN_SNR 0X0027 -#define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW 0x0056 -#define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH 0x0057 -#define VL53L0X_REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT 0x0064 +#define REG_PRE_RANGE_CONFIG_MIN_SNR 0X27 +#define REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW 0x56 +#define REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH 0x57 +#define REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT 0x64 -#define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_SNR 0X0067 -#define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW 0x0047 -#define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH 0x0048 -#define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT 0x0044 +#define REG_FINAL_RANGE_CONFIG_MIN_SNR 0X67 +#define REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW 0x47 +#define REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH 0x48 +#define REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT 0x44 -#define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_HI 0X0061 -#define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_LO 0X0062 +#define REG_PRE_RANGE_CONFIG_SIGMA_THRESH_HI 0x61 +#define REG_PRE_RANGE_CONFIG_SIGMA_THRESH_LO 0x62 /* PRE RANGE registers */ -#define VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD 0x0050 -#define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x0051 -#define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x0052 +#define REG_PRE_RANGE_CONFIG_VCSEL_PERIOD 0x50 +#define REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x51 +#define REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x52 -#define VL53L0X_REG_SYSTEM_HISTOGRAM_BIN 0x0081 -#define VL53L0X_REG_HISTOGRAM_CONFIG_INITIAL_PHASE_SELECT 0x0033 -#define VL53L0X_REG_HISTOGRAM_CONFIG_READOUT_CTRL 0x0055 +#define REG_SYSTEM_HISTOGRAM_BIN 0x81 +#define REG_HISTOGRAM_CONFIG_INITIAL_PHASE_SELECT 0x33 +#define REG_HISTOGRAM_CONFIG_READOUT_CTRL 0x55 -#define VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD 0x0070 -#define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x0071 -#define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x0072 -#define VL53L0X_REG_CROSSTALK_COMPENSATION_PEAK_RATE_MCPS 0x0020 +#define REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD 0x70 +#define REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x71 +#define REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x72 +#define REG_XTALK_COMPENS_RATE_MHz 0x20 -#define VL53L0X_REG_MSRC_CONFIG_TIMEOUT_MACROP 0x0046 +#define REG_MSRC_CONFIG_TIMEOUT_MACROP 0x46 -#define VL53L0X_REG_SOFT_RESET_GO2_SOFT_RESET_N 0x00bf -#define VL53L0X_REG_IDENTIFICATION_MODEL_ID 0x00c0 -#define VL53L0X_REG_IDENTIFICATION_REVISION_ID 0x00c2 +#define REG_SOFT_RESET_GO2_SOFT_RESET_N 0xbf +#define REG_IDENTIFICATION_MODEL_ID 0xc0 +#define REG_IDENTIFICATION_REVISION_ID 0xc2 -#define VL53L0X_REG_OSC_CALIBRATE_VAL 0x00f8 +#define REG_OSC_CALIBRATE_VAL 0xf8 -#define VL53L0X_SIGMA_ESTIMATE_MAX_VALUE 65535 +#define VL53L0X_SIGMA_ESTIMATE_MAX_VALUE 0xffff /* equivalent to a range sigma of 655.35mm */ -#define VL53L0X_REG_GLOBAL_CONFIG_VCSEL_WIDTH 0x032 -#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_0 0x0B0 -#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_1 0x0B1 -#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_2 0x0B2 -#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_3 0x0B3 -#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_4 0x0B4 -#define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_5 0x0B5 +#define REG_GLOBAL_CONFIG_VCSEL_WIDTH 0x32 +#define REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_0 0xB0 +#define REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_1 0xB1 +#define REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_2 0xB2 +#define REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_3 0xB3 +#define REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_4 0xB4 +#define REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_5 0xB5 -#define VL53L0X_REG_GLOBAL_CONFIG_REF_EN_START_SELECT 0xB6 -#define VL53L0X_REG_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD 0x4E /* 0x14E */ -#define VL53L0X_REG_DYNAMIC_SPAD_REF_EN_START_OFFSET 0x4F /* 0x14F */ -#define VL53L0X_REG_POWER_MANAGEMENT_GO1_POWER_FORCE 0x80 +#define REG_GLOBAL_CONFIG_REF_EN_START_SELECT 0xB6 +#define REG_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD 0x4E +#define REG_DYNAMIC_SPAD_REF_EN_START_OFFSET 0x4F +#define REG_POWER_MANAGEMENT_GO1_POWER_FORCE 0x80 /* Speed of light in um per 1E-10 Seconds */ #define VL53L0X_SPEED_OF_LIGHT_IN_AIR 2997 -#define VL53L0X_REG_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV 0x0089 +#define REG_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV 0x89 -#define VL53L0X_REG_ALGO_PHASECAL_LIM 0x0030 /* 0x130 */ -#define VL53L0X_REG_ALGO_PHASECAL_CONFIG_TIMEOUT 0x0030 +#define REG_ALGO_PHASECAL_LIM 0x30 +#define REG_ALGO_PHASECAL_CONFIG_TIMEOUT 0x30 /** @} VL53L0X_DefineRegisters_group */ @@ -328,17 +350,19 @@ /*!< Product revision major */ uint8_t ProductRevisionMinor; /*!< Product revision minor */ -} VL53L0X_DeviceInfo_t; +} TVL53L0X_DeviceInfo; +typedef TVL53L0X_DeviceInfo* PVL53L0X_DeviceInfo; + /** @defgroup VL53L0X_define_Error_group Error and Warning code returned by API - * The following DEFINE are used to identify the PAL ERROR + * The following DEFINE are used to identify the Device ERROR * @{ */ typedef int8_t VL53L0X_Error; -#define VL53L0X_ERROR_NONE ((VL53L0X_Error) 0) +#define VL53L0X_OK ((VL53L0X_Error) 0) #define VL53L0X_ERROR_CALIBRATION_WARNING ((VL53L0X_Error) -1) /*!< Warning invalid calibration data may be in used \a VL53L0X_InitData() @@ -346,10 +370,9 @@ \a VL53L0X_SetOffsetCalibrationData */ #define VL53L0X_ERROR_MIN_CLIPPED ((VL53L0X_Error) -2) /*!< Warning parameter passed was clipped to min before to be applied */ - #define VL53L0X_ERROR_UNDEFINED ((VL53L0X_Error) -3) /*!< Unqualified error */ -#define VL53L0X_ERROR_INVALID_PARAMS ((VL53L0X_Error) -4) +#define VL53L0X_ERROR_INVALID_PARAMS ((VL53L0X_Error) -4) /*!< Parameter passed is invalid or out of range */ #define VL53L0X_ERROR_NOT_SUPPORTED ((VL53L0X_Error) -5) /*!< Function is not supported in current mode or configuration */ @@ -357,26 +380,27 @@ /*!< Device report a ranging error interrupt status */ #define VL53L0X_ERROR_TIME_OUT ((VL53L0X_Error) -7) /*!< Aborted due to time out */ -#define VL53L0X_ERROR_MODE_NOT_SUPPORTED ((VL53L0X_Error) -8) +#define VL53L0X_ERROR_MODE_NOT_SUPPORTED ((VL53L0X_Error) -8) /*!< Asked mode is not supported by the device */ -#define VL53L0X_ERROR_BUFFER_TOO_SMALL ((VL53L0X_Error) -9) +#define VL53L0X_ERROR_BUFFER_TOO_SMALL ((VL53L0X_Error) -9) /*!< ... */ -#define VL53L0X_ERROR_GPIO_NOT_EXISTING ((VL53L0X_Error) -10) +#define VL53L0X_ERROR_GPIO_NOT_EXISTING ((VL53L0X_Error) -10) /*!< User tried to setup a non-existing GPIO pin */ -#define VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED ((VL53L0X_Error) -11) +#define VL53L0X_ERROR_GPIO_FUNC_NOT_SUPPORTED ((VL53L0X_Error) -11) /*!< unsupported GPIO functionality */ -#define VL53L0X_ERROR_INTERRUPT_NOT_CLEARED ((VL53L0X_Error) -12) +#define VL53L0X_ERROR_INTERRUPT_NOT_CLEARED ((VL53L0X_Error) -12) /*!< Error during interrupt clear */ -#define VL53L0X_ERROR_CONTROL_INTERFACE ((VL53L0X_Error) -20) +#define VL53L0X_ERROR_CONTROL_INTERFACE ((VL53L0X_Error) -20) +#define VL53L0X_ERROR_I2C_BUF_OVERFLOW ((VL53L0X_Error) -22) +#define VL53L0X_ERROR_I2C_WRONG_DEV_ID ((VL53L0X_Error) -23) /*!< error reported from IO functions */ -#define VL53L0X_ERROR_INVALID_COMMAND ((VL53L0X_Error) -30) -/*!< The command is not allowed in the current device state - * (power down) */ -#define VL53L0X_ERROR_DIVISION_BY_ZERO ((VL53L0X_Error) -40) +#define VL53L0X_ERROR_INVALID_COMMAND ((VL53L0X_Error) -30) +/*!< The command is not allowed in the current device state (power down) */ +#define VL53L0X_ERROR_DIVISION_BY_ZERO ((VL53L0X_Error) -40) /*!< In the function a division by zero occurs */ #define VL53L0X_ERROR_REF_SPAD_INIT ((VL53L0X_Error) -50) /*!< Error during reference SPAD initialization */ -#define VL53L0X_ERROR_NOT_IMPLEMENTED ((VL53L0X_Error) -99) +#define VL53L0X_ERROR_NOT_IMPLEMENTED ((VL53L0X_Error) -99) /*!< Tells requested functionality has not been implemented yet or * not compatible with the device */ /** @} VL53L0X_define_Error_group */ @@ -442,32 +466,31 @@ VL53L0X_HistogramModes HistogramMode; /*!< Defines type of histogram measurement to be done for the next * measure */ - uint32_t MeasurementTimingBudget_us; + uint32_t Measure_Time_Budget_us; // was MeasurementTimingBudget_us /*!< Defines the allowed total time for a single measurement */ - uint32_t InterMeasurementPeriod_ms; + uint32_t Measure_Period_ms; /*!< Defines time between two consecutive measurements (between two * measurement starts). If set to 0 means back-to-back mode */ - uint8_t XTalkCompensationEnable; + uint8_t XTalk_Compens_En; /*!< Tells if Crosstalk compensation shall be enable or not */ uint16_t XTalkCompensationRangeMilliMeter; /*!< CrossTalk compensation range in millimeter */ - FixPoint1616_t XTalkCompensationRateMegaCps; + TFP1616 Xtalk_CompRate_MHz; /*!< CrossTalk compensation rate in Mega counts per seconds. * Expressed in 16.16 fixed point format. */ - int32_t RangeOffsetMicroMeters; - /*!< Range offset adjustment (mm). */ + int32_t Offset_Cal_um; + /*!< Range offset adjustment (um) last programmed. */ - uint8_t LimitChecksEnable[VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS]; + uint8_t Limit_Chk_En[VL53L0X_CHECKEN_NUMBER_OF_CHECKS]; /*!< This Array store all the Limit Check enable for this device. */ - uint8_t LimitChecksStatus[VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS]; + uint8_t LimitChecksStatus[VL53L0X_CHECKEN_NUMBER_OF_CHECKS]; /*!< This Array store all the Status of the check linked to last * measurement. */ - FixPoint1616_t LimitChecksValue[VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS]; + TFP1616 Limit_Chk_Val[VL53L0X_CHECKEN_NUMBER_OF_CHECKS]; /*!< This Array store all the Limit Check value for this device */ - - uint8_t WrapAroundCheckEnable; + uint8_t Wrap_Around_Chk_En; /*!< Tells if Wrap Around Check shall be enable or not */ -} VL53L0X_DeviceParameters_t; +} VL53L0X_DeviceParams_t; /** @defgroup VL53L0X_define_State_group Defines the current status of the device @@ -476,19 +499,19 @@ */ typedef uint8_t VL53L0X_State; -#define VL53L0X_STATE_POWERDOWN ((VL53L0X_State) 0) +#define VL53L0X_STATE_POWERDOWN ((VL53L0X_State) 0) /*!< Device is in HW reset */ #define VL53L0X_STATE_WAIT_STATICINIT ((VL53L0X_State) 1) /*!< Device is initialized and wait for static initialization */ -#define VL53L0X_STATE_STANDBY ((VL53L0X_State) 2) +#define VL53L0X_STATE_STANDBY ((VL53L0X_State) 2) /*!< Device is in Low power Standby mode */ -#define VL53L0X_STATE_IDLE ((VL53L0X_State) 3) +#define VL53L0X_STATE_IDLE ((VL53L0X_State) 3) /*!< Device has been initialized and ready to do measurements */ -#define VL53L0X_STATE_RUNNING ((VL53L0X_State) 4) +#define VL53L0X_STATE_RUNNING ((VL53L0X_State) 4) /*!< Device is performing measurement */ -#define VL53L0X_STATE_UNKNOWN ((VL53L0X_State) 98) +#define VL53L0X_STATE_UNKNOWN ((VL53L0X_State) 98) /*!< Device is in unknown state and need to be rebooted */ -#define VL53L0X_STATE_ERROR ((VL53L0X_State) 99) +#define VL53L0X_STATE_ERROR ((VL53L0X_State) 99) /*!< Device is in error state and need to be rebooted */ /** @} VL53L0X_define_State_group */ @@ -518,16 +541,16 @@ * in current setup and environment conditions (Filled when * applicable) */ - FixPoint1616_t SignalRateRtnMegaCps; - /*!< Return signal rate (MCPS)\n these is a 16.16 fix point + TFP1616 SignalRateRtnMHz; + /*!< Return signal rate (MHz)\n these is a 16.16 fix point * value, which is effectively a measure of target * reflectance.*/ - FixPoint1616_t AmbientRateRtnMegaCps; - /*!< Return ambient rate (MCPS)\n these is a 16.16 fix point + TFP1616 AmbientRateRtnMHz; + /*!< Return ambient rate (MHz)\n these is a 16.16 fix point * value, which is effectively a measure of the ambien * t light.*/ - uint16_t EffectiveSpadRtnCount; + uint16_t EffectiveSPADRtnCount; /*!< Return the effective SPAD count for the return signal. * To obtain Real value it should be divided by 256 */ @@ -541,7 +564,7 @@ /*!< Range Status for the current measurement. This is device * dependent. Value = 0 means value is valid. * See \ref RangeStatusPage */ -} VL53L0X_RangingMeasurementData_t; +} TRangeResults; // was VL53L0X_RangingMeasurementData_t #define VL53L0X_HISTOGRAM_BUFFER_SIZE 24 @@ -558,63 +581,59 @@ uint8_t FirstBin; /*!< First Bin value */ uint8_t BufferSize; /*!< Buffer Size - Set by the user.*/ uint8_t NumberOfBins;/*!< Number of bins filled by the histogram measurement */ - VL53L0X_DeviceError ErrorStatus; + TDevError ErrorStatus; /*!< Error status of the current measurement. \n - see @a ::VL53L0X_DeviceError @a VL53L0X_GetStatusErrorString() */ + see @a ::TDevError @a VL53L0X_GetStatusErrorString() */ } VL53L0X_HistogramMeasurementData_t; -#define VL53L0X_REF_SPAD_BUFFER_SIZE 6 +#define REF_SPAD_BUFFER_SIZE 6 + +#define VL53L0X_PLL_PERIOD_PS = 1655; +#define VL53L0X_MACRO_PERIOD_VCLKS = 2304; /** - * @struct VL53L0X_SpadData_t - * @brief Spad Configuration Data. + * @struct VL53L0X_SPADData_t + * @brief SPAD Configuration Data. */ typedef struct { - uint8_t RefSpadEnables[VL53L0X_REF_SPAD_BUFFER_SIZE]; - /*!< Reference Spad Enables */ - uint8_t RefGoodSpadMap[VL53L0X_REF_SPAD_BUFFER_SIZE]; - /*!< Reference Spad Good Spad Map */ -} VL53L0X_SpadData_t; + uint8_t RefSPADEnables[REF_SPAD_BUFFER_SIZE]; + /*!< Reference SPAD Enables */ + uint8_t RefGoodSPADMap[REF_SPAD_BUFFER_SIZE]; + /*!< Reference SPAD Good SPAD Map */ +} VL53L0X_SPADData_t; typedef struct { - FixPoint1616_t OscFrequencyMHz; /* Frequency used */ - + TFP1616 OscFrequencyMHz; + /* Frequency used */ uint16_t LastEncodedTimeout; /* last encoded Time out used for timing budget*/ - VL53L0X_GpioFunctionality Pin0GpioFunctionality; + TGPIO_Func GpioFunctionality; /* store the functionality of the GPIO: pin0 */ - uint32_t FinalRangeTimeoutMicroSecs; /*!< Execution time of the final range*/ - uint8_t FinalRangeVcselPulsePeriod; + uint8_t FinalRangeVcselPPeriod; /*!< Vcsel pulse period (pll clocks) for the final range measurement*/ uint32_t PreRangeTimeoutMicroSecs; /*!< Execution time of the final range*/ - uint8_t PreRangeVcselPulsePeriod; + uint8_t PreRangeVcselPPeriod; /*!< Vcsel pulse period (pll clocks) for the pre-range measurement*/ - uint16_t SigmaEstRefArray; /*!< Reference array sigma value in 1/100th of [mm] e.g. 100 = 1mm */ uint16_t SigmaEstEffPulseWidth; /*!< Effective Pulse width for sigma estimate in 1/100th of ns e.g. 900 = 9.0ns */ uint16_t SigmaEstEffAmbWidth; - /*!< Effective Ambient width for sigma estimate in 1/100th of ns - * e.g. 500 = 5.0ns */ - + /*!< Effective Ambient width for sigma estimate in 1/100th of ns e.g. 500 = 5.0ns */ uint8_t ReadDataFromDeviceDone; /* Indicate if read from device has been done (==1) or not (==0) */ uint8_t ModuleId; /* Module ID */ uint8_t Revision; /* test Revision */ - char ProductId[VL53L0X_MAX_STRING_LENGTH]; - /* Product Identifier String */ - uint8_t ReferenceSpadCount; /* used for ref spad management */ - uint8_t ReferenceSpadType; /* used for ref spad management */ - uint8_t RefSpadsInitialised; /* reports if ref spads are initialised. */ + char ProductId[VL53L0X_MAX_STRING_LENGTH]; /* Product Identifier String */ + uint8_t ReferenceSPADCount; /* used for ref SPAD management */ + uint8_t ReferenceSPADType; /* used for ref SPAD management */ + uint8_t RefSPADSInitialised; /* reports if ref SPADS are initialised. */ uint32_t PartUIDUpper; /*!< Unique Part ID Upper */ uint32_t PartUIDLower; /*!< Unique Part ID Lower */ - FixPoint1616_t SignalRateMeasFixed400mm; /*!< Peek Signal rate - at 400 mm*/ - + TFP1616 SignalRateMeasFixed400mm; /*!< Peek Signal rate at 400 mm*/ } VL53L0X_DeviceSpecificParameters_t; /** @defgroup VL53L0X_define_InterruptPolarity_group Defines the Polarity @@ -623,7 +642,6 @@ * @{ */ typedef uint8_t VL53L0X_InterruptPolarity; - #define VL53L0X_INTERRUPTPOLARITY_LOW ((VL53L0X_InterruptPolarity) 0) /*!< Set active low polarity best setup for falling edge. */ #define VL53L0X_INTERRUPTPOLARITY_HIGH ((VL53L0X_InterruptPolarity) 1) @@ -633,15 +651,15 @@ /** @defgroup VL53L0X_define_VcselPeriod_group Vcsel Period Defines - * Defines the range measurement for which to access the vcsel period. + * Defines the range measurement for which to access the vcsel Phase. * @{ */ -typedef uint8_t VL53L0X_VcselPeriod; +typedef uint8_t VL53L0X_Range_Phase; -#define VL53L0X_VCSEL_PERIOD_PRE_RANGE ((VL53L0X_VcselPeriod) 0) -/*!<Identifies the pre-range vcsel period. */ -#define VL53L0X_VCSEL_PERIOD_FINAL_RANGE ((VL53L0X_VcselPeriod) 1) -/*!<Identifies the final range vcsel period. */ +#define VL53L0X_VCSEL_PRE_RANGE ((VL53L0X_Range_Phase) 0) +/*!<Identifies the pre-range vcsel Phase. */ +#define VL53L0X_VCSEL_FINAL_RANGE ((VL53L0X_Range_Phase) 1) +/*!<Identifies the final range vcsel Phase . */ /** @} VL53L0X_define_VcselPeriod_group */ @@ -657,7 +675,7 @@ uint8_t DssOn; /*!<Reports if DSS On */ uint8_t PreRangeOn; /*!<Reports if Pre-Range On */ uint8_t FinalRangeOn; /*!<Reports if Final-Range On */ -} VL53L0X_SchedulerSequenceSteps_t; +} VL53L0X_Sequence_Steps_t; /** @} VL53L0X_define_SchedulerSequence_group */ @@ -668,15 +686,15 @@ */ typedef uint8_t VL53L0X_SequenceStepId; -#define VL53L0X_SEQUENCESTEP_TCC ((VL53L0X_VcselPeriod) 0) +#define VL53L0X_SEQUENCESTEP_TCC ((VL53L0X_SequenceStepId) 0) /*!<Target CentreCheck identifier. */ -#define VL53L0X_SEQUENCESTEP_DSS ((VL53L0X_VcselPeriod) 1) -/*!<Dynamic Spad Selection function Identifier. */ -#define VL53L0X_SEQUENCESTEP_MSRC ((VL53L0X_VcselPeriod) 2) +#define VL53L0X_SEQUENCESTEP_DSS ((VL53L0X_SequenceStepId) 1) +/*!<Dynamic SPAD Selection function Identifier. */ +#define VL53L0X_SEQUENCESTEP_MSRC ((VL53L0X_SequenceStepId) 2) /*!<Minimum Signal Rate Check function Identifier. */ -#define VL53L0X_SEQUENCESTEP_PRE_RANGE ((VL53L0X_VcselPeriod) 3) +#define VL53L0X_SEQUENCESTEP_PRE_RANGE ((VL53L0X_SequenceStepId) 3) /*!<Pre-Range check Identifier. */ -#define VL53L0X_SEQUENCESTEP_FINAL_RANGE ((VL53L0X_VcselPeriod) 4) +#define VL53L0X_SEQUENCESTEP_FINAL_RANGE ((VL53L0X_SequenceStepId) 4) /*!<Final Range Check Identifier. */ #define VL53L0X_SEQUENCESTEP_NUMBER_OF_CHECKS 5 @@ -691,26 +709,26 @@ */ /* Defines */ -#define VL53L0X_FIXPOINT1616TOFIXPOINT97(Value) (uint16_t)((Value>>9)&0xFFFF) -#define VL53L0X_FIXPOINT97TOFIXPOINT1616(Value) (FixPoint1616_t)(Value<<9) +#define FP1616_TO_FP97(Value) (uint16_t)((Value>>9)&0xFFFF) +#define FP97_TO_FP1616(Value) (TFP1616)(Value<<9) -#define VL53L0X_FIXPOINT1616TOFIXPOINT88(Value) (uint16_t)((Value>>8)&0xFFFF) -#define VL53L0X_FIXPOINT88TOFIXPOINT1616(Value) (FixPoint1616_t)(Value<<8) +#define FP1616_TO_FP88(Value) (uint16_t)((Value>>8)&0xFFFF) +#define FP88_TO_FP1616(Value) (TFP1616)(Value<<8) -#define VL53L0X_FIXPOINT1616TOFIXPOINT412(Value) (uint16_t)((Value>>4)&0xFFFF) -#define VL53L0X_FIXPOINT412TOFIXPOINT1616(Value) (FixPoint1616_t)(Value<<4) +#define FP1616_TO_FP412(Value) (uint16_t)((Value>>4)&0xFFFF) +#define FP412_TO_FP1616(Value) (TFP1616)(Value<<4) -#define VL53L0X_FIXPOINT1616TOFIXPOINT313(Value) (uint16_t)((Value>>3)&0xFFFF) -#define VL53L0X_FIXPOINT313TOFIXPOINT1616(Value) (FixPoint1616_t)(Value<<3) +#define FP1616_TO_FP313(Value) (uint16_t)((Value>>3)&0xFFFF) +#define FP313_TO_FP1616(Value) (TFP1616)(Value<<3) -#define VL53L0X_FIXPOINT1616TOFIXPOINT08(Value) (uint8_t)((Value>>8)&0x00FF) -#define VL53L0X_FIXPOINT08TOFIXPOINT1616(Value) (FixPoint1616_t)(Value<<8) +#define FP1616_TO_FP08(Value) (uint8_t)((Value>>8)&0x00FF) +#define FP08_TO_FP1616(Value) (TFP1616)(Value<<8) -#define VL53L0X_FIXPOINT1616TOFIXPOINT53(Value) (uint8_t)((Value>>13)&0x00FF) -#define VL53L0X_FIXPOINT53TOFIXPOINT1616(Value) (FixPoint1616_t)(Value<<13) +#define FP1616_TO_FP53(Value) (uint8_t)((Value>>13)&0x00FF) +#define FP53_TO_FP1616(Value) (TFP1616)(Value<<13) -#define VL53L0X_FIXPOINT1616TOFIXPOINT102(Value) (uint16_t)((Value>>14)&0x0FFF) -#define VL53L0X_FIXPOINT102TOFIXPOINT1616(Value) (FixPoint1616_t)(Value<<12) +#define FP1616_TO_FP102(Value) (uint16_t)((Value>>14)&0x0FFF) +#define FP102_TO_FP1616(Value) (TFP1616)(Value<<12) #define VL53L0X_MAKEUINT16(lsb, msb) (uint16_t)((((uint16_t)msb)<<8) + (uint16_t)lsb)