Image not available
Illustrative purposes only
TMF8806-1A
Optical Distance Sensor, 5m, I2C Digital, Direct Time of Flight, 2.7 to 3.5V, PCB, TMF8806 Series
⚠️ Reference pricing provided. In case of supply shortages, we will connect you with our trusted procurement partners to ensure your project's continuity.
- Manufacturer: AMS OSRAM GROUP
- Product type:
- SVHC: No SVHC (21-Jan-2025)
- Product Range: TMF8806 Series
- Sensing Method: Direct Time of Flight
- Connection Method: PCB
- Sensing Range Max: 5m
- Sensor Output Type: I2C Digital
- Supply Voltage DC Max: 3.5V
- Supply Voltage DC Min: 2.7V
| Delivery and price | |
|---|---|
| Units per pack | 500 |
| Price | 1.66 € |
| Current stock | 10+ |
| Lead time | 30 days |
## **TMF8806** ## Datasheet ## **Published by ams-OSRAM AG** Tobelbader Strasse 30, 8141 Premstaetten, Austria Phone +43 3136 500-0 ams-osram.com © All rights reserved **TMF8806** Table of contents ## **Table of contents** |**1**|**General description ................................................. 4**|**General description ................................................. 4**| |---|---|---| ||1.1|Key specifications & features ................................................ 4| ||1.2|Applications ........................................................................... 5| ||1.3|Block diagram ....................................................................... 5| ||1.4|Pin assignment ...................................................................... 6| |**2**|**Ordering information ............................................... 7**|| |**3**|**Absolute maximum ratings ..................................... 8**|| |**4**|**Electrical characteristics ......................................... 9**|| ||4.1|Algorithm performance parameters ......................................12| |**5**|**Typical operating characteristics ......................... 14**|| |**6**|**Functional description ........................................... 17**|| ||6.1|Functional working principle .................................................17| ||6.2|Startup of TMF8806 .............................................................19| ||6.3|Power modes .......................................................................20| ||6.4|Distance modes ...................................................................22| ||6.5|Optical stack configurations ..................................................23| ||6.6|EMC performance enhancements ........................................24| ||6.7|I/O voltage selection .............................................................25| ||6.8|Ranging acquisition timing ....................................................26| ||6.9|Algorithm performance .........................................................26| ||6.10|VCSEL .................................................................................28| ||6.11|Typical optical characteristics ...............................................28| ||6.12|I²C protocol...........................................................................29| |**7**|**Register description .............................................. 32**|| ||7.2|App0 registers ......................................................................35| ||7.3|Object detection results ........................................................45| ||7.4|Calibration and algorithm state data exchange .....................53| ||7.5|Raw histogram output ..........................................................54| ||7.6|Serial number readout ..........................................................55| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **2** / 76 / **TMF8806** Table of contents ||7.7<br>Interrupt suppression registers .............................................57| |---|---| ||7.8<br>Bootloader ............................................................................59| |**8**|**Application information ......................................... 63**| ||8.1<br>Schematic ............................................................................63| ||8.2<br>PCB layout ...........................................................................66| ||8.3<br>PCB pad layout ....................................................................67| ||8.4<br>Calibration ............................................................................67| ||8.5<br>Software drivers ...................................................................68| |**9**|**Package drawings & markings ............................. 69**| |**10**|**Tape & reel information ......................................... 71**| |**11**|**Soldering & storage information .......................... 72**| ||11.1<br>Soldering information ...........................................................72| ||11.2<br>Storage information ..............................................................73| |**12**|**Laser eye safety ..................................................... 75**| |**13**|**Revision information ............................................. 76**| |**14**|**Legal information ................................................... 77**| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **3** / 76 / **TMF8806** General description ## **TMF8806 Time-of-flight sensor** ## 1 General description The TMF8806 is a dToF (direct Time of Flight) optical distance sensor module achieving up to 5000 mm target detection distance. The TMF8806 can operate at ultra low power consumption using a new ultra low power mode. It allows operation with I²C hosts with a very wide voltage range: 1.2 V and 1.8 V to 3.3 V. The TMF8806 is a single modular package with integrated VCSEL. The TMF8806 device is based on SPAD, TDC and histogram technology. The device achieves 5000 mm detection range. ## **1.1 Key specifications & features** The benefits and features of TMF8806, Time-of-flight sensor are listed below: **Table 1: Key benefits & features** |**Benefits**|**Features**| |---|---| |Small footprint fits in the mobile phone bezel|Modular package - 2.2 mm x 3.6 mm x 1.0 mm| |Detecting central closest objects|No influence on multi object reflections| |Wide range of host devices|I/O supply from 1.2V, 1.8V to 3.3V| |Within 3 % of measurement (accuracy); no multipath|Time-to-Digital Converter (TDC)| |and no multiple object problems as for iToF|Direct Time-of-Flight Measurement| |Better accuracy detects reliably closest object|Single Photon Avalanche Photodiode (SPAD)| |Minimum distance 10 mm, maximum 5000 mm|Histogram based architecture| |No complex calibration|Dynamic cover glass calibration| |Compensates for dirt on glass|Reliable operation under demanding use cases| |Improved accuracy over temperature and life|Reference SPAD and sopisticated on-chip algorithm| |Class 1 eye safe|Fast VCSEL driver with protection| ||27 mA power consumption at 30 Hz operation.| |Longer battery life|14 µA power consumption at 0.5 Hz operation and ultra<br>low power mode| ||0.26 µA power-down current consumption (EN=0)| |No additional expensive EMC parts|EMC improvements| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **4** / 76 / **TMF8806** General description ## **1.2 Applications** - The device is ideal for use in the mobile phone market with applications including: - Distance measurement for camera autofocus (Laser Detect Autofocus - LDAF) - Battery operated systems with long runtime - Presence detection - Object detection - Collision avoidance ## **1.3 Block diagram** The functional blocks of this device are shown below: **Figure 1: Functional blocks of TMF8806** Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **5** / 76 / **TMF8806** General description ## **1.4 Pin assignment** ## **1.4.1 Pin diagram** **Figure 2: Pin locations top through view (not to scale)** |VDDC||1|1||12|VDDV| |---|---|---|---|---|---|---| |||||||| |||||||| |GNDC||2|||11|GNDV| |GPIO0||3|||10|GPIO1| |INT||4|||9|EN| |||||||| |SCL||5|||8|GND| |SDA||6|||7|VDD| **Table 2: Pin description of TMF8806** |**Pin**<br>**number**|**Pin**<br>**name**|**Signal**<br>**type**|**Description**| |---|---|---|---| |1|VDDC|Supply|Charge pump supply voltage (3 V); add a capacitor GRM155R70J104KA01<br>(0402 X7R 0.1 µF 6.3 V) to GND| |2|GNDC|Ground|Charge pump ground; connect all ground pins together| ||||General purpose input/output; default Hi-Z; if not used, connect to VDD for| ||||1.8 V to 3.3 V I/O supply or GND for 1.2V I/O supply.| |3|GPIO0|I/O|During startup after the rising edge of EN, or rising edge of VDD if EN=VDD,| ||||this pin is monitored and used to switch between 1.2 V I/O supply and| ||||1.8 V to 3.3 V I/O supply.| |4|INT|Output|Interrupt. Open-drain output; default Hi-Z; connect to GND if not used, do not<br>leave floating.| |5|SCL|Input|I²C serial clock| |6|SDA|I/O|I²C serial data| |7|VDD|Supply|Chip supply voltage (3 V); add a capacitor GRM155R70J104KA01 (0402 X7R<br>0.1 µF 6.3 V) to GND| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **6** / 76 / **TMF8806** Ordering information |**Pin**<br>**number**|**Pin**<br>**name**|**Signal**<br>**type**|**Description**| |---|---|---|---| |8|GND|Ground|Chip ground; connect all ground pins together| ||||Enable input active high; setting to low forces the device into shutdown and| |9|EN|Input|all memory content is lost; connect the EN pin to a host GPIO to control the<br>hardware reset function of TMF8806. If this functionality is not needed,| ||||connect to VDD.| |10|GPIO1|I/O|General purpose input/output; default Hi-Z; connect to GND if not used| |11|GNDV|Ground|VCSEL ground; connect all ground pins together| |12|VDDV|Supply|VCSEL supply voltage (3 V); add a capacitor GRM155R70J104KA01 (0402<br>X7R 0.1 µF 6.3 V) to GND| (1) SDA, SCL, INT and EN have no diode to any VDD supply. Therefore, even with VDD=0 V they do not block the interrupt line or I²C bus. (2) GPIO0 and GPIO1 are push/pull output and have a diode to VDD; therefore, if VDD is not powered, GPIO0 and GPIO1 should not be driven from outside. ## 2 Ordering information |**Ordering code**|**Package**|**Marking**|**Delivery form**|**Delivery quantity**| |---|---|---|---|---| |TMF8806-1AM|Optical module|5-digit tracecode (coded)|Tape & reel<br>(7″ reels)|500 pcs/reel| |TMF8806-1A|Optical module|5-digit tracecode (coded)|Tape & reel<br>(13″ reels)|5000 pcs/reel| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **7** / 76 / **TMF8806** Absolute maximum ratings 3 ## Absolute maximum ratings Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. Functional operation of the device at absolute maximum rating conditions is not implied, nor at any other conditions beyond those indicated under “Operating Conditions”. **Table 3: Absolute maximum ratings of TMF8806** |**Symbol**|**Parameter**|**Min**|**Max**|**Unit**|**Comment**| |---|---|---|---|---|---| |**Electrical parameters**|||||| |VDDC, VDDV,<br>VDD|3 V supply voltage|-0.3|3.6|V|Connect pins VDDC, VDDV,<br>VDD on PCB with very short<br>connections| |GNDV, GNDC,<br>GND|Ground|0.0|0.0|V|Connect all GND pins on PCB<br>with very short connections| |GPIO0, GPIO1|Digital I/O terminal<br>voltage|-0.3|VDD + 0.3 V<br>max. 3.6 V|V|Protection diode to VDD| |INT, SCL,<br>SDA, EN|Digital I/O terminal<br>voltage|-0.3|3.6|V|No protection diodes to any<br>positive supply only to ground| |I_SCR|Latch up immunity||± 100|mA|JEDEC JESD78E| |**Electrostatic discharge**|||||| |ESDHBM|Electrostatic<br>discharge HBM||± 2000|V|JEDEC JS-001-2017| |ESDCDM|Electrostatic<br>discharge CDM||± 500|V|JEDEC JS-002-2018| |**Temperature ranges and storage conditions**|||||| |TSTRG|Storage temperature<br>range|-40|85|°C|| |TBODY|Package body<br>temperature||260|°C|IPC/JEDEC J-STD-020(1)| |RHNC|Relative humidity<br>(non-condensing)|5|85|%|| |MSL|Moisture sensitivity<br>level||3||Represents a maximum floor life<br>time of 168h with TAMB< 30 °C<br>and < 60% r.h.| (1) The reflow peak soldering temperature (body temperature) is specified according to IPC/JEDEC J-STD-020 “Moisture/Reflow Sensitivity Classification for Nonhermetic Solid State Surface Mount Devices.” Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **8** / 76 / **TMF8806** Electrical characteristics ## 4 Electrical characteristics All limits are guaranteed. The parameters with Min and Max values are guaranteed with production tests or SQC (Statistical Quality Control) methods. Device parameters are guaranteed at nominal conditions unless otherwise noted. While the device is operational across the temperature range, functionality will vary with temperature. **Table 4: Electrical characteristics** |**Symbol**|**Parameter**|**Conditions**|**Min**|**Typ**|**Max**|**Unit**|**Comment**| |---|---|---|---|---|---|---|---| |VVDDV, VVDDC,<br>VVDD|Supply voltage||2.7|3.1|3.5|V|| ||||-40|25|70||| |tAMB|Free-air<br>temperature|VCSEL clk =<br>18.8MHz<br>_vcselClkDiv2_=1,|||85|°C|Operational| |||VDD >= 3.0V|||||| |**Current consumption(1)**|||||||| |IPOWER_DOWN|I_VDD<br>powerdown|Enable pin low,<br>I²C off|0.02|0.26|1|µA|State:<br>Powerdown| |ISTANDBY|I_VDD standby CPU off, RAM on<br>OSC Off, pon=0<br>I²C wakeup only|||85||µA|State:<br>Standby| |IWAIT|I_VDD wait CPU off, RAM on, OSC<br>on 5 MHz I²C on, timer wakeup|||140||µA|State: Wait| ||I_VDD ranging processing CPU||||||State:| |IACTIVE|running at 80 MHz no VCSEL,|||2.7||mA|Histogram| ||No TDC||||||processing| ||I_VDD ranging active CPU stopped||||||State:| |IACTIVE_RANGING|_vcselClkDiv2_=0 (default), TDCs|||32.5||mA|Ranging| ||running||||||active| ||2.5m range, 33<br>ms data rate|900k iterations||25.8||mA|| ||5m range, 66ms|900k iterations||22.9||mA|| ||5m range, 33ms|450k iterations||20.4||mA|| ||2.5m mode,<br>33ms|450k iterations||13.5||mA|| |IRANGING_AVG||10k iterations|||||| ||1 s data rate|ultra low power<br>mode, default||46||µA|| |||range|||||| |||10k iterations|||||| ||2 s data rate|ultra low power<br>mode, short||15||µA|| |||range|||||| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **9** / 76 / **TMF8806** Electrical characteristics |**Symbol**|**Parameter**<br>**Conditions**|**Min**|**Typ**|**Max**|**Unit**|**Comment**| |---|---|---|---|---|---|---| |IVCSEL_PEAK|Peak VCSEL current (only internal)||230||mA|| |**System parameters**||||||| ||The CPU can operate with the RC|||||| |fCPU|oscillator directly or with a 16x PLL;<br>frequency tuning adjusts the default||4.7|75 (=<br>4.7*16)|MHz|| ||frequency to 4.7 MHz|||||| |fPLL|Max PLL frequency||150.4||MHz|| |**Reset pin and power-up timing**|**Reset pin and power-up timing**|||||| |tPOR|Power on (Boot Time, EN to I²C<br>active)||1.6||ms|| |tEN_MEAS|Enable high to ready for<br>measurement excluding host time|||5|ms|| |tSTBY_ACT|Standby to active time||<<1||ms|| |tACT_STBY|Active to standby time||<<1||ms|| |tEN_OFF|Enable low to power down time||<<1||ms|| |**Ranging acquisition timing**||||||| ||Ranging init (including electrical|||||| |tRANGING_INIT|calibration) - only done on first startup<br>and if temperature changed from last||8||ms|| ||calibration|||||| ||_repetitionPeriodMs_= 0xfd||209|||| |tRANGING_PERIOD|||||ms|| ||_repetitionPeriodMs_= 0xfe / 0xff||1000 / 2000|1000 / 2000||| |Iterations|Allowed iterations range -_kIters_|10k|900k|4000k||| |**I/O levels**||||||| |V1v2_threshold|See section 6.7||1.5||V|| ||1.2 V operation|1.1|1.2|1.3||| |VIO|VIO supply<br>1.8 - 3.3 V<br>operation|1.65|1.8|3.5|V|| |ILEAK|SDA, SCL, GPIO0/1, EN, INT|-5||5|µA|| ||Low level input voltage pad EN -|||||| |VIL_EN|suitable for 1.2V and 1.8V to 3.3V|0.0||0.32|V|| ||operation|||||| ||High level input voltage pad EN -|||||| |VIH_EN|suitable for 1.2V and 1.8V to 3.3V|0.92||3.5|V|| ||operation|||||| |VIL_1V2|Input low level<br>Pads SCL, SDA,|0.0||0.38|V|| |VIH_1V2|1.2 V I/O supply<br>Input high level|0.8||3.5|V|| |VIL_1V8_3V3|Input low level<br>Pads SCL, SDA,|0.0||0.57|V|| ||1.8-3.3 V I/O|||||| |VIH_1V8_3V3|supply<br>Input high level|1.19||3.5|V|| |VOL|2 mA sink|0||0.36|V|| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **10** / 76 / **TMF8806** Electrical characteristics |**Symbol**|**Parameter**<br>**Conditions**|**Min**|**Typ**|**Max**|**Unit**|**Comment**| |---|---|---|---|---|---|---| ||Output low level|||||| ||SDA, GPIO0/1,<br>4 mA sink|0||0.6|V|| ||INT|||||| |IDRIVE_H|GPIO0/1 if pad is<br>pulled to VDD<br>1 V applied on<br>GPIO|3.6|||mA|| |IDRIVE_L|GPIO0/1 if pad is<br>pulled to GND<br>1 V applied on<br>GPIO|3.9|||mA|| |**I²C interface**||||||| |fSCLK|SCL clock frequency|0|400|1000|kHz|| |tBUF|Bus free time between a STOP and<br>START|0.5|||μs|| |tHD:STA|Hold time (Repeated) start|0.26|||µs|| |tLOW|LOW period of SCL clock|0.5|||μs|| |tHIGH|HIGH period of SCL clock|0.26|||μs|| |tSU:STA|Setup time for a repeated START|0.26|||μs|| |tHD:DAT|Data hold time|0|||μs|| |tSU:DAT|Data setup time|50|||ns|| |tR|Rise time of both SDA and SCL|20||120|ns|| |tF|Fall time of both SDA and SCL|20||120|ns|| |**Optical parameters**||||||| |FoI/FoV|Field of illumination / Field of view||See section 6.11|||| (1) All current consumption values include silicon process variation. Temperature and voltages are at nominal conditions (23 ºC and 2.8 V). Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **11** / 76 / **TMF8806** Electrical characteristics ## **4.1 Algorithm performance parameters** ## **Table 5: Algorithm performance parameters** |**Parameter**|**Condition**|**Min**|**Nom**|**Max**|**Units**| |---|---|---|---|---|---| |**Timings**|||||| ||Default Mode, 2.5 m range||||| |Default data rate|_distanceEnabled=1, distanceMode=0_(2.5 m<br>range),_kIters=900_(900 k iterations),||33||ms| ||_vcselClkDiv2=0_(VCSEL 37.6 MHz)||||| |**Object detection algorithm parameters**|||||| |Reflectivity of<br>object at 940 nm|Perpendicular to TMF8806|18||90|%| ||5 m range<br>350 lux fluorescent light on object, 90%<br>white card, 450k iterations (33ms)<br>350 lux fluorescent light on object, 18%<br>grey card, 900k iterations (66ms)<br>350 lux fluorescent light on object, 18%<br>grey card, 450k iterations (33ms)||5000(1)<br>3750<br>3250||mm<br>mm<br>mm| |Maximum distance<br>detection, 1.5 m x<br>1.5 m object,<br>default optical<br>stack|2.5 m range, 33 ms<br>350 lux fluorescent light on object, 18%<br>grey or 90% white card<br>170 lux halogen light on object(2), 90%<br>white card<br>170 lux halogen light on object(2), 18%<br>grey card<br>170 lux halogen light on object(2), 18%<br>grey card, smudge on glass(3)||2500(1)<br>2430(1)<br>1840<br>1500||mm<br>mm<br>mm<br>mm| ||830 lux halogen light on object(4), 18%<br>grey card||1170||mm| ||Ultra low power operation,||||| ||350 lux fluorescent light on object, 10k||665||mm| ||iterations, 2.5 m range, 18% grey card||||| |Minimum distance|Default optical stack configuration||10||mm| |detection, 18 %<br>grey card, 20 cm x|Large airgap optical stack configuration||20||mm| |26 cm|Thick cover glass optical stack configuration||40||mm| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **12** / 76 / **TMF8806** Electrical characteristics |**Parameter**|**Condition**|**Condition**|**Min**|**Nom**|**Max**|**Units**| |---|---|---|---|---|---|---| |Accuracy, default|2.5 m range|Object distance ≥ 200 mm<br>50 mm ≤ object distance < 200 mm<br>Object distance < 50 mm||±3<br>±6<br>+5<br>-15||%<br>mm<br>mm| |or large airgap||||||| |optical stack|5 m range|Object distance ≥ 500 mm<br>50 mm ≤ object distance < 500 mm<br>Object distance < 50 mm||±3<br>±15<br>+5<br>-20||%<br>mm<br>mm| |Transition short to<br>long distance mode||||200||mm| - (1) A target reported above 2500 mm respectively 5000 mm should be considered as no object. (2) 170 Lux halogen light represents 1k Lux sunlight equivalent: light on object only. (3) Smudge on glass is defined by one layer of Scotch Magic Tape 810 (very diffuse). - (4) 830 Lux halogen light represents 5 k Lux sunlight equivalent: light on object only. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **13** / 76 / **TMF8806** Typical operating characteristics 5 ## Typical operating characteristics Following operating characteristics are measured with calibrated devices with full optical stack including glass with >90 % transmissivity. The airgap is set to meet the requirements of the optical design guide. The ambient light is measured on the 2 m x 2 m target. A very diffuse scotch magic tape 810 is used for measurement with smudge. In the measurements halogen light (HAL) is used to emulate sunlight – the lux levels are provided as figure headings. **Figure 3: 90% white, 450k, 33ms, 5m mode** **Figure 4: 18% grey, 900k, 66ms, 5m mode** **Figure 5: 18% grey, 450k, 33ms, 2.5m mode** **Figure 6: 18% grey, 10k, ultra low power** **==> picture [2 x 3] intentionally omitted <==** **----- Start of picture text -----**<br> /<br>**----- End of picture text -----**<br> Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **14** / 76 **TMF8806** Typical operating characteristics **Figure 7: 90%, 900k, 33ms, 170 HAL=1k sun** **Figure 9: 18%, 900k, 33ms, 1k sun, smudge** **Figure 8: 18%, 900k, 33ms, 170 HAL=1k sun** **Figure 10: 18%, 900k, optical stack config’s** **Figure 11: Field of illumination of VCSEL (FOI) x-axis: ±10.4°, y-axis: ±10.31°, 1/e²** Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **15** / 76 / **TMF8806** Typical operating characteristics **Figure 12: EMC emission spectrum, 2.5 m mode, no EMC enhancements, 4000k iterations** **==> picture [87 x 35] intentionally omitted <==** **----- Start of picture text -----**<br> Noise floor of<br>measurement device<br>(switched mode)<br>**----- End of picture text -----**<br> **Figure 13: EMC emission, 2.5 m mode, VCSEL driver and both charge pumps using EMC enhancements** **Figure 14: EMC emission, 5 m mode, VCSEL driver and both charge pumps using EMC enhancements** / Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **16** / 76 **TMF8806** Functional description ## 6 Functional description ## **6.1 Functional working principle** The TMF8806 is a direct time of flight sensor which measures the time between sending a light pulse to the time it is received. The TMF8806 internally generates histograms vs. time for each measurement – this allows the device to measure the ultra-short times needed to get a resolution of 1 mm as 1 mm is only 6.66ps. There is an internal reference SPAD with associated TDC and histogram. This is used to determine the exact start time of each pulse. The reference SPAD is processed during calibration and in operation of the device. All processing occurs internally inside the device with no user interaction required. The measurement SPADs are used to capture the measurement histograms; using the different measurement channels, the target distance is calculated, and the best channel is used for the final distance result. All histograms can be processed inside the TMF8806 and/or readout through the I²C interface. As the readout is constrained by the I²C speed and the I²C bus utilization (TMF8806 can support I²C speed up to 1 MHz), it is recommended to readout the histograms only for debugging purposes. Figure 15 shows a histogram obtained from TMF8806. The x-axis is scaled in bins, where the nominal bin size is 100 ps per bin and each TDC has 256 bins. The y-axis is scaled in counts represented by 16-bit values. The green line shows the reference histogram from TDC0 and its peak marks the reference or zero distance. The other four lines (blue, cyan, red and violet) are the histograms obtained from TDC1 to TDC4. A target at 20 cm is used to generate the peak around bin 25. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **17** / 76 / **TMF8806** Functional description ## **Figure 15: Histogram** (1) The above histogram is used for general device information only. The actual histogram differs due to the different bin size and modes used. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **18** / 76 / **TMF8806** Functional description ## **6.2 Startup of TMF8806** ## **Figure 16: Startup sequence of TMF8806 from power down to application commands accepted** ## **6.2.1 Example for startup and measurement** See below a simple example, assuming existing calibration data is stored in ‘calibData’ (14 Bytes array) in Python syntax. This example starts the TMF8806, downloads calibration data and starts a continuous measurement. After readout of the first result, it stops the measurement and powers down the TMF8806. `enableHigh` **`()`** `# Supply the device, and set pin EN=high waitMs` **`(`** `1.6` **`)`** `# Wait until I2C is ready` **`while`** `i2cTxRx` **`(`** `0x41` **`, [`** `0xE0` **`],`** `1` **`) != [`** `0x00` **`]: continue`** `# Wait for the bootloader sleep i2cTx` **`(`** `0x41` **`, [`** `0xE0` **`,`** `0x01` **`])`** `# Set PON=1` **`while`** `i2cTxRx` **`(`** `0x41` **`, [`** `0xE0` **`],`** `1` **`) != [`** `0x41` **`]: continue`** `# Wait for the bootloader ready i2cTx` **`(`** `0x41` **`, [`** `0x02` **`,`** `0xC0` **`])`** `# Start the ROM application` **`while`** `i2cTxRx` **`(`** `0x41` **`, [`** `0x00` **`],`** `1` **`) != [`** `0xC0` **`]: continue`** `# Wait for the application # Enable the INT pin for results i2cTx` **`(`** `0x41` **`, [`** `0xE2` **`,`** `0x01` **`])`** `# Load the factory calibration stored i2cTx` **`(`** `0x41` **`, [`** `0x20` **`] +`** `calibData` **`)`** Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **19** / 76 / **TMF8806** Functional description `# Start the continuous measurement with calibration data i2cTx` **`(`** `0x41` **`, [`** `0x06` **`,`** `0x00` **`,`** `0x00` **`,`** `0x11` **`,`** `0x02` **`,`** `0x00` **`,`** `0x00` **`,`** `0x06` **`,`** `0x1e` **`,`** `0x84` **`,`** `0x03` **`,`** `0x02` **`])`** `# Wait for the next result` **`while not`** `isIntPinLow` **`(): continue`** `# Bulk-read the result including state data result` **`=`** `i2cTxRx` **`(`** `0x41` **`, [`** `0x1D` **`],`** `33` **`) print(`** `"The result #"` **`,`** `result` **`[`** `3` **`],`** `"distance is: "` **`,`** `result` **`[`** `6` **`] *`** `256` **`+`** `result` **`[`** `5` **`],`** `"mm"` **`)`** `i2cTx` **`(`** `0x41` **`, [`** `0xE1` **`,`** `0x01` **`])`** `# Clear the interrupt flag # Stop the periodic measurement i2cTx` **`(`** `0x41` **`, [`** `0x10` **`,`** `0xFF` **`]) while`** `i2cTxRx` **`(`** `0x41` **`, [`** `0x10` **`],`** `2` **`) != [`** `0x00` **`,`** `0xFF` **`]: continue`** `# Wait for command i2cTx` **`(`** `0x41` **`, [`** `0xE1` **`,`** `0x01` **`])`** `# Clear a pending interrupt flag enableLow` **`()`** `# Disable the device` ## **Attention:** - The above code example is for explanation only. It misses error handling and frequency skew correction, see TMF8806_Host_Driver_Communication_<latest version>.pdf. ## **6.3 Power modes** The default operating mode of TMF8806 is to continuously capture distance information and provide these results via the I²C interface. For low duty cycle applications, where power consumption is of prime importance the TMF8806 has an ultra-low power operation: Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **20** / 76 / **TMF8806** Functional description ## **6.3.1 Ultra low-power operation** **Figure 17: Ultra low power operation schematic** The host control controls the TMF8806 in ultra low power operation via I²C and EN line. It powers down the TMF8806 as long as possible between measurements. See flowchart in Figure 18. **Figure 18: Ultra low power operation flowchart** Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **21** / 76 / **TMF8806** Functional description The ultra-low power operation can be combined with any distance mode from section 6.4. ## **6.4 Distance modes** Following distance modes can be selected: - Short range mode with maximum distance 20 cm; especially useful for power savings if an application only needs to detect a close object. - 2.5m mode = default mode - 5m mode **Table 6: Distance mode overview** |**Distance mode**|**Maximum distance**|**Configured by**|**Notes**| |---|---|---|---| |||_distanceEnabled_=0,|| |Short range|200 mm|_vcselClkDiv2_=0,|Use for lowest power| |||_distanceMode_=0|| |||_distanceEnabled_=1,|| |2.5 m mode|2500 mm|_vcselClkDiv2_=0 (or 1 if you use<br>spread spectrum),|Default mode| |||_distanceMode_=0|| |||_distanceEnabled_=1,|| |5 m mode|5000 mm|_vcselClkDiv2_=1,|Needs separate calibration data| |||_distanceMode_=1|| Example: If an application only uses 5 m mode, it only needs one calibration data set in this mode. ## **Attention:** Calibration needs to be done for each of the distance modes used in an application. Only short range and 2.5 m mode can use a common calibration. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **22** / 76 / **TMF8806** Functional description ## **6.5 Optical stack configurations** The TMF8806 has three configurations, which support different optical stacks: **Table 7: Optical stack configurations overview** |**Optical stack**<br>**configurations**|**Typical optical stack(1)**|**Minimum**<br>**distance**|**Configured by**|**Notes**| |---|---|---|---|---| ||0.5 mm airgap|||| |Default|0.55 mm cover glass|10 mm|_spadSelect_=0|Default setup| ||Rubber boot|||| |Large airgap|2.5 m mode: 1 mm airgap<br>5 m mode: 0.5 mm airgap<br>0.5 mm cover glass|20 mm|_spadSelect_=1|For designs with<br>larger airgap| |Thick cover glass|0 mm airgap<br>3.2 mm cover glass|40 mm|_spadSelect_=2|For designs with<br>zero airgap and<br>thick cover glass| - (1) These are only examples of optical stack setups. See ams OSRAM optical design guide (ODG) for details. The optical crosstalk shall always be within the allowed range as shown in the ODG. ## **Attention:** Calibration needs to be done for each of the optical stack configurations used in an application. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **23** / 76 / **TMF8806** Functional description ## **6.6 EMC performance enhancements** **Figure 19: Blocks with EMC performance enhancements highlighted** TMF8806 internally uses charge pumps (VCSEL CP and SPAD CP) for power management. These blocks are switching capacitors at high frequency to obtain higher voltages and therefore emit EMC noise. To attenuate this effect, the TMF8806 allows to spread this EMC emission much more smoothy over a wider frequency range. **Table 8: Spread spectrum configurations** |**Spread spectrum configured by**|**Affected block**|**Notes**| |---|---|---| |Register_SpreadSpectrumSpadChargePump_:<br>_amplitude_: Set to 15|SPAD charge pump|No side effects other than reducing<br>EMC noise| |_config_: Set to 1||| |Register_SpreadSpectrumVcselChargePump_<br>_amplitude_: Set to 15|VCSEL charge pump|No side effects other than reducing<br>EMC noise| |_config_: Set to 1||| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **24** / 76 / **TMF8806** Functional description |**Spread spectrum configured by**|**Affected block**|**Notes**| |---|---|---| |Register_vcselClkSpreadSpecAmplitude_<br>Valid range:<br>0 = no spread spectrum|VCSEL driver|For 2.5m mode, vcselClkDiv2=1 is<br>recommended, otherwise<br>maximum distance is reduced<br>For 5m distance mode, maximum| |1..3 = amplitude of spread spectrum||distance is reduced.| ## **6.7 I/O voltage selection** TMF8806 allows to use different I/O voltages. During startup[1] of TMF8806, the device checks the voltage on pin GPIO0 and compares it against V1v2_threshold. If the voltage is below the threshold, 1.2 V I/O voltage, otherwise 1.8 V to 3.3 V I/O voltage is used. **Figure 20: I/O voltage selection logic** Once the I/O voltage selection is done, the pin GPIO0 can be used as a normal GPIO pin. > 1 Startup happens after the rising edge of EN signal. If EN is connected to VDD, it is the rising edge of VDD. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **25** / 76 / **TMF8806** Functional description **Information:** As I/O voltage selection status is stored inside a memory cell, this information is lost when EN=0 or VDD is powered down and it is performed again on the next startup. ## **6.8 Ranging acquisition timing** The typical ranging acquisition timing operates according to following timing diagram: **Figure 21: Ranging timing diagram** Ranging period is defined by _repetitionPeriodMs_ and the wait time is adjusted accordingly. Ranging active is defined by the number of iterations (register _kIters_ ) configured and the VCSEL clock frequency. If ranging time gets longer than _repetitionPeriodMs_ , wait time is omitted. In this case, ranging period is equal to ranging time and _repetitionPeriodMs_ is ignored. ## **6.9 Algorithm performance** The following section only applies for calibrated devices and in-application oscillator calibration using the reference driver. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **26** / 76 / **TMF8806** Functional description The TMF8806 is embedded in the application using a 0.38 mm airgap and a glass with an IR ink with >90 % transmissivity. The glass thickness is 0.5 mm. A rubber boot or additional mask on the opaque ink is implemented according to TMF8806 optical design guide (external document). ## **6.9.1 Customer factory calibration** To achieve the performance described in the next sections, a calibration of the algorithm needs to be performed (command = 0x0A). The TMF8806 shall be embedded in the final application and the cover glass including the IR ink needs to be assembled. The calibration test shall be done in a housing with minimal ambient light and no target within 40 cm in field of view of the TMF8806. The TMF8806 shall be configured as it is used in the final application – this applies for distance modes (see section 6.4), optical stack configurations (see section 6.5) and _spadDeadTime_ settings. If more than one mode or configuration is used in an application, separate calibration data sets are required. The TMF8806 generates a calibration data set which shall be permanently stored on the host. On each power-up of the TMF8806 the calibration data set is sent by I²C to the TMF8806 prior to execution of any algorithms (command=0x02). ## **6.9.2 Algorithm timings and performance parameters** The TMF8806 can adjust the number of iterations and detection threshold using registers _kiters_ and _threshold_ . A default mode is defined as having 900 k iterations, 2.5 m maximum distance and _threshold_ =0 (internally 6 will be used instead). The different timings are shown in section 4.1 on page 12 and described in section 6.8. The algorithm reports distance information of the closest object in 1 mm steps. Using the timings described above, the performance as shown in section 4.1 on page 12 is achieved. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **27** / 76 / **TMF8806** Functional description ## **6.10 VCSEL** Internal protection ensures no single point of failure will cause the VCSEL to violate the Class 1 Laser Safety. - Laser Safety Class 1 - • VCSEL Pulse Rep Rate 26.6 ns (37.6 MHz) If _vcselClkDiv2_ =1, the frequency is divided by two to 53.2 ns (18.8 MHz) ## **6.11 Typical optical characteristics** **Table 9: VCSEL field of illumination (FOI)** |**Definition**|**VCSEL field of illumination (FOI)**| |---|---| |1/e^2|19º| |Full width from 5% of maximum up to maximum|21º| |Full width from 1% of maximum up to maximum|25º| **Table 10: TOF sensor field of view (FOV)** |**Optical stack configuration**|**Short range (<20cm)**|**Long range**| |---|---|---| |Default|52º|30º| |Large airgap or thick cover glass|30º|30º| The SPAD FoV angular response uses the full TMF8806 SPADs only for short distances and default mode. The SPAD FoV is reduced when the TMF8806 operates in any other mode. This helps to improve ambient light tolerance[2] and allows operating the device with higher amounts of crosstalk. > 2 It depends on the size and reflectivity of the object if TMF8806 algorithm detects off-axis objects. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **28** / 76 / **TMF8806** Functional description ## **Figure 22: FOI/FOV of TMF8806 (used 1/e^2 for FOI as example)** ## **6.11.1 Filter characteristics** - FWHM 114 nm - Passband center wavelength 940 nm - Stopband wavelengths 350 nm – 883 nm, 997 nm – 1100 nm ## **6.12 I²C protocol** The TMF8806 is controlled by an I²C bus, one interrupt pin and two GPIO pins. Additionally see ams OSRAM device driver and/or application note TMF8806_Host_Driver_Communication_*.pdf for a detailed explanation of the I²C communication itself. The device uses I²C serial communication protocol for communication. The device supports 7- bit chip addressing (default: 0x41) and standard, fast mode and fast mode plus modes. Read and Write transactions comply with the standard set by Philips (now NXP). For a complete description of the I²C protocol, please review the NXP I²C design specification. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **29** / 76 / **TMF8806** Functional description **Figure 23: I²C timings** **==> picture [432 x 111] intentionally omitted <==** **----- Start of picture text -----**<br> t [R] t [F] t [LOW ]<br>SCL<br>tHIGH S<br>P S tHD:STA tHD:DAT tSU:DAT tSU:STA Sr t SU:STO P<br>VIH<br>SDA tBUF VIL<br>Stop Start<br>**----- End of picture text -----**<br> The TMF8806 support following I²C operating modes: - Standard mode – up to 100 kBit/s - Fast-mode – up to 400 kBit/s - Fast-mode-plus – up to 1 MBit/s **Table 11: I²C symbol definition** |**Symbol**|**Definition**|**RW**|**Note**| |---|---|---|---| |S|Start condition after stop|R|1-bit| |Sr|Repeated start (start condition end without preceding stop<br>condition)|R|1-bit| |ADR|Slave address 7 bits = default 0x41|R|Slave address| |WA|Word address|R|8-bit| |A|Acknowledge|W|1-bit| |N|No Acknowledge|R|1-bit| |Data|Data/write|R or W|8-bit| |Data(n)|Data/read|W|8-bit| |P|Stop condition|R|1-bit| |WA++|Slave increment word address|R|During acknowledge| Internal to the device, an 8-bit buffer stores the register address location of the byte to read or write. This buffer auto-increments upon each byte transfer and is retained between transaction events (i.e. valid even after the master issues a P (Stop condition) and the I²C bus is released). During consecutive Read transactions, the future/repeated I²C Read transaction may omit the memory address byte normally following the chip address byte; the buffer retains the last register address +1. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **30** / 76 / **TMF8806** Functional description A Write transaction consists of an S, ADR, 0 (R/W flag), WA, Data (n), and P. Following each byte (9[th] clock pulse) the slave places an A or NA (ACK/NACK) on the bus. If NACK is transmitted by the slave, the master may issue a P. **Figure 24: Byte write and page write commands** **==> picture [430 x 93] intentionally omitted <==** **----- Start of picture text -----**<br> S ADRSW 0 A WA A Data A P<br>Write WA++<br>S ADRSW 0 A WA A Data 1 A .. A Data n A P<br>I PROPPEH TT PPDEPIE POPPEOET | DPPEOOT | PPOOOOON 1B<br>Write WA++ Write WA++ Write WA++<br>**----- End of picture text -----**<br> A Read transaction consists of a S, ADR, 0 (R/W flag), WA, Sr, ADR, 1 (R/W flag), Data(n) and P. Following all but the final byte the master places an A (ACK) on the bus (9[th] clock pulse). Termination of the Read transaction is indicated by an N (NACK) being placed on the bus by the master, followed by STOP. **Figure 25: Random read and sequential read command (example shows 2 bytes)** **==> picture [464 x 182] intentionally omitted <==** **----- Start of picture text -----**<br> S<br>S ADRSW 0 A WA A ADRSR 1 A Data N P<br>r<br>Read WA++ WA++<br>S<br>S ADRSW 0 A WA A ADRSR 1 A Data 1 A ...Data n N P<br>r<br>Tl |<br>Read WA++ Read WA++ WA++<br>ed<br>The default I²C address is 0x41. The address can be changed after power-up. Use the enable<br>pin to enable only one device at a time to provide unique device addresses – see section<br>8.1.1.<br>**----- End of picture text -----**<br> The device is I3C tolerant – therefore it can coexist with I3C devices on the same bus. TMF8806 communicates in legacy I²C mode of the I3C bus. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **31** / 76 / **TMF8806** Register description ## 7 Register description ## **7.1.1 APPID register (Address 0x00)** ## **Table 12: APPID register** |**Addr: 0x00**|**Addr: 0x00**|**APPID**||| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Currently running application:| |7:0|_appid_|0|RW|0xC0 App0 – Measurement application running| |||||0x80 bootloader running| ## **7.1.2 APPREV_MAJOR register (Address 0x01)** ## **Table 13: APPREV_MAJOR register** |**Addr: 0x01**|**Addr: 0x01**|**APPREV_MAJOR**|**APPREV_MAJOR**|**APPREV_MAJOR**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_apprevMajor_|0|RW|Application major revision| ## **7.1.3 APPREQID register (Address 0x02)** ## **Table 14: APPREQID register** |**Addr: 0x02**|**Addr: 0x02**|**APPREQID**|**APPREQID**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Application that shall be started, set this to| |7:0|_appReqid_|0|RW|0x80 … bootloader<br>0xC0 … App0 – measurement application and wait until| |||||register 0x00 (APPID) shows this as application.| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **32** / 76 / **TMF8806** Register description ## **7.1.4 ENABLE register (Address 0xE0)** ## **Table 15: ENABLE register** |**Addr: 0xE0**|**Addr: 0xE0**|**ENABLE**|**ENABLE**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Write a '1' here to reset CPU. This generates global reset, fully| |7|_cpu_reset_|0|RW_SC|resetting CPU and all CPU registers. The bit resets itself, no need to| |||||explicitly clear it.| |||||CPU is ready to handle I²C - if this bit is zero, then only the registers| |6|_cpu_ready_|0|RO|0xe0 and above are usable, the memory mapped I²C space is not| |||||used.| |||||1=Activate oscillator; 0=Ask CPU to go to standby| |||||Activating the oscillator is implemented in hardware. Whenever this| |||||register is '0' and a '1' is being written, the oscillator is being started| |||||and CPU receives a PON1 interrupt. It is implemented in the| |||||bootloader to execute a reset at this point, but the application goes to| |0|_pon_|1|R_PUSH|an IDLE state.<br>De-activating the oscillator is a software assisted process. It is| |||||important that the CPU powers down all modules properly before| |||||turning off the oscillator, therefore this is implemented in firmware. So| |||||writing a '0' to this register will trigger an internal CPU interrupt. The| |||||firmware, after powering down everything, sets the device into standby| |||||state.| ## **7.1.5 INT_STATUS register (Address 0xE1)** ## **Table 16: INT_STATUS register** |**Addr: 0xE1**|**Addr: 0xE1**|**INT_STATUS**|**INT_STATUS**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Raw histogram available interrupt for App0; asserted when a raw| |1|_int2_|0|R_PUSH1|histogram can be retrieved from I²C.<br>**int2 status**. If bit is asserted, and int2_enab is asserted as well, then the| |||||INT pin will be pulled low. Writing a '1' here will clear int1 condition.| |||||Object detection interrupt for App0; asserted when a result from object| |||||detection is available.| |0|_int1_|0|R_PUSH1|**int1 status**. If bit is asserted, and int1_enab is asserted as well, then the<br>INT pin will be pulled low. Writing a '1' here will clear int1 condition.| |||||**Note:**An interrupt is raised on every result from object detection| |||||including no-target unless persistence is set > 0| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **33** / 76 / **TMF8806** Register description ## **7.1.6 INT_ENAB register (Address 0xE2)** **Table 17: INT_ENAB register** |**Addr: 0xE2**|**Addr: 0xE2**|**INT_ENAB**|**INT_ENAB**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |1|_int2_enab_|0|RW|0=disabled, 1=enabled -> INT output is active if int2 flag is "1".| |0|_int1_enab_|0|RW|0=disabled, 1=enabled -> INT output is active if int1 flag is "1".| ## **7.1.7 ID register (Address 0xE3)** ## **Table 18: ID register** |**Addr: 0xE3**|**Addr: 0xE3**|**ID**||| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |5:0|_id_|09h|RO|Chip ID, reads 09h – do not rely on register bits 6 and 7 of this register.| ## **7.1.8 REVID register (Address 0xE4)** ## **Table 19: REVID register** |**Addr: 0xE4**|**Addr: 0xE4**|**REVID**||| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |2:0|_rev_id_|0|RO|Chip revision ID| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **34** / 76 / **TMF8806** Register description ## **7.2 App0 registers** Following registers are only available if _appid_ =0xC0 (App0): ## **7.2.1 CMD_DATA9 to 0 registers (Address 0x06-0x0F)** For detailed description about the content of cmd_data9…cmd_data0, see COMMAND register (Address 0x10). All registers are 8 bits wide: **Table 20: CMD_DATA9 to 0 registers** **Addr: 0x06-0x0F CMD_DATA9 to 0 registers** |**Addr**|**Name**|**Rst**|**Type**|**Description**| |---|---|---|---|---| |0x06|_cmd_data9_|||Command data 9| |0x07|_cmd_data8_|||Command data 8| |0x08|_cmd_data7_|||Command data 7| |0x09|_cmd_data6_|||Command data 6| |0x0A|_cmd_data5_|||Command data 5| |||0|W|| |0x0B|_cmd_data4_|||Command data 4| |0x0C|_cmd_data3_|||Command data 3| |0x0D|_cmd_data2_|||Command data 2| |0x0E|_cmd_data1_|||Command data 1| |0x0F|_cmd_data0_|||Command data 0| ## **7.2.2 COMMAND register (Address 0x10)** ## **Table 21: COMMAND register** |**Addr: 0x10**|**Addr: 0x10**|**COMMAND**|**COMMAND**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Command execution control register. Individual commands are| |||||described in the following tables.| |7:0|_command_|0|RO|Direct the device to control or select contents of the registers from<br>0x20...0xDF| |||||Upon successful execution of a command, this register reads back| |||||0x00 and command is copied to register_previousCommand_.| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **35** / 76 / **TMF8806** Register description **Table 22: Command 0x00 – no command** |**Register 0x10**|**Register 0x10**|**Command 0x00 – no command**| |---|---|---| |0x00||No command| |**Table 23: Command 0x02 – start measurement**|**Table 23: Command 0x02 – start measurement**|**Table 23: Command 0x02 – start measurement**| |---|---|---| |**Register 0x10**|**Command 0x02 – start measurement**|| ||Set flag to perform target distance measurement with 10 bytes configuration**cmd_data9**to|| ||**cmd_data0**:|| ||**cmd_data9**=_SpreadSpectrumSpadChargePump_; default 0.|| ||Configuration of EMC enhancement for SPAD charge pump. For allowed settings see section|| ||6.6.|| ||**Bits**|**Definition**| ||3:0|_amplitude_: To enable the SPAD charge pump’s maximum spread spectrum, set the<br>value to 15. For disabling, set it to 0.| ||5:4|_config_: Set to 1 to use spread spectrum of SPAD charge pump otherwise set to 0.| ||7:6|Set to ‘0’| ||**cmd_data8**=_SpreadSpectrumVcselChargePump_; default 0.|| ||Configuration of EMC enhancement for VCSEL charge pump. For allowed settings see section|| ||6.6.|| ||**Bits**|**Definition**| ||3:0|_amplitude_: To enable the VCSEL charge pump’s maximum spread spectrum, set the<br>value to 15. For disabling, set it to 0.| ||5:4|_config_: Set to 1 to use spread spectrum of VCSEL charge pump otherwise set to 0.| |0x02|7:6|Set to ‘0’| ||**cmd_data7**= Bit mask which calibration/state data was downloaded from the host to TMF8806|| ||prior to setting this command:|| ||**Bits**|**Definition**| ||0|_factoryCal_: When 1 data from register 0x20 onward includes factory calibration| ||1|_algState_: If set, also set_factoryCal_=1. Data from register 0x20 onwards includes<br>factory calibration and algorithm state.| ||2|Set to ‘0’| |||_spadDeadTime_: SPAD recovery time, 0=longest, 7=shortest dead time; if unsure use| ||5:3|default=4; shorter SPAD dead time (higher number of the register_spadDeadTime_)| |||improve sunlight performance but degrade short range accuracy| ||7:6|_spadSelect:_Optical stack configuration – see section 6.5.| ||**cmd_data6**= Bit mask which algorithm is used|| ||**Bits**|**Definition**| ||0|Set to ‘0’| ||1|_distanceEnabled_: If ‘0’ only short range mode is operating – see section 6.4| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **36** / 76 / **TMF8806** Register description **Register 0x10 Command 0x02 – start measurement** **==> picture [381 x 570] intentionally omitted <==** **----- Start of picture text -----**<br> |||| |---|---|---| |vcselClkDiv2|: If set, operates the VCSEL clock at half frequency - see section 6.10 -| |2|and doubles the ranging active time where the VCSEL is enabled. It is recommended| |to use together with EMC performance enhancements see section 6.6.| |3|distanceMode|: When 0 measure up to 2.5m. When 1 measure up to 5m.| |immediateInterrupt|– When 1 target distance measurement will immediately report to| |4|the host an interrupt of the capturing caused by a GPIO event; when 0, will only report| |to the host when target distance measurement was finished| |6-5|Reserved; set to 0.| |algKeepReady|- When 1 do not go to standby between measurements (faster| |7| |measurement times but higher current consumption)| |cmd_data5|= Bits for GPIO control| |Bits|Definition| |GPIO0 settings –|gpio0|:| |0 - Disabled| |1 - Input: Active low disables collection, immediately abandoning current| |measurement. Returning to high restarts new measurement| |2 - Input: Active high disables collection, immediately abandoning current| |measurement. Returning to low restarts new measurement| |3 - Output: VCSEL pulse output – see cmd_data4| |4 - Output low (default after startup)| |3:0| |5 - Output high| |6 - Output is high when an object was detected otherwise low| |7 - Output is low when an object was detected otherwise high| |8 - Output is high-Z when an object was detected otherwise low (open drain, low on| |no-detect)| |9 - Output is low when an object was detected otherwise high-Z (open drain, low on| |detect)| |10…15 - Reserved, do not use| |GPIO1 settings –|gpio1|:| |0 - Disabled| |1 - Input: Active low disables collection, immediately abandoning current| |measurement. Returning to high restarts new measurement| |2 - Input: Active high disables collection, immediately abandoning current| |measurement. Returning to low restarts new measurement| |3 - Output: VCSEL pulse output – see cmd_data4| |4 - Output low (default after startup)| |7:4| |5 - Output high| |6 - Output is high when an object was detected otherwise low| |7 - Output is low when an object was detected otherwise high| |8 - Output is high-Z when an object was detected otherwise low (open drain, low on| |no-detect)| |9 - Output is low when an object was detected otherwise high-Z (open drain, low on| |detect)| |10…15 - Reserved, do not use| **----- End of picture text -----**<br> Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **37** / 76 / **TMF8806** Register description |**Register 0x10**|**Register 0x10**|**Command 0x02 – start measurement**| |---|---|---| |||**cmd_data4**- _alsDelay100µs_- If cmd_data5 enables VCSEL pulse output for GPIO0 and/or| |||GPIO1, cmd_data4 sets its timings as follows:| |||**Value**<br>**Meaning**| |||0<br>No signal| |||1<br>GPIOx, rises 0 µs time before VCSEL pulse starts| |||2<br>GPIOx rises 100 µs before VCSEL pulse| |||3<br>GPIOx rises 200 µs before VCSEL pulse and so on| |||The falling edge of GPIOx happens at the same time the VCSEL stops emitting light.| |||**cmd_data3**= Object detection threshold and spread spectrum mode| |||**Bits**<br>**Definition**| |||5:0<br>_threshold_- Object detection threshold – use 0 as default value| |||_vcselClkSpreadSpecAmplitude_: If set, avoids aliasing of objects into measurement| |||7:6<br>range and improving EMC emission – see section 6.6. Use together with<br>_vcselClkDiv2_=1 otherwise maximum distance is reduced and false objects at far| |||distance can occur.| |||**cmd_data2**=_repetitionPeriodMs_in mSec, use 0 for single measurement, 0xFE for 1000 ms| |||and 0xFF for 2000 ms; if the repetition period is set lower than the ranging time for this mode,| |||the TMF8806 runs at it maximum possible speed (best effort approach) – see section 6.8.| |||**cmd_data1**=_kIters_- Number of iterations, low byte; 1 LSB=1 k| |||**cmd_data0**=_kIters_- Number of iterations, high byte; 1 LSB=1 k*256| |||Once a measurement is finished, the interrupt is asserted. If_int1_enab_=1 the pin INT is| |||asserted as well. Additionally, the transaction ID tid is updated.| **Table 24: Command 0x08 – write additional configuration** |**Register 0x10**|**Register 0x10**|**Command 0x08 – write additional configuration**| |---|---|---| |||Write additional configuration for**cmd_data4**=_persistence_8-bit value for interrupt suppression| |||**Value**<br>**Definition**| |||0<br>Any result (detect and no-detect) will trigger an interrupt| |||An interrupt will only be triggered if the detected| |0x08||1-255<br>distance is >=_low_threshold_in [mm] and<br>distance <=_high_threshold_in [mm] and| |||the detection happened at least <_persistence_> consecutive times| |||**cmd_data3**=_low_threshold_8-bit LSB value in [mm]| |||**cmd_data2**=_low_threshold_8-bit MSB value in [mm] * 256| |||**cmd_data1**=_high_threshold_8-bit LSB value in [mm]| |||**cmd_data0**=_high_threshold_8-bit MSB value in [mm] * 256| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **38** / 76 / **TMF8806** Register description **Table 25: Command 0x09 – read additional configuration** |**Register 0x10**|**Command 0x09 – read additional configuration**| |---|---| ||Read additional configuration for application.| |0x09|After the command is executed,_persistence_,_low_threshold_and_high_threshold_are stored| ||in registers 0x20 to 0x24 – see section 7.7 Interrupt suppression registers| |**Table 26: Command 0x0A – customer factory calibration**|**Table 26: Command 0x0A – customer factory calibration**| |**Register 0x10**|**Command 0x0A – customer factory calibration**| ||Customer factory calibration - described in section 6.9.1.| ||**cmd_data9**…**cmd_data0**needs to be configured as with command=0x02 before factory| ||calibration is executed. This is required as calibration is changing depending on| |0x0A|configuration like distance modes – see section 6.4.| ||Perform factory calibration in the final customer application including cover glass, no| ||ambient light and no target.| ||The result from the factory calibration is stored from register 0x20 onwards (14 bytes).| |**Table 27: Command 0x0F – gpio control**|**Table 27: Command 0x0F – gpio control**| |**Register 0x10**|**Command 0x0F – gpio control**| ||Set gpio control setting without performing a measurement as commands 0x02 would do:| ||**cmd_data0**= Bits for GPIO control| ||**Bits**<br>**Definition**| ||GPIO0 settings –_gpio0_:| ||0 - Disabled| ||1 - Input: Active low disables collection, immediately abandoning current| ||measurement. Returning to high restarts new measurement.| ||2 - Input: Active high disables collection, immediately abandoning current| ||measurement. Returning to low restarts new measurement.| |0x0F|3 - Output: VCSEL pulse output – see cmd_data4| ||3:0<br>4 - Output low (default after startup)<br>5 - Output high| ||6 - Output is high when an object was detected otherwise low| ||7 - Output is low when an object was detected otherwise high| ||8 - Output is high-Z when an object was detected otherwise low (open drain, low| ||on no-detect)| ||9 - Output is low when an object was detected otherwise high-Z (open drain, low| ||on detect)| ||10…15 - Reserved, do not use| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **39** / 76 / **TMF8806** Register description |**Register 0x10**|**Register 0x10**|**Command 0x0F – gpio control**|**Command 0x0F – gpio control**| |---|---|---|---| ||||GPIO1 settings –_gpio1_:| ||||0 - Disabled| ||||1 - Input: Active low disables collection, immediately abandoning current| ||||measurement. Returning to high restarts new measurement| ||||2 - Input: Active high disables collection, immediately abandoning current| ||||measurement. Returning to low restarts new measurement| ||||3 - Output: VCSEL pulse output – see cmd_data4| |||7:4|4 - Output low (default after startup)| ||||5 - Output high| ||||6 - Output is high when an object was detected otherwise low| ||||7 - Output is low when an object was detected otherwise high| ||||8 - Output is high-Z when an object was detected otherwise low (open drain, low| ||||on no-detect)| ||||9 - Output is low when an object was detected otherwise high-Z (open drain, low| ||||on detect)| ||||10…15 - Reserved, do not use| **Table 28: Command 0x30 – enable histogram readout** |**Register 0x10**|**Register 0x10**|**Command 0x30 – enable histogram readout**|**Command 0x30 – enable histogram readout**| |---|---|---|---| |||Enable histogram readout; the internal state machine will stop when a histogram (e.g.|| |||calibration) is available and wait for readout by the host. If the selected histogram is|| |||readout, the host shall continue the state machine by sending command 0x32.|| |||**cmd_data3**= Bitmask for the histograms to be readout:|| |||**Bits**|**Definition**| |||0|Always set to ‘0’| |||1|Set to get electrical calibration histograms| |||3:2|Always set to ‘00’| |||4|Set to get short distance histograms| |0x30||6:5|Always set to ‘00’| ||||Set to get distance measurement histograms.| |||7|Bin 127 respectively bin 255 is used as scaling factor for this type of histograms.| ||||The scaling factor is 0 for no scaling, 1 for 2x, 2 for 4x and so on.| |||**cmd_data2**= Set to 0x00|| |||**cmd_data1**= = Bitmask for pileup correct histograms readout:|| |||**Bits**|**Definition**| |||0|Set to get pileup corrected distance measurement histograms| |||1|Set to get pileup corrected sum histogram| |||7:2|Always set to 0| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **40** / 76 / **TMF8806** Register description |**Register 0x10**|**Command 0x30 – enable histogram readout**| |---|---| ||**cmd_data0**= Set to 0x00| ||Once the bitmask is set, the device is programmed to stop when the histogram is available.| ||Set command=0x04 0x03 to perform the measurement.| |**Table 29: Command 0x32 – continue histogram readout**|**Table 29: Command 0x32 – continue histogram readout**| |**Register 0x10**|**Command 0x32 – continue histogram readout**| |0x32|After the host has readout the histogram, continue with internal processing.| |**Table 30: Command 0x47 – read out serial number**|**Table 30: Command 0x47 – read out serial number**| |**Register 0x10**|**Command 0x47 – read out serial number**| |0x47|Read out serial number – results see section 7.6 Serial number readout| |**Table 31: Command 0x49 – change the I²C address**|**Table 31: Command 0x49 – change the I²C address**| |**Register 0x10**|**Command 0x49 – change the I²C address**| ||Change the I²C address of TMF8806| ||**cmd_data0**= Condition if I²C address is changed; program the GPIOs input/output| ||accordingly before using this feature (commands 0x02 or 0x0F):| ||**Bits**<br>**Definition**| ||0<br>mask_gpio0| ||1<br>mask_gpio1| ||2<br>value_gpio0| |0x49|3<br>value_gpio1| ||7:4<br>always set to 0| ||The I²C address change is executed only if (mask_gpio1 & GPIO1) << 1 + (mask_gpio0 &| ||GPIO0) == value_gpio1 << 1 + value_gpio0 where GPIO1 and GPIO0 is the status on pin| ||GPIO1 and pin GPIO0. If this conditional programming is not used, set cmd_data0 to 0x00.| ||**cmd_data1**= New I²C address| ||**Bits**<br>**Definition**| ||0<br>Set to ‘0’| ||7:1<br>New I²C address to be used| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **41** / 76 / **TMF8806** Register description **Table 32: Command 0x80 – read histogram** |**Register 0x10**|**Register 0x10**|**Command 0x80 – read histogram**| |---|---|---| |||Start histogram readout; see host communication guide document for details.| |0x80||Notes:<br>At the end of this transaction, registers 0x20-0x9F,_register_contents_and_tid_will be| |||updated.| |**Table 33: Command 0xFF – stop command**|**Table 33: Command 0xFF – stop command**| |---|---| |**Register 0x10**|**Command 0xFF – stop command**| |0xFF|Stop whatever TMF8806 is doing as soon as possible and reenter the idle state. This<br>command will stop continuous measurement.| ## **7.2.3 PREVIOUS register (Address 0x11)** ## **Table 34: PREVIOUS register** |**Addr: 0x11**|**Addr: 0x11**|**PREVIOUS**|**PREVIOUS**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_previousCommand_|0|RO|Previous command that was executed or current for measurement<br>command 0x02 and factory calibration command 0x0A.| ## **7.2.4 APPREV_MINOR register (Address 0x12)** ## **Table 35: APPREV_MINOR register** |**Addr: 0x12**|**Addr: 0x12**|**APPREV_MINOR**|**APPREV_MINOR**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_appRevMinor_|0|RO|Application minor revision| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **42** / 76 / **TMF8806** Register description ## **7.2.5 APPREV_PATCH register (Address 0x13)** ## **Table 36: APPREV_PATCH register** |**Addr: 0x13**|**Addr: 0x13**|**APPREV_PATCH**|**APPREV_PATCH**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_appRevPatch_|0|RO|Application patch number| ## **7.2.6 STATE register (Address 0x1C)** ## **Table 37: STATE register** |**Addr: 0x1C**|**Addr: 0x1C**|**STATE**|||| |---|---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**|| |||||State of current operation.|| |7:0|_state_|0|RO|**Reading**|**Meaning**| |||||2|Error| |||||Any other value|Ok| ## **7.2.7 STATUS register (Address 0x1D)** ## **Table 38: STATUS register** |**Addr: 0x1D**|**Addr: 0x1D**|**STATUS**|||| |---|---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**|| |||||Status or current general operation.|| |7:0|_status_|0|RO|**Reading**|**Meaning**| |||||00h-0Fh|OK| |||||10h-FFh|Error| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **43** / 76 / **TMF8806** Register description ## **7.2.8 REGISTER_CONTENTS register (Address 0x1E)** ## **Table 39: REGISTER_CONTENTS registers** |**Addr: 0x1E**|**Addr: 0x1E**|**REGISTER_CONTENTS**|**REGISTER_CONTENTS**|**REGISTER_CONTENTS**|| |---|---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**|| |||||Current contents of the I²C RAM from 0x20 to 0xDF; the coding is|| |||||as follows:|| |||||**Reading**|**Meaning**| |||||0Ah|Calibration data| |||||47h|Serial number| |||||55h|Results for commands 0x02| |7:0|_register_contents_|0|RO||Raw histogram data where| ||||||80h = TDC0, bin 0…63| ||||||81h = TDC0, bin 64…127| |||||80h-93h|82h = TDC0, bin 128...195<br>83h = TDC0, bin 196...255| ||||||84h = TDC1, bin 0…63| ||||||…| ||||||93h = TDC4, bin 196…255| ## **7.2.9 TID register (Address 0x1F)** ## **Table 40: TID register** |**Addr: 0x1F**|**Addr: 0x1F**|**TID**||| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_tid_|0|RO|Unique transaction ID, changes with every update of register map by TOF.| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **44** / 76 / **TMF8806** Register description ## **7.3 Object detection results** Following registers are only available if _appid_ =0x55 (Object detection results of _command_ =0x02): ## **7.3.1 RESULT_NUMBER register (Address 0x20)** ## **Table 41: RESULT_NUMBER register** |**Addr: 0x20**|**Addr: 0x20**|**RESULT_NUMBER**|**RESULT_NUMBER**|**RESULT_NUMBER**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_result_num_|0|RO|Result number incremented every time there is a unique answer.| ## **7.3.2 RESULT_INFO register (Address 0x21)** ## **Table 42: RESULT_INFO register** |**Addr: 0x21**|**Addr: 0x21**|**RESULT_INFO**|**RESULT_INFO**||| |---|---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**|**Description**| |||||When_immediateInterrupt_== 1|| |||||Will indicate the status of the measurement:|Will indicate the status of the measurement:| |||||**Reading**|**Meaning**| |||||0|Short distance capture interrupted, using previous short<br>distance only result| |||||1|Short distance capture interrupted, using previous short<br>and long distance result| |7:6|_measStatus_|0|RO|2|Long distance capture interrupted; result is from short<br>distance algorithm only| |||||3|Complete result (short and long distance algorithm)| |||||When algImmediateInterrupt == 0|| |||||Will indicate the status of the measurement:|Will indicate the status of the measurement:| |||||**Reading**|**Meaning**| |||||0|Measurement was not interrupted| |||||1|Reserved| |||||2|Measurement was interrupted (delay) by GPIO interrupt| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **45** / 76 / **TMF8806** Register description |**Addr: 0x21**|**Addr: 0x21**|**RESULT_INFO**|**RESULT_INFO**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||3<br>Reserved| |||||Reliability of object - valid range 0...63 where 63 is best where| |||||0 … no object detected| |5:0|_reliability_|0|RO|1 … result from short range algorithm but device was**not**calibrated| |||||10 … result from short range algorithm and device is calibrated| |||||any other value … result from long range algorithm.| ## **7.3.3 DISTANCE_PEAK_0 register (Address 0x22)** ## **Table 43: DISTANCE_PEAK_0 register** |**Addr: 0x22**|**Addr: 0x22**|**DISTANCE_PEAK_0**|**DISTANCE_PEAK_0**|**DISTANCE_PEAK_0**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_distance_peak[7:0]_|0|RO|Distance to the peak in [mm] of the object, least significant byte| ## **7.3.4 DISTANCE_PEAK_1 register (Address 0x23)** ## **Table 44: DISTANCE_PEAK_1 register** |**Addr: 0x23**|**Addr: 0x23**|**DISTANCE_PEAK_1**|**DISTANCE_PEAK_1**|**DISTANCE_PEAK_1**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_distance_peak[15:8]_|0|RO|Distance to the peak in [mm] of the object, most significant byte| ## **7.3.5 SYS_CLOCK_0 register (Address 0x24)** The sys clock register is a running timer information – this value is counting upwards (and wraps around to 0 again) while the internal clock is running. As it is derived from the internal RC oscillator and distance information depends on its accuracy, it can be used to correct an algorithm result by comparing this clock with a more accurate clock inside the host. It is recommended to use several measurement cycles for this clock correction. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **46** / 76 / **TMF8806** Register description For correctly updating of these registers by TMF8806, an I²C blockread starting from address 0x1D until 0x27 shall be done[3] . **Table 45: SYS_CLOCK_0 register** |**Addr: 0x24**|**Addr: 0x24**|**SYS_CLOCK_0**|**SYS_CLOCK_0**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_sys_clock[7:0]_|0|RO|System clock/time stamp in units of 0.213 µs = 1 / 4.7 MHz| ## **7.3.6 SYS_CLOCK_1 register (Address 0x25)** ## **Table 46: SYS_CLOCK_1 register** |**Addr: 0x25**|**Addr: 0x25**|**SYS_CLOCK_1**|**SYS_CLOCK_1**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_sys_clock[15:8]_|0|RO|System clock/time stamp in units of 0.213 µs = 1 / 4.7 MHz| ## **7.3.7 SYS_CLOCK_2 register (Address 0x26)** ## **Table 47: SYS_CLOCK_2 register** |**Addr: 0x26**|**Addr: 0x26**|**SYS_CLOCK_2**|**SYS_CLOCK_2**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_sys_clock[23:16]_|0|RO|System clock/time stamp in units of 0.213 µs = 1 / 4.7 MHz| > 3 sys_clock is only valid if its LSB bit is one. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **47** / 76 / **TMF8806** Register description ## **7.3.8 SYS_CLOCK_3 register (Address 0x27)** ## **Table 48: SYS_CLOCK_3 register** |**Addr: 0x27**|**Addr: 0x27**|**SYS_CLOCK_3**|**SYS_CLOCK_3**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_sys_clock[31:24]_|0|RO|System clock/time stamp in units of 0.213 µs = 1 / 4.7 MHz| The algorithm state information is captured in the next registers. To allow resume of operation after power-off, algorithm state can be stored temporarily inside the host and once after poweron of TMF8806 restored to resume operation. ## **7.3.9 STATE_DATA_0 to 10 registers (Address 0x28-0x32)** ## **Table 49: STATE_DATA_0 to 10 registers** |**Addr: 0x28-0x32**|**Addr: 0x28-0x32**|**STATE_DATA registers**|**STATE_DATA registers**|**STATE_DATA registers**| |---|---|---|---|---| |**Addr**|**Name**|**Rst**|**Type**|**Description**| |0x28|_state_data_0_|||| |0x29|_state_data_1_|||| |0x2A|_state_data_2_|||| |0x2B|_state_data_3_|||| |0x2C|_state_data_4_|||Algorithm state data (11 Bytes) for reading from TMF8806 to host.<br>All registers are 8 bits wide and the content hold the current state of| |0x2D|_state_data_5_|0|RO|the algorithm. This is required especially for ultra low operation,| |0x2E|_state_data_6_|||where the algorithm state is transferred from TMF8806 to the host<br>before the TMF8806 enters power down – see section 6.3.1.| |0x2F|_state_data_7_|||| |0x30|_state_data_8_|||| |0x31|_state_data_9_|||| |0x32|_state_data_10_|||| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **48** / 76 / **TMF8806** Register description ## **7.3.10 TEMPERATURE register (Address 0x33)** **Table 50: TEMPERATURE register** |**Addr: 0x33**|**Addr: 0x33**|**TEMPERATURE**|**TEMPERATURE**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_temperature_|0|RO|8-bit signed integer of the TMF8806 sensor DIE junction<br>temperature in ºCelsius (e.g. “25” means 25 ºC)| Reference hits and object hits are used for information purposes of the target object and are only reported if a target is detected with the distance algorithm. ## **7.3.11 REFERENCE_HITS_0 register (Address 0x34)** **Table 51: REFERENCE_HITS_0 register** |**Addr: 0x34**|**Addr: 0x34**|**REFERENCE_HITS_0**|**REFERENCE_HITS_0**|**REFERENCE_HITS_0**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Sum of the reference SPADs hits during the distance| |7:0|_reference_hits[7:0]_|0|RO|measurement; zero if no object is detected or distance| |||||algorithm is not used| ## **7.3.12 REFERENCE_HITS_1 register (Address 0x35)** **Table 52: REFERENCE_HITS_1 register** |**Addr: 0x35**|**Addr: 0x35**|**REFERENCE_HITS_1**|**REFERENCE_HITS_1**|**REFERENCE_HITS_1**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Sum of the reference SPADs hits during the distance| |7:0|_reference_hits[15:8]_|0|RO|measurement; zero if no object is detected or distance| |||||algorithm is not used| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **49** / 76 / **TMF8806** Register description ## **7.3.13 REFERENCE_HITS_2 register (Address 0x36)** ## **Table 53: REFERENCE_HITS_2 register** |**Addr: 0x36**|**Addr: 0x36**|**REFERENCE_HITS_2**|**REFERENCE_HITS_2**|**REFERENCE_HITS_2**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Sum of the reference SPADs hits during the distance| |7:0|_reference_hits[23:16]_|0|RO|measurement; zero if no object is detected or distance| |||||algorithm is not used| ## **7.3.14 REFERENCE_HITS_3 register (Address 0x37)** ## **Table 54: REFERENCE_HITS_3 register** |**Addr: 0x37**|**Addr: 0x37**|**REFERENCE_HITS_3**|**REFERENCE_HITS_3**|**REFERENCE_HITS_3**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Sum of the reference SPADs hits during the distance| |7:0|_reference_hits[31:24]_|0|RO|measurement; zero if no object is detected or distance| |||||algorithm is not used| ## **7.3.15 OBJECT_HITS_0 register (Address 0x38)** ## **Table 55: OBJECT_HITS_0 register** |**Addr: 0x38**|**Addr: 0x38**|**OBJECT_HITS_0**|**OBJECT_HITS_0**|**OBJECT_HITS_0**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_object_hits[7:0]_|0|RO|Sum of the object SPADs hits during the distance measurement;<br>zero if no object is detected or distance algorithm is not used| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **50** / 76 / **TMF8806** Register description ## **7.3.16 OBJECT_HITS_1 register (Address 0x39)** ## **Table 56: OBJECT_HITS_1 register** |**Addr: 0x39**|**Addr: 0x39**|**OBJECT_HITS_1**|**OBJECT_HITS_1**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Sum of the object SPADs hits during the distance| |7:0|_object_hits[15:8]_|0|RO|measurement; zero if no object is detected or distance| |||||algorithm is not used| ## **7.3.17 OBJECT_HITS_2 register (Address 0x3A)** ## **Table 57: OBJECT_HITS_2 register** |**Addr: 0x3A**|**Addr: 0x3A**|**OBJECT_HITS_2**|**OBJECT_HITS_2**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Sum of the object SPADs hits during the distance| |7:0|_object_hits[23:16]_|0|RO|measurement; zero if no object is detected or distance| |||||algorithm is not used| ## **7.3.18 OBJECT_HITS_3 register (Address 0x3B)** ## **Table 58: OBJECT_HITS_3 register** |**Addr: 0x3B**|**Addr: 0x3B**|**OBJECT_HITS_3**|**OBJECT_HITS_3**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Sum of the object SPADs hits during the distance| |7:0|_object_hits[31:24]_|0|RO|measurement; zero if no object is detected or distance| |||||algorithm is not used| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **51** / 76 / **TMF8806** Register description ## **7.3.19 XTALK_MSB register (Address 0x3C)** ## **Table 59: XTALK_MSB register** |**Addr: 0x3C**|**Addr: 0x3C**|**XTALK_MSB**|**XTALK_MSB**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Crosstalk peak value MSB byte; only valid with minimal| |7:0|_xtalk_msb_|0|RO|ambient light and no target within 40 cm in field of view of the| |||||TMF8806.| ## **7.3.20 XTALK_LSB register (Address 0x3D)** ## **Table 60: XTALK_LSB register** |**Addr: 0x3D**|**Addr: 0x3D**|**XTALK_LSB**|**XTALK_LSB**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Crosstalk peak value LSB byte; only valid with minimal| |7:0|_xtalk_lsb_|0|RO|ambient light and no target within 40 cm in field of view of the| |||||TMF8806.| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **52** / 76 / **TMF8806** Register description ## **7.4 Calibration and algorithm state data exchange** These registers shall be pre-loaded by the host before command=0x02 is executed and _factoryCal_ =1. ## **7.4.1 FACTORY_CALIB_0 to 13 registers (Address 0x20-0x2D)** ## **Table 61: FACTORY_CALIB_0 to 13 registers** |**Addr: 0x20-0x2D**|**Addr: 0x20-0x2D**|**FACTORY_CALIB_0 to 13 registers – 14 Bytes, each register is 8 bits wide**|**FACTORY_CALIB_0 to 13 registers – 14 Bytes, each register is 8 bits wide**|**FACTORY_CALIB_0 to 13 registers – 14 Bytes, each register is 8 bits wide**| |---|---|---|---|---| |**Addr**|**Name**|**Rst**|**Type**|**Description**| |||||Factory calibration data| |0x20|_factory_calib_0_|||Bits [3:0] are format revision; current revision is 0x2| |||||Bits [7:4] are reserved.| |0x21|_factory_calib_1_|||Factory calibration data. Reserved.| |0x22|_factory_calib_2_|||Factory calibration data. Reserved.| |0x23|_factory_calib_3_|||| |0x24|_factory_calib_4_|||| |0x25|_factory_calib_5_|||| |0x26|_factory_calib_6_|0|RW|| |0x27|_factory_calib_7_|||| |0x28|_factory_calib_8_|||Factory calibration data.| |0x29|_factory_calib_9_|||| |0x2A|_factory_calib_10_|||| |0x2B|_factory_calib_11_|||| |0x2C|_factory_calib_12_|||| |0x2D|_factory_calib_13_|||| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **53** / 76 / **TMF8806** Register description ## **7.4.2 STATE_DATA_WR_0 to 10 registers (Address 0x2E-0x38)** If algorithm state data is sent to TMF8806 following registers shall be pre-loaded by the host before command=0x02 is executed and _algState_ =1. **Table 62: STATE_DATA_WR_0 to 10 registers** |**Addr: 0x2E-0x38**|**Addr: 0x2E-0x38**|**STATE_DATA_WR registers**|**STATE_DATA_WR registers**|**STATE_DATA_WR registers**| |---|---|---|---|---| |**Addr**|**Name**|**Rst**|**Type**|**Description**| |0x2E|_state_data_wr_0_|||| |0x2F|_state_data_wr_1_|||| |0x30|_state_data_wr_2_|||| |0x31|_state_data_wr_3_|||Algorithm state data (11 Bytes) for writing from host to TMF8806| |0x32|_state_data_wr_4_|||All registers are 8 bits wide and their content holds the current| |0x33|_state_data_wr_5_|0|RW|state of the algorithm. This is required especially for ultra low<br>power operation, where the algorithm state is transferred from| |0x34|_state_data_wr_6_|||the host to TMF8806 right after startup of TMF8806 – see| |0x35|_state_data_wr_7_|||section 6.3.1.| |0x36|_state_data_wr_8_|||| |0x37|_state_data_wr_9_|||| |0x38|_state_data_wr_10_|||| ## **7.5 Raw histogram output** Following registers are only available if _register_contents_ =0x80…0x93 (raw histogram output): ## **7.5.1 HISTOGRAM_START register (Address 0x20)** **Table 63: HISTOGRAM_START register** |**Addr: 0x20**|**Addr: 0x20**|**HISTOGRAM_START**|**HISTOGRAM_START**|**HISTOGRAM_START**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_hist_start_|0|RW|Quarter of histogram first byte| ## …all bytes until… Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **54** / 76 / **TMF8806** Register description ## **7.5.2 HISTOGRAM_END register (Address 0x9F)** **Table 64: HISTOGRAM_END register** |**Addr: 0x9F**|**Addr: 0x9F**|**HISTOGRAM_END**|**HISTOGRAM_END**|**HISTOGRAM_END**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_hist_end_|0|RW|Quarter of histogram last byte| ## **7.6 Serial number readout** Following registers are only available if _register_contents_ =0x47 (Serial number readout): ## **7.6.1 SERIAL_NUMBER_0 register (Address 0x28)** **Table 65: SERIAL_NUMBER_0 register** |**Addr: 0x28**|**Addr: 0x28**|**SERIAL_NUMBER_0**|**SERIAL_NUMBER_0**|**SERIAL_NUMBER_0**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_serial_number_0_|0|RW|Serial number byte 0| ## **7.6.2 SERIAL_NUMBER_1 register (Address 0x29)** **Table 66: SERIAL_NUMBER_1 register** |**Addr: 0x29**|**Addr: 0x29**|**SERIAL_NUMBER_1**|**SERIAL_NUMBER_1**|**SERIAL_NUMBER_1**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_serial_number_1_|0|RW|Serial number byte 1| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **55** / 76 / **TMF8806** Register description ## **7.6.3 IDENTIFICATION_NUMBER_0 register (Address 0x2A)** ## **Table 67: IDENTIFICATION_NUMBER_0 register** |**Addr: 0x2A**|**Addr: 0x2A**|**IDENTIFICATION_NUMBER_0**|**IDENTIFICATION_NUMBER_0**|**IDENTIFICATION_NUMBER_0**|| |---|---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**|| |7:0|_identification_number_0_|0|RW|Identification number byte 0|Identification number byte 0| ## **7.6.4 IDENTIFICATION_NUMBER_1 register (Address 0x2B)** ## **Table 68: IDENTIFICATION_NUMBER_1 register** |**Addr: 0x2B**|**Addr: 0x2B**|**IDENTIFICATION_NUMBER_1**|**IDENTIFICATION_NUMBER_1**|**IDENTIFICATION_NUMBER_1**|| |---|---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**|| |7:0|_identification_number_1_|0|RW|Identification number byte 1|Identification number byte 1| The binary concatenated number of serial_number_0: serial_number_1: identification_number_0: identification_number_1 registers result in a unique number. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **56** / 76 / **TMF8806** Register description ## **7.7 Interrupt suppression registers** Following registers are only available as result of command = 0x09. ## **7.7.1 PERSISTENCE register (Address 0x20)** ## **Table 69: PERSISTENCE register** |**Addr: 0x20**|**Addr: 0x20**|**PERSISTENCE**|**PERSISTENCE**||| |---|---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**|| |||||Persistence 8-bit value for interrupt suppression.|| |||||**Value**|**Definition**| |||||0|Any result (detect and no-detect) will trigger an interrupt| |7:0|_persistence_|0|RW||An interrupt will only be triggered if the detected| ||||||distance is >= low_threshold and| |||||1-255|distance <= high_threshold and| ||||||the detection happened at least <persistence> consecutive| ||||||times| ## **7.7.2 LOW_THRESHOLD_LSB register (Address 0x21)** ## **Table 70: LOW_THRESHOLD_LSB register** |**Addr: 0x21**|**Addr: 0x21**|**LOW_THRESHOLD_LSB**|**LOW_THRESHOLD_LSB**|**LOW_THRESHOLD_LSB**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Interrupt suppression low_threshold LSB Byte – see| |7:0|_low_threshold_lsb_|0|RW|PERSISTENCE register<br>low_threshold [mm] = low_threshold_LSB + 256 *| |||||low_threshold_MSB| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **57** / 76 / **TMF8806** Register description ## **7.7.3 LOW_THRESHOLD_MSB register (Address 0x22)** ## **Table 71: LOW_THRESHOLD_MSB register** |**Addr: 0x22**|**Addr: 0x22**|**LOW_THRESHOLD_MSB**|**LOW_THRESHOLD_MSB**|**LOW_THRESHOLD_MSB**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Interrupt suppression low_threshold MSB Byte – see| |7:0|_low_threshold_msb_|0|RW|PERSISTENCE register<br>low_threshold [mm] = low_threshold_LSB + 256 *| |||||low_threshold_MSB| ## **7.7.4 HIGH_THRESHOLD_LSB register (Address 0x23)** ## **Table 72: HIGH_THRESHOLD_LSB register** |**Addr: 0x23**|**Addr: 0x23**|**HIGH_THRESHOLD_LSB**|**HIGH_THRESHOLD_LSB**|**HIGH_THRESHOLD_LSB**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Interrupt suppression high_threshold LSB Byte – see| |7:0|_high_threshold_lsb_|0|RW|PERSISTENCE register<br>high_threshold [mm]= high_threshold_LSB + 256 *| |||||high_threshold_MSB| ## **7.7.5 HIGH_THRESHOLD_MSB register (Address 0x24)** ## **Table 73: HIGH_THRESHOLD_MSB register** |**Addr: 0x24**|**Addr: 0x24**|**HIGH_THRESHOLD_MSB**|**HIGH_THRESHOLD_MSB**|**HIGH_THRESHOLD_MSB**| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Interrupt suppression high_threshold MSB Byte – see| |7:0|_high_threhold_msb_|0|RW|PERSISTENCE register<br>high_threshold [mm] = high_threshold_LSB + 256 *| |||||high_threshold_MSB| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **58** / 76 / **TMF8806** Register description ## **7.8 Bootloader** As the TMF8806 can be operated directly from the on-chip ROM, only minimal control of the bootloader is required. Starting the application is performed by setting _appReqid_ =0xC0, see section 6.2. Bootloader registers and functions are only available if _appid_ =0x80 (Bootloader application id). ## **7.8.1 Bootloader registers** - 7.8.1.1 BL_CMD_STAT (Address 0x08) ## **Table 74: BL_CMD_STAT register** |**Addr: 0x08**|**Addr: 0x08**|**BL_CMD_STAT**|**BL_CMD_STAT**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |||||Write: Bootloader Command – see section Bootloader| |7:0|_bl_cmd_stat_|0|RW|commands<br>Read: Bootloader Status – anything else than 0x00| |||||means an error| - 7.8.1.2 BL_SIZE (Address 0x09) ## **Table 75: BL_SIZE register** |**Addr: 0x09**|**Addr: 0x09**|**BL_SIZE**|**BL_SIZE**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |6:0|_bl_size_|0|RW|Data size in bytes| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **59** / 76 / **TMF8806** Register description ## 7.8.1.3 BL_DATA (Address 0x0A-0x89) ## **Table 76: BL_DATA register** |**Addr: 0x0A-0x89**|**Addr: 0x0A-0x89**||**BL_DATA**|**BL_DATA**|| |---|---|---|---|---|---| |**Field**|**Name**||**Rst**|**Type**|**Description**| |7:0|_bl_data0 … bl_data127_|_bl_data0 … bl_data127_|0|RW|Up to 128 data bytes for bootloader commands| ## 7.8.1.4 BL_CSUM ## **Table 77: BL_CSUM register** |**Addr: After payload**|**Addr: After payload**|**BL_CSUM**|**BL_CSUM**|| |---|---|---|---|---| |**Field**|**Name**|**Rst**|**Type**|**Description**| |7:0|_bl_csum_|0|RW|Checksum for Sum (Command + Data Size + Data itself) XOR 0xFF| ## **7.8.2 Bootloader commands** The following commands (bl_cmd_stat) are supported by the bootloader: ## **Table 78: Bootloader commands** |**Command**|**Value**|**Meaning**| |---|---|---| |RAMREMAP_RESET|0x11|Remap RAM to Address 0 and Reset| |DOWNLOAD_INIT|0x14|Initialize for RAM download from host to TMF8806| |W_RAM|0x41|Write RAM Region (Plain = not encoded into e.g. Intel Hex Records)| |ADDR_RAM|0x43|Set the read/write RAM pointer to a given address| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **60** / 76 / **TMF8806** Register description ## **RAMREMAP_RESET = execute program downloaded to RAM** This command remaps the RAM to address 0 and performs a System reset. Command is performed immediately without any delay. After this the application that is in RAM will be running. If there is no valid application, you will need to do a HW reset (toggle enable pin or power cycle). **Table 79: RAMREMAP_RESET** |**Address**|**Value**|**Meaning**| |---|---|---| |BL_CMD_STAT|0x11|REMAP RAM to 0 and reset| |BL_SIZE|0|No parameters| |BL_CSUM|0xEE|| ## **DOWNLOAD_INIT** This command is used to initialize the download. **Table 80: DOWNLOAD_INIT** |**Address**|**Value**|**Meaning**| |---|---|---| |BL_CMD_STAT|0x14|Initialize TMF8806 for download from host to TMF8806 RAM| |BL_SIZE|1|| |BL_DATA0|0..0xFF|Seed| |BL_CSUM|0..0xFF|| ## **W_RAM** This command writes the given data to a defined RAM region. Note that the RAM pointer has first to be set by the command ADDR_RAM. After the command is successfully executed the RAM pointer will point to the first byte after the written region. **Table 81: W_RAM** |**Address**|**Value**|**Meaning**| |---|---|---| |BL_CMD_STAT|0x41|Write to main RAM| |BL_SIZE|0..0x80|Number of bytes to be written| |BL_DATA0|0..0xFF|1stbyte to be written| |BL_DATA1|0..0xFF|2ndbyte to be written| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **61** / 76 / **TMF8806** Register description |**Address**|**Value**|**Meaning**| |---|---|---| |…||| |BL_DATA127|0..0xFF|128thbyte to be written (only if size was 0x80).| |BL_CSUM|0..0xFF|The CSUM comes immediately after the data.| ## **ADDR_RAM** This command is to specify the RAM pointer location for the next R_RAM or W_RAM command. **Table 82: ADDR_RAM** |**Address**|**Value**|**Meaning**| |---|---|---| |BL_CMD_STAT|0x43|Specify the address of the next RAM read or write| |BL_SIZE|2|| |BL_DATA0|0..0xFF|LSB of address in RAM| |BL_DATA1|0..0xFF|MSB of address in RAM| |BL_CSUM|0..0xFF|| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **62** / 76 / **TMF8806** Application information ## 8 Application information ## **8.1 Schematic** The TMF8806 needs only 3 small 0402 external capacitors for operation: **Figure 26: TMF8806 application schematic** The SYNC signal connected to GPIO1 can be used to immediately interrupt the TMF8806 VCSEL operation if the high power illuminator is operating. It needs to be ensured that SYNC does not exceed the VDD supply of TMF8806 as otherwise an internal protection diode will start conducting. The VCSEL operation is controlled by setting cmd_data5 of command=0x02 according (see App0 registers). On SYNC assertion, the VCSEL is immediately switched off (typically after 10 µs), on SYNC de-assertion the VCSEL operation is resumed within >100 µs. GPIO0 is used at startup for selection of the I/O supply, see section 6.7. After startup, it can be used as a general GPIO output signal. The signals INT/SDA/SCL need an external pull-up resistor to the VIO supply (typically 1.8 V). Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **63** / 76 / **TMF8806** Application information ## **8.1.1 Operating several TMF8806 on a single I²C bus** Several TMF8806 devices can share a single I²C bus if there are dedicated enable (EN) connections to each of these devices. **Figure 27: Sharing a single I²C bus for operating several TMF8806’s** Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **64** / 76 / **TMF8806** Application information The procedure to initialize the devices to different I²C addresses is as follows: **1.** Set EN1=0, EN2=0, EN3=0 (reset all devices) **2.** Set EN1=1 **3.** Startup first TMF8806 **4.** Reprogram I²C address for first TMF8806 using command=0x49 where cmd_data0=0 and cmd_data1=I²C address for first TMF8806 **5.** Set EN2=1 **6.** Startup second TMF8806 **7.** Reprogram I²C address for second TMF8806 using command=0x49 where cmd_data0=0 and cmd_data1=I²C address for second TMF8806 **8.** Set EN3=1 **9.** Startup third TMF8806 **10.** Reprogram I²C address for third TMF8806 using command=0x49 where cmd_data0=0 and cmd_data1=I²C address for third TMF8806 **11.** If there are further devices, repeat the last three steps accordingly. ## **Information:** - With setting of EN=0, the programmed I²C address returns to the default address. If the ultra low power mode (see section 6.3.1) is used together with the I²C address change, it needs to be done after every EN=0. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **65** / 76 / **TMF8806** Application information ## **8.2 PCB layout** **Figure 28: PCB layout recommendation** **==> picture [344 x 249] intentionally omitted <==** **----- Start of picture text -----**<br> GND PLANE<br>VDD VDD<br>VDDC VDDV<br>(0402)<br>O GND ) - (0402) GNDC GNDV : (0402) e GND<br>GPIO0 GPIO0 GPIO1 GPIO1<br>INT INT EN EN<br>SCL SCL GND GND<br>O<br>SDA SDA VDD<br>(0402) VDD<br>e<br>VDD<br>C<br>VDDC VDDV<br>C C<br>**----- End of picture text -----**<br> Use GRM155R70J104KA01 (0402 X7R 0.1 µF 6.3 V) or capacitors with same or better performance for CVDDC, CVDD and CVDDV. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **66** / 76 / **TMF8806** Application information ## **8.3 PCB pad layout** **Figure 29: PCB pad layout** - (1) All linear dimensions are in millimeters. (2) Dimension tolerances are 0.05 mm unless otherwise noted. (3) This drawing is subject to change without notice. Use the PCB pad layout as a recommendation only. The actual pad layout shall be optimized for the customer production line. ## **8.4 Calibration** To meet the distance accuracy, each TMF8806 shall run a calibration procedure in a customer final test with the cover glass attached, see section 6.9.1. The crosstalk needs to meet the requirements defined by the ams OSRAM optical design guide (ODG) available on the ams-osram.com website: - Optical design guide The calibration data set shall be stored on the host and downloaded to the TMF8806 on every startup, see section 6.2.1. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **67** / 76 / **TMF8806** Application information ## **8.5 Software drivers** ams OSRAM recommends using one of the available software drivers to operate the TMF8806. The drivers are available from the ams-osram.com website and github.com/ams OSRAM Group: - ams-osram.com/tmf8806 The following drivers are available: ## **Table 83: Software drivers** |**Type**|**File**|**Explanation**| |---|---|---| |||C source code driver intended to be easy portable to| ||TMF8806_Driver_Arduino_Source_v*.zip|any other platform.| |Arduino|github.com/ams-OSRAM-|This is the driver used for the TMF8806 shield EVM| ||Group/tmf8806_driver_arduino|TMF8806_EVM_EB_SHIELD board if piggy-packed on| |||an Arduino Uno (not included).| |||Python driver.| ||TMF8806_Driver_Python_Source_v*.zip|This is the driver used for the TMF8806 shield EVM| |Python|github.com/ams-OSRAM-|TMF8806_EVM_EB_SHIELD board if directly connected| ||Group/tmf8806_driver_python|to the PC through its FTDI interface chip. The FTDI chip| |||is included with the TMF8806 shield EVM board.| ||TMF8806_Driver_Linux_v*.zip and|Use for any Linux system (e.g. Android) where the driver| |Linux|TMF8806_Driver_Linux_Source_v*.zip<br>github.com/ams-OSRAM-|is running on the application processor.<br>This is the driver running on TMF8806 demo kit -| ||Group/tmf8806_driver_linux|TMF8806_EVM_DB_DEMO.| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **68** / 76 / **TMF8806** Package drawings & markings ## 9 Package drawings & markings **Figure 30: OLGA12 package outline drawing** (1) All dimensions are in millimeters. Angles in degrees. - (2) Dimensioning and tolerancing conform to ASME Y14.5M-1994. (3) This package contains no lead (Pb). (4) This drawing is subject to change without notice. (5) 8-digit tracecode only on bottom side of the package. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **69** / 76 / **TMF8806** Tape & reel information ## 10 Tape & reel information **Figure 31: Tape and reel drawing** (1) All linear dimensions are in millimeters. Dimension tolerance is ± 0.10 mm unless otherwise noted. (2) The dimensions on this drawing are for illustrative purposes only. The dimensions of an actual carrier may vary slightly. (3) Symbols on drawing A0, B0, and K0 are defined in ANSI EIA Standard 481-B 2001. (4) There are two reel sizes available (see section Ordering information). i) 7″ reels: Each reel is 7 inch in diameter and contains 500 parts. ii) 13″ reels: Each reel is 13 inch in diameter and contains 5000 parts. (5) ams OSRAM packaging tape and reel conform to the requirements of EIA Standard 481-B. (6) In accordance with EIA standard, device pin 1 is located next to sprocket holes in the tape. (7) This drawing is subject to change without notice. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **70** / 76 / **TMF8806** Soldering & storage information ## 11 Soldering & storage information ## **11.1 Soldering information** The package has been tested and has demonstrated the ability to be reflow soldered to a PCB substrate. The process, equipment, and materials used in these tests are detailed below. The solder reflow profile describes the expected maximum heat exposure of components during the solder reflow process of product on a PCB. Temperature is measured on top of component. The components should be limited to a maximum of three passes through this solder reflow profile. **Figure 32: Solder reflow profile graph** **Table 84: Solder reflow profile** |**Parameter**|**Reference**|**Device**| |---|---|---| |Average temperature gradient in preheating||2.5 °C/s| |Soak time|tsoak|2 to 3 minutes| |Time above 217 °C (T1)|t1|Max 60 s| Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **71** / 76 / **TMF8806** Soldering & storage information |**Parameter**|**Reference**|**Device**| |---|---|---| |Time above 230 °C (T2)|t2|Max 50 s| |Time above Tpeak– 10 °C (T3)|t3|Max 10 s| |Peak temperature in reflow|Tpeak|260 °C| |Temperature gradient in cooling||Max -5 °C/s| ## **11.2 Storage information** ## **Moisture sensitivity** Optical characteristics of the device can be adversely affected during the soldering process by the release and vaporization of moisture that has been previously absorbed into the package. To ensure the package contains the smallest amount of absorbed moisture possible, each device is baked prior to being dry packed for shipping. Devices are dry packed in a sealed aluminized envelope called a moisture-barrier bag with silica gel to protect them from ambient moisture during shipping, handling, and storage before use. ## **Shelf life** The calculated shelf life of the device in an unopened moisture barrier bag is 24 months from the date code on the bag when stored under the following conditions: - Shelf Life: 24 months - Ambient Temperature: <40 °C - Relative Humidity: <90 % Rebaking of the devices will be required if the devices exceed the 24 months shelf life or the Humidity Indicator Card shows that the devices were exposed to conditions beyond the allowable moisture region. ## **Floor life** The module has been assigned a moisture sensitivity level of MSL 3. As a result, the floor life of devices removed from the moisture barrier bag is 168 hours from the time the bag was opened, provided that the devices are stored under the following conditions: - Floor Life: 168 hours - Ambient Temperature: <30°C - Relative Humidity: <60 % Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **72** / 76 / **TMF8806** Soldering & storage information If the floor life or the temperature/humidity conditions have been exceeded, the devices must be rebaked prior to solder reflow or dry packing. ## **Rebaking instructions** When the shelf life or floor life limits have been exceeded, rebake at 50 °C for 12 hours. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **73** / 76 / **TMF8806** Laser eye safety ## 12 Laser eye safety The TMF8806 is designed to meet the Class 1 laser safety limits including single faults in compliance with IEC / EN 60825-1:2014 and EN 60825-1:2014/A11:2021. This applies to the stand-alone device and the included software supplied by ams OSRAM. In an end application system environment, the system may need to be tested to ensure it remains compliant. The system must not include any additional lens to concentrate the laser light or parameters set outside of the recommended operating conditions. Use outside of the recommended condition or any physical modification to the module during development could result in hazardous levels of radiation exposure. **Figure 33: Laser eye safety certificate** IEC 60825-1:2014 and EN 60825-1:2014/A11:2021 Complies with 21 CFR 1040.10 and 1040.11 except for conformance with IEC 60825-1 Ed. 3., as described in Laser Notice No. 56, dated May 8, 2019. ## **CAUTION:** Use of controls or adjustments or performance of procedures other than those specified herein may result in hazardous radiation exposure. Example: Adding a converging lens on top of the TMF8806. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **74** / 76 / **TMF8806** Revision information ## 13 Revision information |**Document status**<br>**Product status**<br>**Definition**<br>Product Preview<br>Pre-development<br>Information in this datasheet is based on product ideas in the planning phase<br>~~a a~~<br>~~ee~~|**Document status**<br>**Product status**<br>**Definition**<br>Product Preview<br>Pre-development<br>Information in this datasheet is based on product ideas in the planning phase<br>~~a a~~<br>~~ee~~|**Document status**<br>**Product status**<br>**Definition**<br>Product Preview<br>Pre-development<br>Information in this datasheet is based on product ideas in the planning phase<br>~~a a~~<br>~~ee~~|**Document status**<br>**Product status**<br>**Definition**<br>Product Preview<br>Pre-development<br>Information in this datasheet is based on product ideas in the planning phase<br>~~a a~~<br>~~ee~~|**Document status**<br>**Product status**<br>**Definition**<br>Product Preview<br>Pre-development<br>Information in this datasheet is based on product ideas in the planning phase<br>~~a a~~<br>~~ee~~| |---|---|---|---|---| |||||of development. All specifications are design goals without any warranty and| |||||are subject to change without notice| |||Preliminary Datasheet|Pre-production|Information in this datasheet is based on products in the design, validation or| |||||qualification phase of development. The performance and parameters shown| |||||in this document are preliminary without any warranty and are subject to| |||||change without notice| |||Datasheet|Production|Information in this datasheet is based on products in ramp-up to full production| |||||or full production which conform to specifications in accordance with the terms| |||||of ams-OSRAM AG standard warranty as given in the General Terms of Trade| ## **Other definitions** Draft / Preliminary: The draft / preliminary status of a document indicates that the content is still under internal review and subject to change without notice. ams-OSRAM AG does not give any warranties as to the accuracy or completeness of information included in a draft / preliminary version of a document and shall have no liability for the consequences of use of such information. Short datasheet: A short datasheet is intended for quick reference only, it is an extract from a full datasheet with the same product number(s) and title. For detailed and full information always see the relevant full datasheet. In case of any inconsistency or conflict with the short datasheet, the full datasheet shall prevail. |**Changes from previous released version to current revision v2-00**|**Page**| |---|---| |Clarified GPIO0 pin connection in pinlist|6| |Corrected order codes|7| |Updated IRANGING_AVG|9| |Added allowed iteration range|10| |Added typical optical stack configurations|23| |Updated command 0x80|41| |Package tracecode is 8 digits|68| |Updated links to software drivers|75| |Update package drawing tolerances|78| - Page and figure numbers for the previous version may differ from page and figure numbers in the current revision. - Correction of typographical errors is not explicitly mentioned. Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **75** / 76 / **TMF8806** Legal information ## 14 Legal information ## **Copyright & disclaimer** Copyright ams-OSRAM AG, Tobelbader Strasse 30, 8141 Premstaetten, Austria-Europe. Trademarks Registered. All rights reserved. The material herein may not be reproduced, adapted, merged, translated, stored, or used without the prior written consent of the copyright owner. Devices sold by ams-OSRAM AG are covered by the warranty and patent indemnification provisions appearing in its General Terms of Trade. amsOSRAM AG makes no warranty, express, statutory, implied, or by description regarding the information set forth herein. ams-OSRAM AG reserves the right to change specifications and prices at any time and without notice. Therefore, prior to designing this product into a system, it is necessary to check with ams-OSRAM AG for current information. This product is intended for use in commercial applications. Applications requiring extended temperature range, unusual environmental requirements, or high reliability applications, such as military, medical life-support or life-sustaining equipment are specifically not recommended without additional processing by ams-OSRAM AG for each application. This product is provided by ams-OSRAM AG “AS IS” and any express or implied warranties, including, but not limited to the implied warranties of merchantability and fitness for a particular purpose are disclaimed. ams-OSRAM AG shall not be liable to recipient or any third party for any damages, including but not limited to personal injury, property damage, loss of profits, loss of use, interruption of business or indirect, special, incidental or consequential damages, of any kind, in connection with or arising out of the furnishing, performance or use of the technical data herein. No obligation or liability to recipient or any third party shall arise or flow out of amsOSRAM AG rendering of technical or other services. ## **Product and functional safety devices/applications or medical devices/applications:** ams-OSRAM AG components are not developed, constructed or tested for the application as safety relevant component or for the application in medical devices. ams-OSRAM AG products are not qualified at module and system level for such application. In case buyer – or customer supplied by buyer – considers using ams-OSRAM AG components in product safety devices/applications or medical devices/applications, buyer and/or customer has to inform the local sales partner of ams-OSRAM AG immediately and ams-OSRAM AG and buyer and /or customer will analyze and coordinate the customer-specific request between ams-OSRAM AG and buyer and/or customer. ## **ams OSRAM semiconductor RoHS compliance statement** **RoHS compliant:** The term RoHS compliant means that ams-OSRAM AG semiconductor products fully comply with current RoHS directives. Our semiconductor products do not contain any chemicals for all 6 substance categories plus additional 4 substance categories (per amendment EU 2015/863), including the requirement that lead not exceed 0.1% by weight in homogeneous materials. **Important information:** The information provided in this statement represents ams-OSRAM AG knowledge and belief as of the date that it is provided. ams-OSRAM AG bases its knowledge and belief on information provided by third parties, and makes no representation or warranty as to the accuracy of such information. Efforts are underway to better integrate information from third parties. ams-OSRAM AG has taken and continues to take reasonable steps to provide representative and accurate information but may not have conducted destructive testing or chemical analysis on incoming materials and chemicals. ams-OSRAM AG and ams-OSRAM AG suppliers consider certain information to be proprietary, and thus CAS numbers and other limited information may not be available for release. ## **Headquarters** Please visit our website at ams-osram.com ams-OSRAM AG For information about our products go to Products Tobelbader Strasse 30 For technical support use our Technical Support Form 8141 Premstaetten For feedback about this document use Document Feedback Austria, Europe For sales offices and branches go to Sales Offices / Branches Tel: +43 (0) 3136 500 0 For distributors and sales representatives go to Channel Partners Datasheet • PUBLIC • Document Feedback DS001097 • v2-00 • 2024-Jun-11 **76** / 76 /
Updated at March 31, 2026
About Novapart
Novapart is a B2B electronic component broker specialising in stock shortages and cost reduction. We source hard-to-find parts and identify compliant alternatives across a catalogue of 410,000+ components from 500+ manufacturers.
Learn more →Stock Shortage Specialist
When a component is unavailable, discontinued or has an unacceptable lead time, we tap into our network of vetted European and Asian distributors to source what you need — without compromising on quality or traceability.
Request a quote →Compliant Alternatives
We identify pin-to-pin, electrically equivalent substitutes that meet the same certifications (RoHS, AEC-Q100, REACH) as your original specification — validated against datasheets, not just part numbers. Often at a lower cost.
BOM Analysis service →