37 #ifndef _VL53L0X_DEF_H_
38 #define _VL53L0X_DEF_H_
52 #define VL53L0X10_SPECIFICATION_VER_MAJOR 1
54 #define VL53L0X10_SPECIFICATION_VER_MINOR 2
56 #define VL53L0X10_SPECIFICATION_VER_SUB 7
58 #define VL53L0X10_SPECIFICATION_VER_REVISION 1440
61 #define VL53L0X10_IMPLEMENTATION_VER_MAJOR 1
63 #define VL53L0X10_IMPLEMENTATION_VER_MINOR 0
65 #define VL53L0X10_IMPLEMENTATION_VER_SUB 9
67 #define VL53L0X10_IMPLEMENTATION_VER_REVISION 3673
70 #define VL53L0X_SPECIFICATION_VER_MAJOR 1
72 #define VL53L0X_SPECIFICATION_VER_MINOR 2
74 #define VL53L0X_SPECIFICATION_VER_SUB 7
76 #define VL53L0X_SPECIFICATION_VER_REVISION 1440
79 #define VL53L0X_IMPLEMENTATION_VER_MAJOR 1
81 #define VL53L0X_IMPLEMENTATION_VER_MINOR 0
83 #define VL53L0X_IMPLEMENTATION_VER_SUB 1
85 #define VL53L0X_IMPLEMENTATION_VER_REVISION 4606
86 #define VL53L0X_DEFAULT_MAX_LOOP 200
87 #define VL53L0X_MAX_STRING_LENGTH 32
90 #include "vl53l0x_device.h"
91 #include "vl53l0x_types.h"
111 char Name[VL53L0X_MAX_STRING_LENGTH];
113 char Type[VL53L0X_MAX_STRING_LENGTH];
115 char ProductId[VL53L0X_MAX_STRING_LENGTH];
131 typedef int8_t VL53L0X_Error;
133 #define VL53L0X_ERROR_NONE ((VL53L0X_Error) 0)
134 #define VL53L0X_ERROR_CALIBRATION_WARNING ((VL53L0X_Error) -1)
139 #define VL53L0X_ERROR_MIN_CLIPPED ((VL53L0X_Error) -2)
142 #define VL53L0X_ERROR_UNDEFINED ((VL53L0X_Error) -3)
144 #define VL53L0X_ERROR_INVALID_PARAMS ((VL53L0X_Error) -4)
146 #define VL53L0X_ERROR_NOT_SUPPORTED ((VL53L0X_Error) -5)
148 #define VL53L0X_ERROR_RANGE_ERROR ((VL53L0X_Error) -6)
150 #define VL53L0X_ERROR_TIME_OUT ((VL53L0X_Error) -7)
152 #define VL53L0X_ERROR_MODE_NOT_SUPPORTED ((VL53L0X_Error) -8)
154 #define VL53L0X_ERROR_BUFFER_TOO_SMALL ((VL53L0X_Error) -9)
156 #define VL53L0X_ERROR_GPIO_NOT_EXISTING ((VL53L0X_Error) -10)
158 #define VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED ((VL53L0X_Error) -11)
160 #define VL53L0X_ERROR_INTERRUPT_NOT_CLEARED ((VL53L0X_Error) -12)
162 #define VL53L0X_ERROR_CONTROL_INTERFACE ((VL53L0X_Error) -20)
164 #define VL53L0X_ERROR_INVALID_COMMAND ((VL53L0X_Error) -30)
167 #define VL53L0X_ERROR_DIVISION_BY_ZERO ((VL53L0X_Error) -40)
169 #define VL53L0X_ERROR_REF_SPAD_INIT ((VL53L0X_Error) -50)
171 #define VL53L0X_ERROR_NOT_IMPLEMENTED ((VL53L0X_Error) -99)
181 typedef uint8_t VL53L0X_DeviceModes;
183 #define VL53L0X_DEVICEMODE_SINGLE_RANGING ((VL53L0X_DeviceModes) 0)
184 #define VL53L0X_DEVICEMODE_CONTINUOUS_RANGING ((VL53L0X_DeviceModes) 1)
185 #define VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM ((VL53L0X_DeviceModes) 2)
186 #define VL53L0X_DEVICEMODE_CONTINUOUS_TIMED_RANGING ((VL53L0X_DeviceModes) 3)
187 #define VL53L0X_DEVICEMODE_SINGLE_ALS ((VL53L0X_DeviceModes) 10)
188 #define VL53L0X_DEVICEMODE_GPIO_DRIVE ((VL53L0X_DeviceModes) 20)
189 #define VL53L0X_DEVICEMODE_GPIO_OSC ((VL53L0X_DeviceModes) 21)
199 typedef uint8_t VL53L0X_HistogramModes;
201 #define VL53L0X_HISTOGRAMMODE_DISABLED ((VL53L0X_HistogramModes) 0)
203 #define VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY ((VL53L0X_HistogramModes) 1)
205 #define VL53L0X_HISTOGRAMMODE_RETURN_ONLY ((VL53L0X_HistogramModes) 2)
207 #define VL53L0X_HISTOGRAMMODE_BOTH ((VL53L0X_HistogramModes) 3)
218 typedef uint8_t VL53L0X_PowerModes;
220 #define VL53L0X_POWERMODE_STANDBY_LEVEL1 ((VL53L0X_PowerModes) 0)
222 #define VL53L0X_POWERMODE_STANDBY_LEVEL2 ((VL53L0X_PowerModes) 1)
224 #define VL53L0X_POWERMODE_IDLE_LEVEL1 ((VL53L0X_PowerModes) 2)
226 #define VL53L0X_POWERMODE_IDLE_LEVEL2 ((VL53L0X_PowerModes) 3)
255 uint8_t LimitChecksEnable[VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS];
257 uint8_t LimitChecksStatus[VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS];
260 FixPoint1616_t LimitChecksValue[VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS];
273 typedef uint8_t VL53L0X_State;
275 #define VL53L0X_STATE_POWERDOWN ((VL53L0X_State) 0)
277 #define VL53L0X_STATE_WAIT_STATICINIT ((VL53L0X_State) 1)
279 #define VL53L0X_STATE_STANDBY ((VL53L0X_State) 2)
281 #define VL53L0X_STATE_IDLE ((VL53L0X_State) 3)
283 #define VL53L0X_STATE_RUNNING ((VL53L0X_State) 4)
285 #define VL53L0X_STATE_UNKNOWN ((VL53L0X_State) 98)
287 #define VL53L0X_STATE_ERROR ((VL53L0X_State) 99)
346 #define VL53L0X_HISTOGRAM_BUFFER_SIZE 24
354 uint32_t HistogramData[VL53L0X_HISTOGRAM_BUFFER_SIZE];
368 #define VL53L0X_REF_SPAD_BUFFER_SIZE 6
375 uint8_t RefSpadEnables[VL53L0X_REF_SPAD_BUFFER_SIZE];
377 uint8_t RefGoodSpadMap[VL53L0X_REF_SPAD_BUFFER_SIZE];
382 FixPoint1616_t OscFrequencyMHz;
384 uint16_t LastEncodedTimeout;
387 VL53L0X_GpioFunctionality Pin0GpioFunctionality;
409 uint8_t ReadDataFromDeviceDone;
413 char ProductId[VL53L0X_MAX_STRING_LENGTH];
415 uint8_t ReferenceSpadCount;
416 uint8_t ReferenceSpadType;
417 uint8_t RefSpadsInitialised;
496 typedef uint8_t VL53L0X_InterruptPolarity;
498 #define VL53L0X_INTERRUPTPOLARITY_LOW ((VL53L0X_InterruptPolarity) 0)
500 #define VL53L0X_INTERRUPTPOLARITY_HIGH ((VL53L0X_InterruptPolarity) 1)
510 typedef uint8_t VL53L0X_VcselPeriod;
512 #define VL53L0X_VCSEL_PERIOD_PRE_RANGE ((VL53L0X_VcselPeriod) 0)
514 #define VL53L0X_VCSEL_PERIOD_FINAL_RANGE ((VL53L0X_VcselPeriod) 1)
540 typedef uint8_t VL53L0X_SequenceStepId;
542 #define VL53L0X_SEQUENCESTEP_TCC ((VL53L0X_VcselPeriod) 0)
544 #define VL53L0X_SEQUENCESTEP_DSS ((VL53L0X_VcselPeriod) 1)
546 #define VL53L0X_SEQUENCESTEP_MSRC ((VL53L0X_VcselPeriod) 2)
548 #define VL53L0X_SEQUENCESTEP_PRE_RANGE ((VL53L0X_VcselPeriod) 3)
550 #define VL53L0X_SEQUENCESTEP_FINAL_RANGE ((VL53L0X_VcselPeriod) 4)
553 #define VL53L0X_SEQUENCESTEP_NUMBER_OF_CHECKS 5
566 #define VL53L0X_SETPARAMETERFIELD(Dev, field, value) \
567 PALDevDataSet(Dev, CurrentParameters.field, value)
569 #define VL53L0X_GETPARAMETERFIELD(Dev, field, variable) \
570 variable = PALDevDataGet(Dev, CurrentParameters).field
573 #define VL53L0X_SETARRAYPARAMETERFIELD(Dev, field, index, value) \
574 PALDevDataSet(Dev, CurrentParameters.field[index], value)
576 #define VL53L0X_GETARRAYPARAMETERFIELD(Dev, field, index, variable) \
577 variable = PALDevDataGet(Dev, CurrentParameters).field[index]
580 #define VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, field, value) \
581 PALDevDataSet(Dev, DeviceSpecificParameters.field, value)
583 #define VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, field) \
584 PALDevDataGet(Dev, DeviceSpecificParameters).field
587 #define VL53L0X_FIXPOINT1616TOFIXPOINT97(Value) \
588 (uint16_t)((Value>>9)&0xFFFF)
589 #define VL53L0X_FIXPOINT97TOFIXPOINT1616(Value) \
590 (FixPoint1616_t)(Value<<9)
592 #define VL53L0X_FIXPOINT1616TOFIXPOINT88(Value) \
593 (uint16_t)((Value>>8)&0xFFFF)
594 #define VL53L0X_FIXPOINT88TOFIXPOINT1616(Value) \
595 (FixPoint1616_t)(Value<<8)
597 #define VL53L0X_FIXPOINT1616TOFIXPOINT412(Value) \
598 (uint16_t)((Value>>4)&0xFFFF)
599 #define VL53L0X_FIXPOINT412TOFIXPOINT1616(Value) \
600 (FixPoint1616_t)(Value<<4)
602 #define VL53L0X_FIXPOINT1616TOFIXPOINT313(Value) \
603 (uint16_t)((Value>>3)&0xFFFF)
604 #define VL53L0X_FIXPOINT313TOFIXPOINT1616(Value) \
605 (FixPoint1616_t)(Value<<3)
607 #define VL53L0X_FIXPOINT1616TOFIXPOINT08(Value) \
608 (uint8_t)((Value>>8)&0x00FF)
609 #define VL53L0X_FIXPOINT08TOFIXPOINT1616(Value) \
610 (FixPoint1616_t)(Value<<8)
612 #define VL53L0X_FIXPOINT1616TOFIXPOINT53(Value) \
613 (uint8_t)((Value>>13)&0x00FF)
614 #define VL53L0X_FIXPOINT53TOFIXPOINT1616(Value) \
615 (FixPoint1616_t)(Value<<13)
617 #define VL53L0X_FIXPOINT1616TOFIXPOINT102(Value) \
618 (uint16_t)((Value>>14)&0x0FFF)
619 #define VL53L0X_FIXPOINT102TOFIXPOINT1616(Value) \
620 (FixPoint1616_t)(Value<<12)
622 #define VL53L0X_MAKEUINT16(lsb, msb) (uint16_t)((((uint16_t)msb)<<8) + \
Structure containing the Dmax computation parameters and data.
Definition: vl53l0x_def.h:295
int32_t AmbTuningWindowFactor_K
Definition: vl53l0x_def.h:296
int32_t RetSignalAt0mm
Definition: vl53l0x_def.h:298
VL53L0X PAL device ST private data structure End user should never access any of these field directl...
Definition: vl53l0x_def.h:433
int32_t Part2PartOffsetAdjustmentNVMMicroMeter
Definition: vl53l0x_def.h:438
VL53L0X_DeviceSpecificParameters_t DeviceSpecificParameters
Definition: vl53l0x_def.h:446
uint16_t DmaxCalRangeMilliMeter
Definition: vl53l0x_def.h:483
VL53L0X_DMaxData_t DMaxData
Definition: vl53l0x_def.h:434
VL53L0X_State PalState
Definition: vl53l0x_def.h:454
FixPoint1616_t LastSignalRefMcps
Definition: vl53l0x_def.h:475
FixPoint1616_t DmaxCalSignalRateRtnMegaCps
Definition: vl53l0x_def.h:485
VL53L0X_SpadData_t SpadData
Definition: vl53l0x_def.h:448
FixPoint1616_t SigmaEstimate
Definition: vl53l0x_def.h:470
VL53L0X_DeviceParameters_t CurrentParameters
Definition: vl53l0x_def.h:440
uint16_t SigmaEstRefArray
Definition: vl53l0x_def.h:458
VL53L0X_HistogramMeasurementData_t LastHistogramMeasure
Definition: vl53l0x_def.h:444
uint8_t StopVariable
Definition: vl53l0x_def.h:466
int32_t Part2PartOffsetNVMMicroMeter
Definition: vl53l0x_def.h:436
VL53L0X_RangingMeasurementData_t LastRangeMeasure
Definition: vl53l0x_def.h:442
uint16_t SigmaEstEffPulseWidth
Definition: vl53l0x_def.h:460
uint8_t SequenceConfig
Definition: vl53l0x_def.h:450
uint16_t LinearityCorrectiveGain
Definition: vl53l0x_def.h:481
uint16_t SigmaEstEffAmbWidth
Definition: vl53l0x_def.h:463
VL53L0X_PowerModes PowerMode
Definition: vl53l0x_def.h:456
uint8_t RangeFractionalEnable
Definition: vl53l0x_def.h:452
uint8_t * pTuningSettingsPointer
Definition: vl53l0x_def.h:477
uint16_t targetRefRate
Definition: vl53l0x_def.h:468
FixPoint1616_t SignalEstimate
Definition: vl53l0x_def.h:473
uint8_t UseInternalTuningSettings
Definition: vl53l0x_def.h:479
Defines the parameters of the Get Device Info Functions.
Definition: vl53l0x_def.h:110
uint8_t ProductRevisionMinor
Definition: vl53l0x_def.h:121
uint8_t ProductRevisionMajor
Definition: vl53l0x_def.h:119
uint8_t ProductType
Definition: vl53l0x_def.h:117
Defines all parameters for the device.
Definition: vl53l0x_def.h:234
VL53L0X_DeviceModes DeviceMode
Definition: vl53l0x_def.h:235
int32_t RangeOffsetMicroMeters
Definition: vl53l0x_def.h:252
uint8_t XTalkCompensationEnable
Definition: vl53l0x_def.h:245
uint32_t InterMeasurementPeriodMilliSeconds
Definition: vl53l0x_def.h:242
uint32_t MeasurementTimingBudgetMicroSeconds
Definition: vl53l0x_def.h:240
FixPoint1616_t XTalkCompensationRateMegaCps
Definition: vl53l0x_def.h:249
VL53L0X_HistogramModes HistogramMode
Definition: vl53l0x_def.h:237
uint8_t WrapAroundCheckEnable
Definition: vl53l0x_def.h:263
uint16_t XTalkCompensationRangeMilliMeter
Definition: vl53l0x_def.h:247
Definition: vl53l0x_def.h:381
uint16_t SigmaEstEffPulseWidth
Definition: vl53l0x_def.h:401
uint32_t FinalRangeTimeoutMicroSecs
Definition: vl53l0x_def.h:390
uint32_t PartUIDLower
Definition: vl53l0x_def.h:419
uint16_t SigmaEstRefArray
Definition: vl53l0x_def.h:399
uint8_t FinalRangeVcselPulsePeriod
Definition: vl53l0x_def.h:392
FixPoint1616_t SignalRateMeasFixed400mm
Definition: vl53l0x_def.h:420
uint16_t SigmaEstEffAmbWidth
Definition: vl53l0x_def.h:404
uint32_t PartUIDUpper
Definition: vl53l0x_def.h:418
uint8_t PreRangeVcselPulsePeriod
Definition: vl53l0x_def.h:396
uint32_t PreRangeTimeoutMicroSecs
Definition: vl53l0x_def.h:394
Definition: vl53l0x_def.h:352
VL53L0X_DeviceError ErrorStatus
Definition: vl53l0x_def.h:363
uint8_t FirstBin
Definition: vl53l0x_def.h:358
uint8_t BufferSize
Definition: vl53l0x_def.h:359
uint8_t NumberOfBins
Definition: vl53l0x_def.h:360
uint8_t HistogramType
Definition: vl53l0x_def.h:356
Definition: vl53l0x_def.h:306
uint8_t RangeStatus
Definition: vl53l0x_def.h:339
uint32_t TimeStamp
Definition: vl53l0x_def.h:307
FixPoint1616_t SignalRateRtnMegaCps
Definition: vl53l0x_def.h:320
uint8_t ZoneId
Definition: vl53l0x_def.h:333
uint32_t MeasurementTimeUsec
Definition: vl53l0x_def.h:308
uint16_t EffectiveSpadRtnCount
Definition: vl53l0x_def.h:329
uint16_t RangeMilliMeter
Definition: vl53l0x_def.h:313
uint8_t RangeFractionalPart
Definition: vl53l0x_def.h:336
uint16_t RangeDMaxMilliMeter
Definition: vl53l0x_def.h:315
FixPoint1616_t AmbientRateRtnMegaCps
Definition: vl53l0x_def.h:324
Definition: vl53l0x_def.h:525
uint8_t DssOn
Definition: vl53l0x_def.h:528
uint8_t FinalRangeOn
Definition: vl53l0x_def.h:530
uint8_t PreRangeOn
Definition: vl53l0x_def.h:529
uint8_t MsrcOn
Definition: vl53l0x_def.h:527
uint8_t TccOn
Definition: vl53l0x_def.h:526
Spad Configuration Data.
Definition: vl53l0x_def.h:374
Defines the parameters of the Get Version Functions.
Definition: vl53l0x_def.h:100
uint8_t minor
Definition: vl53l0x_def.h:103
uint8_t build
Definition: vl53l0x_def.h:104
uint8_t major
Definition: vl53l0x_def.h:102
uint32_t revision
Definition: vl53l0x_def.h:101