VL6180X Laser Sensor Datasheet
VL6180X Laser Sensor Datasheet
VL6180X Laser Sensor Datasheet
Applications
• Smartphones/portable touchscreen devices
• Tablet/laptop/gaming devices
• Domestic appliances/industrial devices
Features
Description
• Three-in-one smart optical module
– Proximity sensor The VL6180X is the latest product based on ST’s
patented FlightSense™ technology. This is a
– Ambient Light Sensor
ground-breaking technology allowing absolute
– VCSEL light source distance to be measured independent of target
• Fast, accurate distance ranging reflectance. Instead of estimating the distance by
– Measures absolute range from 0 to above measuring the amount of light reflected back from
10 cm (ranging beyond 10cm is dependent the object (which is significantly influenced by
on conditions) color and surface), the VL6180X precisely
– Independent of object reflectance measures the time the light takes to travel to the
nearest object and reflect back to the sensor
– Ambient light rejection
(Time-of-Flight).
– Cross-talk compensation for cover glass
Combining an IR emitter, a range sensor and an
• Gesture recognition
ambient light sensor in a three-in-one ready-to-
– Distance and signal level can be used by use reflowable package, the VL6180X is easy to
host system to implement gesture integrate and saves the end-product maker long
recognition and costly optical and mechanical design
– Demo system available: P-NUCLEO- optimizations.
6180X1 evaluation board
The module is designed for low power operation.
• Ambient light sensor Ranging and ALS measurements can be
– High dynamic range automatically performed at user defined intervals.
– Accurate/sensitive in ultra-low light Multiple threshold and interrupt schemes are
– Calibrated output value in lux supported to minimize host operations.
• Easy integration Host control and result reading is performed using
– Single reflowable component an I2C interface. Optional additional functions,
– No additional optics such as measurement ready and threshold
interrupts, are provided by two programmable
– Single power supply
GPIO pins.
– I2C interface for device control and data
– Provided with a documented C portable
API (Application Programming Interface)
Contents
1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1 Technical specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 System block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Device pinout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Typical application schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 Recommended solder pad dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . .11
1.6 Recommended reflow profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
2 Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1 Ranging pipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 System state diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Timing diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Software overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Operating modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.1 Polling mode - single shot range/ALS measurement . . . . . . . . . . . . . . . 20
2.5.2 Interrupt mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
VL6180x_RangeConfigInterrupt() or VL6180x_AlsConfigInterrupt() . . . . . . . . . . . 22
Continuous mode limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.3 Asynchronous mode - single shot range measurement . . . . . . . . . . . . 23
2.5.4 Interleaved mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6 History buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.7 Range Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.7.1 Range timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.7.2 Range error codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7.3 Range checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Early convergence estimate (ECE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Range ignore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Signal-to-noise ratio (SNR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.7.4 Manual/autoVHV calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.5 Wrap Around Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.6 Maximum ranging distance (DMAX) . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.8 Other ranging system considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.8.1 Part-to-part range offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.8.2 Cross-talk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.8.3 Offset calibration procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.8.4 Cross-talk calibration procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.8.5 Cross-talk limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.8.6 Cross-talk vs air gap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.9 Current consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.9.1 Ranging current consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.9.2 Current consumption calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.9.3 Current distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.10 Ambient light sensor (ALS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.10.1 Field of view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.10.2 Spectral response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.10.3 ALS dynamic range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.10.4 ALS count to lux conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.10.5 Integration period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.10.6 ALS gain selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.10.7 Scaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3 Performance specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1 Proximity ranging (0 to 100mm) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.1 Max range vs. ambient light level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2 ALS performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5 Electrical characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.1 Absolute maximum ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2 Normal operating conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 Electrical characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6 Device registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.1 Register encoding formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.2 Register descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2.1 IDENTIFICATION__MODEL_ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2.2 IDENTIFICATION__MODEL_REV_MAJOR . . . . . . . . . . . . . . . . . . . . . 51
6.2.3 IDENTIFICATION__MODEL_REV_MINOR . . . . . . . . . . . . . . . . . . . . . 51
6.2.4 IDENTIFICATION__MODULE_REV_MAJOR . . . . . . . . . . . . . . . . . . . . 52
6.2.5 IDENTIFICATION__MODULE_REV_MINOR . . . . . . . . . . . . . . . . . . . . 52
6.2.6 IDENTIFICATION__DATE_HI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.7 IDENTIFICATION__DATE_LO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.8 IDENTIFICATION__TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.9 SYSTEM__MODE_GPIO0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.2.10 SYSTEM__MODE_GPIO1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.2.11 SYSTEM__HISTORY_CTRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2.12 SYSTEM__INTERRUPT_CONFIG_GPIO . . . . . . . . . . . . . . . . . . . . . . 57
6.2.13 SYSTEM__INTERRUPT_CLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.2.14 SYSTEM__FRESH_OUT_OF_RESET . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.2.15 SYSTEM__GROUPED_PARAMETER_HOLD . . . . . . . . . . . . . . . . . . . 58
6.2.16 SYSRANGE__START . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.2.17 SYSRANGE__THRESH_HIGH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.2.18 SYSRANGE__THRESH_LOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.2.19 SYSRANGE__INTERMEASUREMENT_PERIOD . . . . . . . . . . . . . . . . 60
6.2.20 SYSRANGE__MAX_CONVERGENCE_TIME . . . . . . . . . . . . . . . . . . . 60
6.2.21 SYSRANGE__CROSSTALK_COMPENSATION_RATE . . . . . . . . . . . . 61
6.2.22 SYSRANGE__CROSSTALK_VALID_HEIGHT . . . . . . . . . . . . . . . . . . . 61
6.2.23 SYSRANGE__EARLY_CONVERGENCE_ESTIMATE . . . . . . . . . . . . . 61
6.2.24 SYSRANGE__PART_TO_PART_RANGE_OFFSET . . . . . . . . . . . . . . 62
6.2.25 SYSRANGE__RANGE_IGNORE_VALID_HEIGHT . . . . . . . . . . . . . . . 62
6.2.26 SYSRANGE__RANGE_IGNORE_THRESHOLD . . . . . . . . . . . . . . . . . 62
6.2.27 SYSRANGE__MAX_AMBIENT_LEVEL_MULT . . . . . . . . . . . . . . . . . . 63
6.2.28 SYSRANGE__RANGE_CHECK_ENABLES . . . . . . . . . . . . . . . . . . . . . 63
6.2.29 SYSRANGE__VHV_RECALIBRATE . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.2.30 SYSRANGE__VHV_REPEAT_RATE . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.2.31 SYSALS__START . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.2.32 SYSALS__THRESH_HIGH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.2.33 SYSALS__THRESH_LOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.2.34 SYSALS__INTERMEASUREMENT_PERIOD . . . . . . . . . . . . . . . . . . . 66
6.2.35 SYSALS__ANALOGUE_GAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.2.36 SYSALS__INTEGRATION_PERIOD . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.2.37 RESULT__RANGE_STATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.2.38 RESULT__ALS_STATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2.39 RESULT__INTERRUPT_STATUS_GPIO . . . . . . . . . . . . . . . . . . . . . . . 70
6.2.40 RESULT__ALS_VAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.2.41 RESULT__HISTORY_BUFFER_x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.2.42 RESULT__RANGE_VAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.2.43 RESULT__RANGE_RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.2.44 RESULT__RANGE_RETURN_RATE . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.2.45 RESULT__RANGE_REFERENCE_RATE . . . . . . . . . . . . . . . . . . . . . . . 73
6.2.46 RESULT__RANGE_RETURN_SIGNAL_COUNT . . . . . . . . . . . . . . . . . 73
6.2.47 RESULT__RANGE_REFERENCE_SIGNAL_COUNT . . . . . . . . . . . . . 74
6.2.48 RESULT__RANGE_RETURN_AMB_COUNT . . . . . . . . . . . . . . . . . . . . 74
6.2.49 RESULT__RANGE_REFERENCE_AMB_COUNT . . . . . . . . . . . . . . . . 74
6.2.50 RESULT__RANGE_RETURN_CONV_TIME . . . . . . . . . . . . . . . . . . . . 75
6.2.51 RESULT__RANGE_REFERENCE_CONV_TIME . . . . . . . . . . . . . . . . . 75
6.2.52 READOUT__AVERAGING_SAMPLE_PERIOD . . . . . . . . . . . . . . . . . . 75
6.2.53 FIRMWARE__BOOTUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.2.54 FIRMWARE__RESULT_SCALER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.2.55 I2C_SLAVE__DEVICE_ADDRESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.2.56 INTERLEAVED_MODE__ENABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7 Outline drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
9 Ordering information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.1 Traceability and identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.2 Part marking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.3 Packaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.3.1 Package labeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.4 Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.5 ROHS compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
10 ECOPACK® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
11 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
List of tables
List of figures
1 Overview
Operating temperature:
• Functional range -20 to 70°C
• Optimum range(4) -10 to 60°C
VL6180X module
VL6180X silicon
GPIO-0 AVDD
Ranging ALS
GPIO-1 AVDD_VCSEL
Microcontroller
SDA AVSS
NVM RAM
IR emitter
VL6180X
GPIO1 1 12 AVSS
NC 2 11 NC
NC 3 10 AVDD
GPIO0 4 9 AVSS_VCSEL
SCL 5 8 AVDD_VCSEL
SDA 6 7 NC
9RU9
9
9/;
*1'
*3,2 *3,2
1& Q)
1&
$9''
1&
*3,2 *3,2 $966B9&6(/
6&/
6&/ $9''B9&6(/
6'$ 6'$ 1& X)
1.40 mm
0.60 mm
Note: As the VL6180X package is not sealed, only a dry re-flow process should be used (such as
convection re-flow). Vapor phase re-flow is not suitable for this type of optical component.
The VL6180X is an optical component and as such, it should be treated carefully. This
would typically include using a ‘no-wash’ assembly process.
2 Functional description
This section gives an overview of the key features of the VL6180X and describes the
different modes of operation of the ALS and proximity sensor.
A complete API is also associated to the device which consists of a set of C functions
controlling the VL6180X to enable fast development of end-user applications. This API is
structured in a way that it can be complied on any kind of platform through a well isolated
platform layer (mainly for low level I2C access). It is available for download from
www.st.com.
It is assumed in the rest of the document that the host application is controlling the VL6180X
device through its C API.
For a more detailed explanation of the API functions please refer to the documentation that
is supplied with the API.
Typical ranging performance of the VL6180X is shown in Figure 6. This demonstrates the
reflectance independence and range accuracy of the VL6180X from 0 to 100 mm for 3%,
5%, 17% and 88% reflective targets. The example shown here is with ST cover glass and a
1.0 mm air gap.
Figure 7 shows typical ALS linearity vs gain over a wide dynamic range. More details about
the ambient light sensor can be found in Section 2.10.
ϭϬϬϬϬ 'ĂŝŶϭ
'ĂŝŶϭ͘Ϯϱ
Z^h>dͺͺ>^ͺs>
'ĂŝŶϭ͘ϲϳ
'ĂŝŶϮ͘ϱ
ϭϬϬϬ
'ĂŝŶϱ
'ĂŝŶϭϬ
'ĂŝŶϮϬ
ϭϬϬ 'ĂŝŶϰϬ
^ĂƚƵƌĂƚŝŽŶ>ŝŵŝƚ
YƵĂŶƚŝƐĂƚŝŽŶ>ŝŵŝƚ
ϭϬ
ϭ ϭϬ ϭϬϬ ϭϬϬϬ ϭϬϬϬϬ
>ŝŐŚƚůĞǀĞů;>ƵdžͿ
From customer application point of view, the following sequence must be followed at the
power-up stage
• Set GPIO0 to 0
• Set GPIO0 to 1
• Wait for a minimum of 400μs
• Call VL6180x_WaitDeviceBooted()(b) API function (or wait for 1ms to ensure device is
ready).
Then, at this stage, through API functions calls, it is possible to:
1. Configure the device to start single-shot ranging or ALS measurements.
2. Configure the device into continuous mode where the device uses an internal timer to
schedule range/ALS measurements at specified intervals. See Section 2.5.4:
Interleaved mode.
Power off
AVDD on
AVDD off GPIO0=0
AVDD on
GPIO0=1
Hardware
AVDD off
standby GPIO0=1
GPIO0=0
MCU boot
range_start Software
als_start
standby
done done
Range mode= ALS
measurement continuous measurement
stop start
auto auto
Continuous
modes(*)
(*) Device is placed in a low power state between measurements
'W/KϭƚƌŝͲƐƚĂƚĞĚ͕ŽŶůLJŚŝŐŚŝĨƉƵůůͲƵƉĨŝƚƚĞĚ
Figure 11. Simple ALS routine Figure 12. Simple range routine
3RZHUXS 3RZHUXS
VGHOD\ VGHOD\
9/[B 9/[B
:DLW'HYLFH%RRWHGRU :DLW'HYLFH%RRWHGRU
PVGHOD\ PVGHOD\
6RIWZDUHVWDQGE\ 6RIWZDUHVWDQGE\
9/[B,QLW'DWD 9/[B,QLW'DWD
9/[B3UHSDUH 9/[B3UHSDUH
9/[B$/63ROO0H 9/[B5DQJH3ROO
DVXUHPHQW 0HDVXUHPHQW
Note: Single-shot ALS and range operations cannot be performed simultaneously. Only one of
these operations should be performed at any one time and once started must be allowed to
complete before another measurement is started. This is because any current operation will
be aborted if another is started.
Wrap Around Filter is not available in Continuous range measurement mode.
Although not supported by the API, it is possible to do a mix of continuous Range and single
shot ALS measurements or continuous ALS and single shot Range measurements, as
shown below.
• Mode 6 is mixed continuous range and single-shot ALS operation where regular
ranging measurements are required with only the occasional ALS measurement.
• Mode 7 is mixed continuous ALS and single-shot range operation where regular ALS
measurements are required with only the occasional range measurement.
In modes 6 and 7, single-shot operation takes the priority i.e. if a scheduled measurement is
in progress when the host requests a single-shot measurement, the scheduled
measurement will be aborted and will resume on the next available time slot.
Wh s>ϲϭϴϬy
/ŶŝƚĂƚĂ;Ϳ͕WƌĞƉĂƌĞ;Ϳ
ZĂŶŐĞWŽůůDĞĂƐƵƌĞŵĞŶƚ;Ϳ ZĂŶŐŝŶŐ
Wh s>ϲϭϴϬy
/ŶŝƚĂƚĂ;Ϳ͕WƌĞƉĂƌĞ;Ϳ
>^WŽůůDĞĂƐƵƌĞŵĞŶƚ;Ϳ >^DĞĂƐƵƌĞŵĞŶƚ
/ŶŝƚĂƚĂ;Ϳ͕WƌĞƉĂƌĞ;Ϳ
ZĂŶŐĞ^Ğƚ/ŶƚĞƌDĞĂƐWĞƌŝŽĚ;Ϳ
^ĞƚƵƉ'W/Kϭ;Ϳ
ZĂŶŐĞŽŶĨŝŐ/ŶƚĞƌƌƵƉƚ;Ϳ
ZĂŶŐĞ^ƚĂƌƚŽŶƚŝŶƵŽƵƐDŽĚĞ;Ϳ
ZĂŶŐŝŶŐ
WhĐĂŶďĞŝĚůĞŽƌĚŽŝŶŐ
ŽƚŚĞƌƚĂƐŬƐǁŚŝůĞǁĂŝƚŝŶŐ
ŽŶs>ϲϭϴϬyŝŶƚĞƌƌƵƉƚ 'W/Kϭ/Ed
ZĂŶŐĞ'ĞƚDĞĂƐƵƌĞŵĞŶƚ;Ϳ
/ŶŝƚĂƚĂ;Ϳ͕WƌĞƉĂƌĞ;Ϳ
ůƐ^Ğƚ/ŶƚĞƌDĞĂƐƵƌĞŵĞŶƚWĞƌŝŽĚ;Ϳ
^ĞƚƵƉ'W/Kϭ;Ϳ
ůƐŽŶĨŝŐ/ŶƚĞƌƌƵƉƚ;Ϳ
ůƐ^ƚĂƌƚŽŶƚŝŶƵŽƵƐDŽĚĞ;Ϳ
>^ŵĞĂƐƵƌĞŵĞŶƚ
WhĐĂŶďĞŝĚůĞŽƌĚŽŝŶŐ
ŽƚŚĞƌƚĂƐŬƐǁŚŝůĞǁĂŝƚŝŶŐ
ŽŶs>ϲϭϴϬyŝŶƚĞƌƌƵƉƚ 'W/Kϭ/Ed
ůƐ'ĞƚDĞĂƐƵƌĞŵĞŶƚ;Ϳ
It is not recommended to run range and ALS continuous modes simultaneously (i.e.
asynchronously). Instead, mode 7 ‘interleaved mode’ in Table 5. should be used.
In ‘interleaved mode’, scheduled range and ALS measurements operate off a single timer
with a range measurement proceeding immediately after every ALS measurement.
VL6180x_RangeConfigInterrupt() or VL6180x_AlsConfigInterrupt()
The VL6180X can be configured to generate a range or ALS interrupt flag under any of the
following conditions:
• New sample ready
• Level low (range/ALS value < low threshold)
• Level high (range/ALS value > high threshold)
• Out of window (range/ALS value < low threshold) OR (range/ALS value > high
threshold)
In new sample ready mode (continuous mode - WAF disabled), an interrupt flag will be
raised at the end of every measurement irrespective of whether the measurement is valid or
if an error has occurred.
In level interrupt mode the system will raise an interrupt flag if either a low or high
programmable threshold has been crossed.
Out of window interrupt mode activates both high and low level thresholds allowing a
window of operation to be specified.
Range interrupt modes are selected via VL6180x_RangeConfigInterrupt() with
VL6180x_RangeSetThresholds() used to set thresholds. Use
VL6180x_RangeGetInterruptStatus() to return the ranging interrupt status.
ALS interrupt modes are selected via VL6180x_AlsConfigInterrupt() with
VL6180x_AlsSetThresholds() used to set thresholds. Use
VL6180x_AlsGetInterruptStatus() to return the ALS interrupt status.
Note: In level or window interrupt modes range errors will only trigger an interrupt if the logical
conditions described above are met.
Table 9. gives an example how to apply these limits in continuous interleaved mode
operating at a sampling rate of 10 Hz.
VL6180x_AlsSetInterMeasurementPeriod() 100
VL6180x_RangeSetMaxConvergenceTime() 30
VL6180x_AlsSetIntegrationPeriod() 50
/ŶŝƚĂƚĂ;Ϳ͕WƌĞƉĂƌĞ;Ϳ
ZĂŶŐĞ^ƚĂƌƚ^ŝŶŐůĞ^ŚŽƚ;Ϳ
WhŵƵƐƚƌĞŐƵůĂƌůLJĐĂůů
ƚŚĞ
ZĂŶŐĞ'ĞƚDĞĂƐƵƌĞŵĞŶƚ/Ĩ ZĂŶŐŝŶŐ
ZĞĂĚLJĨƵŶĐƚŝŽŶƚŽĐŚĞĐŬ
ĨŽƌƌĂŶŐĞŵĞĂƐƵƌĞŵĞŶƚ
ZĂŶŐĞ'ĞƚDĞĂƐƵƌĞŵĞ
ZĂŶŐĞĂŶĚ
z^ Ŷƚ/ĨZĞĂĚLJ;Ϳ EK
ƐƚĂƚƵƐĚĂƚĂ
/ŶŝƚĂƚĂ;Ϳ͕WƌĞƉĂƌĞ;Ϳ
ůƐŽŶĨŝŐ/ŶƚĞƌƌƵƉƚ;Ϳ
ůƐ^Ğƚ/ŶƚĞƌDĞĂƐƵƌĞŵĞŶƚWĞƌŝŽĚ;Ϳ
ůƐ^ƚĂƌƚ/ŶƚĞƌůĞĂǀĞĚDŽĚĞ;Ϳ
>^ŵĞĂƐƵƌĞŵĞŶƚ
WhĐĂŶďĞŝĚůĞŽƌĚŽŝŶŐ
ŽƚŚĞƌƚĂƐŬƐǁŚŝůĞǁĂŝƚŝŶŐ
ŽŶs>ϲϭϴϬyŝŶƚĞƌƌƵƉƚ 'W/Kϭ/Ed
ůƐ'ĞƚDĞĂƐƵƌĞŵĞŶƚ;Ϳ
WhĐĂŶďĞŝĚůĞŽƌĚŽŝŶŐ ZĂŶŐŝŶŐ
ŽƚŚĞƌƚĂƐŬƐǁŚŝůĞǁĂŝƚŝŶŐ
ŽŶs>ϲϭϴϬyŝŶƚĞƌƌƵƉƚ
'W/Kϭ/Ed
ZĂŶŐĞ'ĞƚDĞĂƐƵƌĞŵĞŶƚ;Ϳ
Interrupt
flags
Note: To ensure correct operation in any of the continuous modes, the user must ensure that the
inter-measurement period is sufficient for the operation to be completed within the inter-
measurement period. Failure to do so could result in unpredictable behavior.
Note: Only one data stream (ALS or range) can be buffered at one time. There is no associated
time stamp information.
The clear buffer command is not immediate; it takes effect on the next range or ALS start
command.
The history buffer works independently of interrupt control i.e. the history buffer records all
new samples; its operation is unchanged in threshold and window modes.
Readout
Pre-cal Range convergence
averaging
Convergence time
4.3 ms
(variable)
c. Default readout averaging period is calculated as follows: 1300 µs + (48 x 64.5 µs) = 4.3 ms
te ECE
converged ra threshold
n al
s ig
n
ur
et
.r
in measurement
m
aborted
time
d. For standard ranging, the convergence threshold is set to 15360. The convergence threshold register is not
accessible by the user.
Range ignore
In a system with cover glass, the return signal from the glass (cross-talk) may be sufficient
to cause the system to converge and return a valid range measurement even when there is
no target present. The range ignore feature is designed to ensure that the system does not
range on the glass. (Cross-talk is described in more detail in Section 2.8.2).
The ignore threshold is enabled with VL6180x_RangeIgnoreSetEnable(). If enabled, the
ignore threshold and valid height must be specified, this is set with
VL6180x_RangeIgnoreConfigure().
A range ignore error will be flagged if the return signal rate is less than the ignore threshold.
Note: The optimum value for the ignore threshold should be determined in the final application.
RESULT__RANGE_RETURN_SIGNAL_COUNT{0x6C}
SNR = --------------------------------------------------------------------------------
RESULT__RANGE_RETURN_AMB_COUNT{0x74} * 6
Note: The SNR value is the inverse of the ambient/signal ratio limit {0x2C}.
Note: The optimum value for SNR threshold should be determined in the final application.
sĐƐĞůƉƵůƐĞ
ZĞƚƵƌŶƉŚŽƚŽŶƐ ƐƐŽĐŝĂƚĞĚƌĞƚƵƌŶƉŚŽƚŽŶ
Highly reflective targets (like mirrors) placed at a far distance (>600mm) from the VL6180X
can still produce enough return signal for the VL6180X to declare a valid target and meet
the wrap-around condition resulting in a wrong (under-estimated) returned distance.
The WAF implemented in the API is able to automatically detect if a target is in the wrap-
around condition and filter it by returning an invalid distance (Range.errorStatus = 16). The
WAF is enabled/disabled via VL6180x_FilterSetState() and read with
VL6180x_FilterGetState().
When no target is detected (no valid distance), the VL6180X API is able to estimate Dmax
as the maximum distance up to which a 17% target would have been detected with the
current ambient light level.
When no target is detected by the VL6180X, the application can interpret the Dmax value as
no target is detected and there is no 17% (or above) target between 0 and Dmax mm.
DMAX is enabled/disabled by VL6180x_DMaxSetState() and read with
VL6180x_DMaxGetState().
Note: Dmax is estimated for a 17% reflectance target. If the real target has a lower reflectance,
then the Dmax calculated by the API could be overestimated.
Note: DMAX requires a large amount of software computation, that may represent a high time
overhead for some low MHz CPU. It should be disabled if not required.
p2p_offset
calibration
Actual Range
2.8.2 Cross-talk
Cross-talk is defined as the signal return from the cover glass. The magnitude of the cross-
talk depends on the type of glass, air gap and filter material. Cross-talk results in a range
error (see Figure 24) which is proportional to the ratio of the cross-talk to the signal return
from the target. The true range is recovered by applying automatic cross-talk compensation.
cross-talk
Measured range
compensation
Actual Range
8. The new offset value should be stored on system and written to the VL6180X by using
VL6180x_SetOffsetCalibrationData() each time the device is reset.
ϯ͘ϱϬ
ϯ͘ϬϬ
Ϯ͘ϱϬ ϯй
Ϯ͘ϬϬ ϱй
ϭ͘ϱϬ ϭϳй
ϭ͘ϬϬ ϴϴй
Ϭ͘ϱϬ
Ϭ͘ϬϬ
Ϭ ϭϬ ϮϬ ϯϬ ϰϬ ϱϬ ϲϬ ϳϬ ϴϬ ϵϬ ϭϬϬ
ZĂŶŐĞ;ŵŵͿ
The minimum average current consumption in Figure 26. is 1.5 mA, 0.5 mA of which comes
from pre-calibration before each measurement and 1.0 mA from post-processing (readout
averaging). Pre-calibration is a fixed overhead but readout averaging can be reduced or
effectively disabled by setting the READOUT__AVERAGING_SAMPLE_PERIOD{0x10A} to
zero (default setting is 48).
Note: Decreasing the READOUT__AVERAGING_SAMPLE_PERIOD will increase sampling noise. It
is recommended that any change in setting be properly evaluated in the end application.
Minimum current consumption scales with sampling rate i.e. at a sampling rate of 1 Hz the
current consumption associated with pre- and post-processing will be 0.15 μA.
8 mA average current
Ϭ͘ϴ
Ϭ͘ϲ
Ϭ͘ϰ
Ϭ͘Ϯ
Ϭ
ͲϲϬ ͲϱϬ ͲϰϬ ͲϯϬ ͲϮϬ ͲϭϬ Ϭ ϭϬ ϮϬ ϯϬ ϰϬ ϱϬ ϲϬ
ŶŐůĞ;ΣͿ
100%
80%
60%
Photopic
VL6180X
40%
20%
0%
350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100
Wavelength (nm)
The factory calibrated ALS lux resolution is 0.32 lux/count for an analog gain of 1 & 100ms
integration time (calibrated without glass). The current lux resolution value can be read by
using VL6180x_AlsGetLuxResolutionFactor().
The ALS lux resolution will require re-calibration in the final system where cover glass is
used. This can be done by reading the lux value with and without glass under the same
conditions and multiplying the ALS lux resolution by the ratio of the two values as shown
below. The new value can be written to the device by using
VL6180x_AlsSetLuxResolutionFactor().
2.10.7 Scaler
In addition to analogue gain, the VL6180X has a scaler that multiplies the ALS count prior to
the result being read. This value, in addition to the analogue gain is useful in very low light
conditions to increase the dynamic range.
The scaler can be a value between 1 to 16 (default 1) and is set with
VL6180x_ALSSetScaler() and read with VL6180x_ALSGetScaler().
3 Performance specification
Noise(1) - - 2.0 mm
Range offset error(2) - - 13 mm
(3)
Temperature dependent drift - 9 15 mm
(4)
Voltage dependent drift - 3 5 mm
Convergence time (5) - - 15 ms
1. Maximum standard deviation of 100 measurements
2. Maximum offset drift after 3 reflow cycles. This error can be removed by re-calibration in the final system
3. Tested over optimum operating temperature range (see Table 23.: Normal operating conditions)
4. Tested over optimum operating voltage range (see Table 23.: Normal operating conditions)
5. Based on a 3% reflective target @ 100 mm
The VL6180X is controlled over an I2C interface. The default I2C address is 0x29 (7-bit).
This section describes the I2C protocol.
SDA
MSB LSB
SCL
S 7 8 P
1 2 3 4 5 6 As/Am
Address or data byte
Stop condition
Information is packed in 8-bit packets (bytes) always followed by an acknowledge bit, As for
sensor acknowledge and Am for master acknowledge. The internal data is produced by
sampling SDA at a rising edge of SCL. The external data must be stable during the high
period of SCL. The exceptions to this are start (S) or stop (P) conditions when SDA falls or
rises respectively, while SCL is high.
A message contains a series of bytes preceded by a start condition and followed by either a
stop or repeated start (another start condition but without a preceding stop condition)
followed by another message. The first byte contains the device address (0x52) and also
specifies the data direction. If the least significant bit is low (0x52) the message is a master
write to the slave. If the lsb is set (0x53) then the message is a master read from the slave.
MSBit LSBit
0 1 0 1 0 0 1 R/W
All serial interface communications with the sensor must begin with a start condition. The
sensor acknowledges the receipt of a valid address by driving the SDA wire low. The state
of the read/write bit (lsb of the address byte) is stored and the next byte of data, sampled
from SDA, can be interpreted. During a write sequence the second and third bytes received
provide a 16-bit index which points to one of the internal 8-bit registers.
As data is received by the slave it is written bit by bit to a serial/parallel register. After each
data byte has been received by the slave, an acknowledge is generated, the data is then
stored in the internal register addressed by the current index.
During a read message, the contents of the register addressed by the current index is read
out in the byte following the device address byte. The contents of this register are parallel
loaded into the serial/parallel register and clocked out of the device by the falling edge of
SCL.
0x53 (read)
S ADDRESS[7:0] As DATA[7:0] Am P
At the end of each byte, in both read and write message sequences, an acknowledge is
issued by the receiving device (that is, the sensor for a write and the master for a read).
A message can only be terminated by the bus master, either by issuing a stop condition or
by a negative acknowledge (that is, not pulling the SDA line low) after reading a complete
byte during a read operation.
The interface also supports auto-increment indexing. After the first data byte has been
transferred, the index is automatically incremented by 1. The master can therefore send
data bytes continuously to the slave until the slave fails to provide an acknowledge or the
master terminates the write communication with a stop condition. If the auto-increment
feature is used the master does not have to send address indexes to accompany the data
bytes.
0x53 (read)
S ADDRESS[7:0] As DATA[7:0] Am DATA[7:0] Am
VIH
SDA ... VIL
VIH
SCL
VIL
...
5 Electrical characteristics
Note: Stresses above those listed in Table 22. may cause permanent damage to the device. This
is a stress rating only and functional operation of the device at these or any other conditions
above those indicated in the operational sections of the specification is not implied.
Exposure to absolute maximum rating conditions for extended periods may affect device
reliability.
6 Device registers
This section describes in detail all user accessible device registers. Registers are grouped
by function as shown in Table 25. to make them easier to read but also to simplify multi-byte
read/write I2C accesses (burst mode). More details in Section 4. Reset values are given for
each register which denotes the register value in software standby.
Note that registers can be 8-,16- or 32-bit. Multi-byte registers are always addressed in
ascending order with MSB first as shown in Table 26.
Address MSB
Address + 1 ..
Address + 2 ..
Address + 3 LSB
6.2.1 IDENTIFICATION__MODEL_ID
7 6 5 4 3 2 1 0
identification__model_id
R/W
Address: 0x000
Type: R/W
Reset: 0xB4
Description:
[7:0] identification__model_id: Device model identification number. 0xB4 = VL6180X
6.2.2 IDENTIFICATION__MODEL_REV_MAJOR
7 6 5 4 3 2 1 0
RESERVED identification__model_rev_major
R R/W
Address: 0x001
Type: R/W
Reset: 0x1, register default overwritten at boot-up by NVM contents.
Description:
[2:0] identification__model_rev_major: Revision identifier of the Device for major change.
6.2.3 IDENTIFICATION__MODEL_REV_MINOR
7 6 5 4 3 2 1 0
RESERVED identification__model_rev_minor
R R/W
Address: 0x002
Type: R/W
Reset: 0x3, register default overwritten at boot-up by NVM contents.
Description:
[2:0] identification__model_rev_minor: Revision identifier of the Device for minor change.
IDENTIFICATION__MODEL_REV_MINOR = 3 for latest ROM revision
6.2.4 IDENTIFICATION__MODULE_REV_MAJOR
7 6 5 4 3 2 1 0
RESERVED identification__module_rev_major
R R/W
Address: 0x003
Type: R/W
Reset: 0x1, register default overwritten at boot-up by NVM contents.
Description:
[2:0] identification__module_rev_major: Revision identifier of the Module Package for major change.
Used to store NVM content version. Contact ST for current information.
6.2.5 IDENTIFICATION__MODULE_REV_MINOR
7 6 5 4 3 2 1 0
RESERVED identification__module_rev_minor
R R/W
Address: 0x004
Type: R/W
Reset: 0x2, register default overwritten at boot-up by NVM contents.
Description:
[2:0] identification__module_rev_minor: Revision identifier of the Module Package for minor change.
Used to store NVM content version. Contact ST for current information.
6.2.6 IDENTIFICATION__DATE_HI
7 6 5 4 3 2 1 0
identification__year identification__month
R/W R/W
Address: 0x006
Type: R/W
Reset: 0xYY, register default overwritten at boot-up by NVM contents.
Description: Part of the register set that can be used to uniquely identify a module.
6.2.7 IDENTIFICATION__DATE_LO
7 6 5 4 3 2 1 0
identification__day identification__phase
R/W R/W
Address: 0x007
Type: R/W
Reset: 0xYY, register default overwritten at boot-up by NVM contents.
Description: Part of the register set that can be used to uniquely identify a module.
6.2.8 IDENTIFICATION__TIME
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
identification__time
R/W
Address: 0x008:0x009
Type: R/W
Reset: 0xYYYY, register default overwritten at boot-up by NVM contents.
Description: Part of the register set that can be used to uniquely identify a module.
6.2.9 SYSTEM__MODE_GPIO0
7 6 5 4 3 2 1 0
system__gpio0_is_xshutdown
system__gpio0_polarity
system__gpio0_select
RESERVED
RESERVED
R R/W R/W R/W R/W
Address: 0x010
Type: R/W
Reset: 0x60
Description:
[6] system__gpio0_is_xshutdown: Priority mode - when enabled, other bits of the register are
ignored. GPIO0 is main XSHUTDOWN input.
0: Disabled
1: Enabled - GPIO0 is main XSHUTDOWN input.
[5] system__gpio0_polarity: Signal Polarity Selection.
0: Active-low
1: Active-high
[4:1] system__gpio0_select: Functional configuration options.
0000: OFF (Hi-Z)
1000: GPIO Interrupt output
[0] Reserved. Write 0.
6.2.10 SYSTEM__MODE_GPIO1
7 6 5 4 3 2 1 0
system__gpio1_polarity
system__gpio1_select
RESERVED
RESERVED
R R/W R/W R/W
Address: 0x011
Type: R/W
Reset: 0x20
Description:
[5] system__gpio1_polarity: Signal Polarity Selection.
0: Active-low
1: Active-high
[4:1] system__gpio1_select: Functional configuration options.
0000: OFF (Hi-Z)
1000: GPIO Interrupt output
[0] Reserved. Write 0.
6.2.11 SYSTEM__HISTORY_CTRL
7 6 5 4 3 2 1 0
system__history_buffer_enable
system__history_buffer_mode
system__history_buffer_clear
RESERVED
Address: 0x012
Type: R/W
Reset: 0x0
Description:
[2] system__history_buffer_clear: User-command to clear history (FW will auto-clear this bit when
clear has completed).
0: Disabled
1: Clear all history buffers
[1] system__history_buffer_mode: Select mode buffer results for:
0: Ranging (stores the last 8 ranging values (8-bit)
1: ALS (stores the last 8 ALS values (16-bit)
[0] system__history_buffer_enable: Enable History buffering.
0: Disabled
1: Enabled
6.2.12 SYSTEM__INTERRUPT_CONFIG_GPIO
7 6 5 4 3 2 1 0
RESERVED als_int_mode range_int_mode
R R/W R/W
Address: 0x014
Type: R/W
Reset: 0x0
Description:
[5:3] als_int_mode: Interrupt mode source for ALS readings:
0: Disabled
1: Level Low (value < thresh_low)
2: Level High (value > thresh_high)
3: Out Of Window (value < thresh_low OR value > thresh_high)
4: New sample ready
[2:0] range_int_mode: Interrupt mode source for Range readings:
0: Disabled
1: Level Low (value < thresh_low)
2: Level High (value > thresh_high)
3: Out Of Window (value < thresh_low OR value > thresh_high)
4: New sample ready
6.2.13 SYSTEM__INTERRUPT_CLEAR
7 6 5 4 3 2 1 0
RESERVED int_clear_sig
R R/W
Address: 0x015
Type: R/W
Reset: 0x0
Description:
[2:0] int_clear_sig: Interrupt clear bits. Writing a 1 to each bit will clear the intended interrupt.
6.2.14 SYSTEM__FRESH_OUT_OF_RESET
7 6 5 4 3 2 1 0
fresh_out_of_reset
RESERVED
R R/W
Address: 0x016
Type: R/W
Reset: 0x1
Description:
[0] fresh_out_of_reset: Fresh out of reset bit, default of 1, user can set this to 0 after initial boot and
can therefore use this to check for a reset condition
6.2.15 SYSTEM__GROUPED_PARAMETER_HOLD
7 6 5 4 3 2 1 0
grouped_parameter_hold
RESERVED
R R/W
Address: 0x017
Type: R/W
Reset: 0x0
Description:
[0] grouped_parameter_hold: Flag set over I2C to indicate that data is being updated
0: Data is stable - FW is safe to copy
1: Data being updated - FW not safe to copy
Usage: set to 0x01 first, write any of the registers listed below, then set to 0x00 so that the
settings are used by the firmware at the start of the next measurement.
SYSTEM__INTERRUPT_CONFIG_GPIO
SYSRANGE__THRESH_HIGH
SYSRANGE__THRESH_LOW
SYSALS__INTEGRATION_PERIOD
SYSALS__ANALOGUE_GAIN
SYSALS__THRESH_HIGH
SYSALS__THRESH_LOW
6.2.16 SYSRANGE__START
7 6 5 4 3 2 1 0
sysrange__mode_select
sysrange__startstop
RESERVED
R R/W R/W
Address: 0x018
Type: R/W
Reset: 0x0
Description:
[1] sysrange__mode_select: Device Mode select
0: Ranging Mode Single-Shot
1: Ranging Mode Continuous
[0] sysrange__startstop: StartStop trigger based on current mode and system configuration of
device_ready. FW clears register automatically.
Setting this bit to 1 in single-shot mode starts a single measurement.
Setting this bit to 1 in continuous mode will either start continuous operation (if stopped) or halt
continuous operation (if started).
This bit is auto-cleared in both modes of operation.
6.2.17 SYSRANGE__THRESH_HIGH
7 6 5 4 3 2 1 0
sysrange__thresh_high
R/W
Address: 0x019
Type: R/W
Reset: 0xFF
Description:
[7:0] sysrange__thresh_high: High Threshold value for ranging comparison. Range 0-255mm.
6.2.18 SYSRANGE__THRESH_LOW
7 6 5 4 3 2 1 0
sysrange__thresh_low
R/W
Address: 0x01A
Type: R/W
Reset: 0x0
Description:
[7:0] sysrange__thresh_low: Low Threshold value for ranging comparison. Range 0-255mm.
6.2.19 SYSRANGE__INTERMEASUREMENT_PERIOD
7 6 5 4 3 2 1 0
sysrange__intermeasurement_period
R/W
Address: 0x01B
Type: R/W
Reset: 0xFF
Description:
[7:0] sysrange__intermeasurement_period: Time delay between measurements in Ranging
continuous mode. Range 0-254 (0 = 10ms). Step size = 10ms.
6.2.20 SYSRANGE__MAX_CONVERGENCE_TIME
7 6 5 4 3 2 1 0
RESERVED sysrange__max_convergence_time
R R/W
Address: 0x01C
Type: R/W
Reset: 0x31
Description:
[5:0] sysrange__max_convergence_time: Maximum time to run measurement in Ranging modes.
Range 1 - 63 ms (1 code = 1 ms); Measurement aborted when limit reached to aid power
reduction. For example, 0x01 = 1ms, 0x0a = 10ms.
Note: Effective max_convergence_time depends on readout_averaging_sample_period
setting.
6.2.21 SYSRANGE__CROSSTALK_COMPENSATION_RATE
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
sysrange__crosstalk_compensation_rate
R/W
Address: 0x01E
Type: R/W
Reset: 0x0
Description:
[15:0] sysrange__crosstalk_compensation_rate: User-controlled crosstalk compensation in Mcps (9.7
format).
6.2.22 SYSRANGE__CROSSTALK_VALID_HEIGHT
7 6 5 4 3 2 1 0
sysrange__crosstalk_valid_height
R/W
Address: 0x021
Type: R/W
Reset: 0x14
Description:
[7:0] sysrange__crosstalk_valid_height: Minimum range value in mm to qualify for cross-talk
compensation.
6.2.23 SYSRANGE__EARLY_CONVERGENCE_ESTIMATE
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
sysrange__early_convergence_estimate
R/W
Address: 0x022
Type: R/W
Reset: 0x0
Description:
[15:0] FW carries out an estimate of convergence rate 0.5ms into each new range measurement. If
convergence rate is below user input value, the operation aborts to save power.
Note: This register must be configured otherwise ECE should be disabled via
SYSRANGE__RANGE_CHECK_ENABLES.
6.2.24 SYSRANGE__PART_TO_PART_RANGE_OFFSET
7 6 5 4 3 2 1 0
sysrange__part_to_part_range_offset
R/W
Address: 0x024
Type: R/W
Reset: 0xYY, register default overwritten at boot-up by NVM contents.
Description:
[7:0] sysrange__part_to_part_range_offset: 2s complement format.
6.2.25 SYSRANGE__RANGE_IGNORE_VALID_HEIGHT
7 6 5 4 3 2 1 0
sysrange__range_ignore_valid_height
R/W
Address: 0x025
Type: R/W
Reset: 0x0, register default overwritten at boot-up by NVM contents.
Description:
[7:0] sysrange__range_ignore_valid_height: Range below which ignore threshold is applied. Aim is
to ignore the cover glass i.e. low signal rate at near distance. Should not be applied to low
reflectance target at far distance. Range in mm.
Note: It is recommended to set this register to 255 if the range ignore feature is used.
6.2.26 SYSRANGE__RANGE_IGNORE_THRESHOLD
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
sysrange__range_ignore_threshold
R/W
Address: 0x026
Type: R/W
Reset: 0x00
Description:
[15:0] sysrange__range_ignore_threshold: User configurable min threshold signal return rate. Used
to filter out ranging due to cover glass when there is no target above the device. Mcps 9.7
format.
Note: Register must be initialized if this feature is used.
6.2.27 SYSRANGE__MAX_AMBIENT_LEVEL_MULT
7 6 5 4 3 2 1 0
sysrange__max_ambient_level_mult
R/W
Address: 0x02C
Type: R/W
Reset: 0xA0, register default overwritten at boot-up by NVM contents.
Description:
[7:0] sysrange__max_ambient_level_mult: User input value to multiply return_signal_count for
AMB:signal ratio check. If (amb counts * 6) > return_signal_count * mult then abandon
measurement due to high ambient (4.4 format).
6.2.28 SYSRANGE__RANGE_CHECK_ENABLES
7 6 5 4 3 2 1 0
sysrange__early_convergence_enable
sysrange__signal_to_noise_enable
sysrange__range_ignore_enable
RESERVED
Address: 0x02D
Type: R/W
Reset: 0x11, register default overwritten at boot-up by NVM contents.
Description:
[4] sysrange__signal_to_noise_enable: Measurement enable/disable
[1] sysrange__range_ignore_enable: Measurement enable/disable
[0] sysrange__early_convergence_enable: Measurement enable/disable
6.2.29 SYSRANGE__VHV_RECALIBRATE
7 6 5 4 3 2 1 0
sysrange__vhv_recalibrate
sysrange__vhv_status
RESERVED
R R/W R/W
Address: 0x02E
Type: R/W
Reset: 0x0
Description:
[1] sysrange__vhv_status: FW controlled status bit showing when FW has completed auto-vhv
process.
0: FW has finished autoVHV operation
1: During autoVHV operation
[0] sysrange__vhv_recalibrate: User-Controlled enable bit to force FW to carry out recalibration of
the VHV setting for sensor array. FW clears bit after operation carried out.
0: Disabled
1: Manual trigger for VHV recalibration. Can only be called when ALS and ranging are in STOP
mode
6.2.30 SYSRANGE__VHV_REPEAT_RATE
7 6 5 4 3 2 1 0
sysrange__vhv_repeate_rate
R/W
Address: 0x031
Type: R/W
Reset: 0x0
Description:
[7:0] sysrange__vhv_repeat_rate: User entered repeat rate of auto VHV task (0 = off, 255 = after
every 255 measurements)
6.2.31 SYSALS__START
7 6 5 4 3 2 1 0
sysals__mode_select
sysals__startstop
RESERVED
R R/W R/W
Address: 0x038
Type: R/W
Reset: 0x0
Description:
[1] sysals__mode_select: Device Mode select
0: ALS Mode Single-Shot
1: ALS Mode Continuous
[0] sysals__startstop: Start/Stop trigger based on current mode and system configuration of
device_ready. FW clears register automatically.
Setting this bit to 1 in single-shot mode starts a single measurement.
Setting this bit to 1 in continuous mode will either start continuous operation (if stopped) or halt
continuous operation (if started).
This bit is auto-cleared in both modes of operation.
See 6.2.56: INTERLEAVED_MODE__ENABLE for combined ALS and Range operation.
6.2.32 SYSALS__THRESH_HIGH
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
sysals__thresh_high
R/W
Address: 0x03A
Type: R/W
Reset: 0xFFFF
Description:
[15:0] sysals__thresh_high: High Threshold value for ALS comparison. Range 0-65535 codes.
6.2.33 SYSALS__THRESH_LOW
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
sysals__thresh_low
R/W
Address: 0x03C
Type: R/W
Reset: 0x0
Description:
[15:0] sysals__thresh_low: Low Threshold value for ALS comparison. Range 0-65535 codes.
6.2.34 SYSALS__INTERMEASUREMENT_PERIOD
7 6 5 4 3 2 1 0
sysals__intermeasurement_period
R/W
Address: 0x03E
Type: R/W
Reset: 0xFF
Description:
[7:0] sysals__intermeasurement_period: Time delay between measurements in ALS continuous
mode. Range 0-254 (0 = 10ms). Step size = 10ms.
6.2.35 SYSALS__ANALOGUE_GAIN
7 6 5 4 3 2 1 0
RESERVED sysals__analogue_gain_light
R R/W
Address: 0x03F
Type: R/W
Reset: 0x06
Description:
[2:0] sysals__analogue_gain_light: ALS analogue gain (light channel)
0: ALS Gain = 20
1: ALS Gain = 10
2: ALS Gain = 5.0
3: ALS Gain = 2.5
4: ALS Gain = 1.67
5: ALS Gain = 1.25
6: ALS Gain = 1.0
7: ALS Gain = 40
Controls the “light” channel gain.
Note: Upper nibble should be set to 0x4 i.e. For ALS gain of 1.0 write 0x46.
6.2.36 SYSALS__INTEGRATION_PERIOD
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESERVED sysals__integration_period
R R/W
Address: 0x040
Type: R/W
Reset: 0x0
Description:
[8:0] sysals__integration_period: Integration period for ALS mode. 1 code = 1 ms (0 = 1 ms).
Recommended setting is 100 ms (0x63).
6.2.37 RESULT__RANGE_STATUS
7 6 5 4 3 2 1 0
result__range_measurement_ready
result__range_max_threshold_hit
result__range_min_threshold_hit
result__range_device_ready
result__range_error_code
R R R R R
Address: 0x04D
Type: R
Reset: 0x1
Description:
[7:4] result__range_error_code: Specific error codes
0000: No error
0001: VCSEL Continuity Test
0010: VCSEL Watchdog Test
0011: VCSEL Watchdog
0100: PLL1 Lock
0101: PLL2 Lock
0110: Early Convergence Estimate
0111: Max Convergence
1000: No Target Ignore
1001: Not used
1010: Not used
1011: Max Signal To Noise Ratio
1100: Raw Ranging Algo Underflow
1101: Raw Ranging Algo Overflow
1110: Ranging Algo Underflow
1111: Ranging Algo Overflow
[3] result__range_min_threshold_hit: Legacy register - DO NOT USE
Use instead 6.2.39: RESULT__INTERRUPT_STATUS_GPIO
[2] result__range_max_threshold_hit: Legacy register - DO NOT USE
Use instead 6.2.39: RESULT__INTERRUPT_STATUS_GPIO
[1] result__range_measurement_ready: Legacy register - DO NOT USE
Use instead 6.2.39: RESULT__INTERRUPT_STATUS_GPIO
[0] result__range_device_ready: Device Ready. When set to 1, indicates the device mode and
configuration can be changed and a new start command will be accepted. When 0, indicates
the device is busy.
6.2.38 RESULT__ALS_STATUS
7 6 5 4 3 2 1 0
result__als_measurement_ready
result__als_max_threshold_hit
result__als_min_threshold_hit
result__als_device_ready
result__als_error_code
R R R R R
Address: 0x04E
Type: R
Reset: 0x1
Description:
[7:4] result__als_error_code: Specific error and debug codes
0000: No error
0001: Overflow error
0002: Underflow error
[3] result__als_min_threshold_hit: Legacy register - DO NOT USE
Use instead 6.2.39: RESULT__INTERRUPT_STATUS_GPIO
[2] result__als_max_threshold_hit: Legacy register - DO NOT USE
Use instead 6.2.39: RESULT__INTERRUPT_STATUS_GPIO
[1] result__als_measurement_ready: Legacy register - DO NOT USE
Use instead 6.2.39: RESULT__INTERRUPT_STATUS_GPIO
[0] result__als_device_ready: Device Ready. When set to 1, indicates the device mode and
configuration can be changed and a new start command will be accepted. When 0, indicates
the device is busy.
6.2.39 RESULT__INTERRUPT_STATUS_GPIO
7 6 5 4 3 2 1 0
result_int_error_gpio result_int_als_gpio result_int_range_gpio
R R R
Address: 0x04F
Type: R
Reset: 0x0
Description:
[7:6] result_int_error_gpio: Interrupt bits for Error:
0: No error reported
1: Laser Safety Error
2: PLL error (either PLL1 or PLL2)
[5:3] result_int_als_gpio: Interrupt bits for ALS:
0: No threshold events reported
1: Level Low threshold event
2: Level High threshold event
3: Out Of Window threshold event
4: New Sample Ready threshold event
[2:0] result_int_range_gpio: Interrupt bits for Range:
0: No threshold events reported
1: Level Low threshold event
2: Level High threshold event
3: Out Of Window threshold event
4: New Sample Ready threshold event
6.2.40 RESULT__ALS_VAL
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__als_ambient_light
R
Address: 0x050
Type: R
Reset: 0x0
Description:
[15:0] result__als_ambient_light: 16 Bit ALS count output value. Lux value depends on Gain and
integration settings and calibrated lux/count setting.
6.2.41 RESULT__HISTORY_BUFFER_x
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESULT__HISTOR
result__history_buffer_0
Y_BUFFER_0
RESULT__HISTOR
result__history_buffer_1
Y_BUFFER_1
RESULT__HISTOR
result__history_buffer_2
Y_BUFFER_2
RESULT__HISTOR
result__history_buffer_3
Y_BUFFER_3
RESULT__HISTOR
result__history_buffer_4
Y_BUFFER_4
RESULT__HISTOR
result__history_buffer_5
Y_BUFFER_5
RESULT__HISTOR
result__history_buffer_6
Y_BUFFER_6
RESULT__HISTOR
result__history_buffer_7
Y_BUFFER_7
R
6.2.42 RESULT__RANGE_VAL
7 6 5 4 3 2 1 0
result__range_val
R
Address: 0x062
Type: R
Reset: 0x0
Description:
[7:0] result__range_val: Final range result value presented to the user for use. Unit is in mm.
6.2.43 RESULT__RANGE_RAW
7 6 5 4 3 2 1 0
result__range_raw
R
Address: 0x064
Type: R
Reset: 0x0
Description:
[7:0] result__range_raw: Raw Range result value with offset applied (no cross-talk compensation
applied). Unit is in mm.
6.2.44 RESULT__RANGE_RETURN_RATE
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_return_rate
R
Address: 0x066
Type: R
Reset: 0x0
Description:
[15:0] result__range_return_rate: sensor count rate of signal returns correlated to IR emitter.
Computed from RETURN_SIGNAL_COUNT / RETURN_CONV_TIME. Mcps 9.7 format
6.2.45 RESULT__RANGE_REFERENCE_RATE
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_reference_rate
R
Address: 0x068
Type: R
Reset: 0x0
Description:
[15:0] result__range_reference_rate: sensor count rate of reference signal returns. Computed from
REFERENCE_SIGNAL_COUNT / RETURN_CONV_TIME. Mcps 9.7 format
Note: Both arrays converge at the same time, so using the return array convergence time is
correct.
6.2.46 RESULT__RANGE_RETURN_SIGNAL_COUNT
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_return_signal_count
R
Address: 0x06C
Type: R
Reset: 0x0
Description:
[31:0] result__range_return_signal_count: sensor count output value attributed to signal correlated to
IR emitter on the Return array.
6.2.47 RESULT__RANGE_REFERENCE_SIGNAL_COUNT
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_reference_signal_count
R
Address: 0x070
Type: R
Reset: 0x0
Description:
[31:0] result__range_reference_signal_count: sensor count output value attributed to signal
correlated to IR emitter on the Reference array.
6.2.48 RESULT__RANGE_RETURN_AMB_COUNT
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_return_amb_count
R
Address: 0x074
Type: R
Reset: 0x0
Description:
[31:0] result__range_return_amb_count: sensor count output value attributed to uncorrelated ambient
signal on the Return array. Must be multiplied by 6 if used to calculate the ambient to signal
threshold.
6.2.49 RESULT__RANGE_REFERENCE_AMB_COUNT
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_reference_amb_count
R
Address: 0x078
Type: R
Reset: 0x0
Description:
[31:0] result__range_reference_amb_count: sensor count output value attributed to uncorrelated
ambient signal on the Reference array.
6.2.50 RESULT__RANGE_RETURN_CONV_TIME
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_return_conv_time
R
Address: 0x07C
Type: R
Reset: 0x0
Description:
[31:0] result__range_return_conv_time: sensor count output value attributed to signal on the Return
array.
6.2.51 RESULT__RANGE_REFERENCE_CONV_TIME
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
result__range_reference_conv_time
R
Address: 0x080
Type: R
Reset: 0x0
Description:
[31:0] result__range_reference_conv_time: sensor count output value attributed to signal on the
Reference array.
6.2.52 READOUT__AVERAGING_SAMPLE_PERIOD
7 6 5 4 3 2 1 0
readout__averaging_sample_period
R/W
Address: 0x10A
Type: R/W
Reset: 0x30
Description:
[7:0] readout__averaging_sample_period: The internal readout averaging sample period can be
adjusted from 0 to 255. Increasing the sampling period decreases noise but also reduces the
effective max convergence time and increases power consumption:
Effective max convergence time = max convergence time - readout averaging period (see
Section 2.7.1: Range timing). Each unit sample period corresponds to around 64.5 µs
additional processing time. The recommended setting is 48 which equates to around 4.3 ms.
6.2.53 FIRMWARE__BOOTUP
7 6 5 4 3 2 1 0
firmware__bootup
RESERVED
R R/W
Address: 0x119
Type: R/W
Reset: 0x1
Description:
[0] firmware__bootup: FW must set bit once initial boot has been completed.
6.2.54 FIRMWARE__RESULT_SCALER
7 6 5 4 3 2 1 0
RESERVED firmware__als_result_scaler
R R/W
Address: 0x120
Type: R/W
Reset: 0x1
Description:
[3:0] firmware__als_result_scaler: Bits [3:0] analogue gain 1 to 16x
6.2.55 I2C_SLAVE__DEVICE_ADDRESS
7 6 5 4 3 2 1 0
RESERVED super_i2c_slave__device_address
R R/W
Address: 0x212
Type: R/W
Reset: 0x29
Description:
[6:0] super_i2c_slave__device_address: User programmable I2C address (7-bit). Device address
can be re-designated after power-up.
6.2.56 INTERLEAVED_MODE__ENABLE
7 6 5 4 3 2 1 0
interleaved_mode__enable
R/W
Address: 0x2A3
Type: R/W
Reset: 0x0
Description:
[7:0] Interleaved mode enable: Write 0x1 to this register to select ALS+Range interleaved mode.
Use SYSALS__START and SYSALS__INTERMEASUREMENT_PERIOD to control this mode.
A range measurement is automatically performed immediately after each ALS measurement.
78/87
1 2 3 4 5 6 7 8
5(9,6,216
Outline drawing
% 83'$7('287/,1(725(029(*$7(,//8675$7,21
A %
1(:'5$:,1*)5$0(216+7$7*5,'5()'
A
',0(16,21'(/(7(',1/+9,(:*$7($''('
$/6$3(5785(
GATE - COSMETIC
B VENT ONLY (SUPPLIER DEPENDENT) B
Outline drawing
3267,215(7851 /,*+7(0,66,21
$3(5785( $3(5785(
C C
DocID026171 Rev 7
D D
SEE SHEET 2
Figure 37. Outline drawing (page 1/2)
E AREA RESERVED FOR E
PART MARKING
127(6
',0(16,2160$5.('7+86$5(72%(86('
$6,163(&7,21',0(16,216
Tolerances, unless otherwise stated Interpret drawing per BS8888, Material
Linear 3RD Angle Projection Drawn Scale
All dimensions
0 Place Decimals 0 ±0.05 DAVID MCARDLE in mm Do Not Scale
F 1 Place Decimals 0.0 ±0.05 - 25:1 F
2 Place Decimals 0.00 ±0.05 Date STMicroelectronics
Angular ±0.25 degrees Finish 14 DEC 12 Imaging Division
Diameter +0.05 -
Position 0.10 Part No. Title
VL6180 BABYBEAR CUT 1.0 Sheet
Surface Finish 1.6 microns 8432884 VL6180X
MODULE OUTLINE DRAWING 1 OF 2
1 2 3 6 7 8
VL6180X
VL6180X
1 2 3 4 5 6 7 8
REV B1
A ,1326 A
,1326
B PIN INDICATOR B
C C
TOLERANCE 0.03 APPLIES
UNLESS OTHERWISE STATED
DocID026171 Rev 7
,1326
PROXIMITY SENSOR
D &211(&7,217$%/( ALS CONE D
3$'1R )81&7,21 PROXIMITY SENSOR
*3,2 ILLUMINATION CONE
1& PROXIMITY SENSOR
VIEW CONE
1&
*3,2
6&/ &21($3(; &21($3(;
Figure 38. Outline drawing (page 2/2)
6'$
E 1& E
$9''B9&6(/
$966B9&6(/
$9'' )8//)29
1& $0%,(1775$160,66,21
*1'
Tolerances, unless otherwise stated Interpret drawing per BS8888, Material
Linear 3RD Angle Projection Drawn Scale
All dimensions
0 Place Decimals 0 ±0.05 DAVID MCARDLE in mm Do Not Scale
F 1 Place Decimals 0.0 ±0.05 - 25:1 F
2 Place Decimals 0.00 ±0.05 Date STMicroelectronics
Angular ±0.25 degrees Finish 14 DEC 12 Imaging Division
Diameter +0.05 -
Position 0.10 Part No. Title Sheet
VL6180 BABYBEAR CUT 1.0
VL6180X
Surface Finish 1.6 microns 8432884 MODULE OUTLINE DRAWING 2 OF 2
1 2 3 6 7 8
79/87
Outline drawing
86
Laser safety considerations VL6180X
The VL6180X contains a laser emitter and corresponding drive circuitry. The laser output is
designed to remain within Class 1 laser safety limits under all reasonably foreseeable
conditions including single faults in compliance with IEC 60825-1:2007. The laser output will
remain within Class 1 limits as long as the STMicroelectronics recommended device
settings are used and the operating conditions specified in this datasheet are respected.
The laser output power must not be increased by any means and no optics should be used
with the intention of focusing the laser beam.
8.1 Compliance
Complies with 21 CFR 1040.10 and 1040.11 except for deviations pursuant to Laser Notice
No.50, dated June 24, 2007.
9 Ordering information
VL6180X is currently available in the following format. More detailed information is available
on request.
The minimum information required for traceability is the content of the following registers:
0x006 - IDENTIFICATION__DATE_HI
0x007 - IDENTIFICATION__DATE_LO
0x008 - IDENTIFICATION__TIME (16-bit)
0x00A - IDENTIFICATION__CODE
With this information, the module can be uniquely identified.
Preferably, all the IDENTIFICATION register contents should be provided for traceability.
9.3 Packaging
The Root part number 1 is available in tape and reel packaging as shown in Figure 41.
- 0.05 (F)
1.75 (E)
- 0.3 (W)
5.5 +
A A
5°
5.10 (Bo)
12.0+
Ao +
- 0.1 Bo +-0.1 Ko +-0.1 E+
- 0.1 F+
- 0.05 Po +-0.1 P1 +-0.1 P2 +-0.1 Do +-0.1 T+- 0.05 W+-0.3
3.10 5.10 1.20 1.75 5.5 4.0 8.0 2.0 1.55 0.30 12.0
9.4 Storage
The Root part number 1 is a MSL 3 package.
3 1 Week
10 ECOPACK®
11 Revision history
Updates:
Section : Signal-to-noise ratio (SNR): Clarified SNR calculation.
Section 6: Device registers: Corrected a clarified some register
20-Aug-2014 6
descriptions.
Typical ranging performance graph updated.
Delivery & manufacturing info updated.
Updates:
- API integrated into datasheet
Add:
16-Mar-2016 7
Section 2.7.5: Wrap Around Filter
Section 2.7.6: Maximum ranging distance (DMAX)
Section 4.1: I2C interface - timing characteristics
STMicroelectronics NV and its subsidiaries (“ST”) reserve the right to make changes, corrections, enhancements, modifications, and
improvements to ST products and/or to this document at any time without notice. Purchasers should obtain the latest relevant information on
ST products before placing orders. ST products are sold pursuant to ST’s terms and conditions of sale in place at the time of order
acknowledgement.
Purchasers are solely responsible for the choice, selection, and use of ST products and ST assumes no liability for application assistance or
the design of Purchasers’ products.
Resale of ST products with provisions different from the information set forth herein shall void any warranty granted by ST for such product.
ST and the ST logo are trademarks of ST. All other product or service names are the property of their respective owners.
Information in this document supersedes and replaces information previously supplied in any prior versions of this document.