Image not available
Illustrative purposes only
TMF8701-1BM.
Photo Sensor, 600 mm, I2C Digital, Time of Flight, 2.7V to 3.3V, PCB
⚠️ 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: Distance Photoelectric Sensors
- SVHC: To Be Advised
- Product Range: TMF8701 Series
- Sensing Method: Time of Flight
- Connection Method: PCB
- Sensing Range Max: 600mm
- Sensor Output Type: I2C Digital
- Supply Voltage DC Max: 3.3V
- Supply Voltage DC Min: 2.7V
| Delivery and price | |
|---|---|
| Units per pack | 100 |
| Price | 2.77 € |
| Current stock | 1000+ |
| Lead time | 7 days |
## **TMF8701 Time-of-Flight Sensor** ## **General Description** The TMF8701 is a time-of-flight (TOF) sensor in a single modular package with associated VCSEL. The TOF device is based on SPAD, TDC and histogram technology. _Ordering Information and Content Guide appear at end of datasheet._ ## **Key Benefits & Features** The benefits and features of TMF8701, Time-of-Flight Sensor are listed below: **Figure 1: Added Value of Using TMF8701** |**Benefits**|**Feature**| |---|---| |**•** Modular package - 2.2mm x 3.6mm x 1.0mm|**•** Small footprint fits in the mobile phone bezel| |**•** 21º FOI|**•** Detecting central closest objects| |**•** Time-to-Digital converter (TDC)<br>**•** Direct time-of-flight measurement|**•** Within 5% of measurement (accuracy); no<br>multi-path and no multiple object problems as for<br>iToF| |**•** Single Photon Avalanche Photodiode (SPAD)<br>**•** Histogram based architecture|**•** Better accuracy detects reliably closest object<br>**•** Min. distance 1mm (black target)<br>**•** Max. distance 60cm| |**•** Dynamic cover glass calibration|**•** No complex calibration| |**•** Reliable operation under demanding use cases|**•** Compensates for dirt on glass| |**•** Reference SPAD|**•** Improved accuracy over temperature and life| |**•** Distance and signal quality reported|**•** Make better decisions| |**•** Fast VCSEL driver with protection|**•** Class 1 Eye Safe| |**•** 940μA power consumption at 10Hz (proximity<br>mode)<br>**•** 26mA power consumption at 60Hz operation<br>(distance and proximity mode)<br>**•** 0.26μA power-down current consumption (EN=0)|**•** Longer battery life| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 1** Document Feedback **TMF8701 −** General Description ## **Applications** The device is ideal for use in the mobile phone market with applications including: - Distance measurement for camera autofocus (Laser Detect Autofocus - LDAF) - Supporting low-power system operation by enabling high-power components (i.e. 3D facial recognition) only when an object is in the detection range - Proximity detection - Presence detection - Object detection - Collision avoidance ## **Block Diagram** The functional blocks of this device are shown below: **Figure 2: TMF8701 Block Diagram** **==> picture [468 x 291] intentionally omitted <==** **----- Start of picture text -----**<br> TMF8701<br>TOF Sensor Optics<br>EN<br>Driver VCSEL<br>GPIO1 Reflective<br>Control<br>INT GPIO0 Internal Surface<br>Host<br>SDA SPAD, Reflection<br>Data<br>SCL TDC and<br>Process Optical<br>Histogram<br>Filter<br>Cortex M0<br>Background<br>Light<br>VDD GND VDDC GNDC<br>**----- End of picture text -----**<br> **ams Datasheet** **Page 2** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Pin Assignments ## **Pin Assignments** ## **Pin Diagram** **Figure 3: Pin Diagram TMF8701 Module** **Pin Diagram TMF8701 Module:** Top through view (not to scale) **==> picture [274 x 284] intentionally omitted <==** **----- Start of picture text -----**<br> VDDC 1 12 VDDV<br>GNDC 2 11 GNDV<br>GPIO0 3 10 GPIO1<br>INT 4 9 EN<br>SCL 5 8 GND<br>SDA 6 7 VDD<br>**----- End of picture text -----**<br> ## _**Pin Description**_ The GPIO is controlled by the firmware. **Figure 4: Pin Description TMF8701 Module** |**Pin No.**|**Pin Name**|**Signal Type**|**Description**| |---|---|---|---| |1|VDDC|Supply|Charge pump supply voltage (3V); add a<br>capacitor GRM155R70J104KA01 (0402 X7R<br>0.1μF 6.3V) to GND| |2|GNDC|Ground|Charge pump ground; connect all ground<br>pins together| |3|GPIO0|I/O|General purpose input/output; default<br>output low; leave open if not used| |4|INT|Output|Interrupt. Open-drain output; connect to<br>GND if not used| |5|SCL|Input|I²C serial clock| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 3** Document Feedback **TMF8701 −** Pin Assignments |**Pin No.**|**Pin Name**|**Signal Type**|**Description**| |---|---|---|---| |6|SDA|I/O|I²C serial data| |7|VDD|Supply|Chip supply voltage (3V); add a capacitor<br>GRM155R70J104KA01 (0402 X7R 0.1μF<br>6.3V) to GND| |8|GND|Ground|Chip ground; connect all ground pins<br>together| |9|EN|Input|Enable input active high; setting to low<br>forces the device into shutdown and all<br>memory content is lost; connect to VDD if<br>not used| |10|GPIO1|I/O|General purpose input/output; default<br>output low; leave open if not used| |11|GNDV|Ground|VCSEL ground; connect all ground pins<br>together| |12|VDDV|Supply|VCSEL supply voltage (3V); add a capacitor<br>GRM155R70J104KA01 (0402 X7R 0.1μF<br>6.3V) to GND| ## **Note(s):** 1. SDA, SCL, INT and EN have no diode to any VDD supply. Therefore even with VDD=0V 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. **ams Datasheet** **Page 4** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Absolute Maximum Ratings ## **Absolute Maximum Ratings** Stresses beyond those listed under Absolute Maximum Ratings may cause permanent damage to the device. These are stress ratings only. Functional operation of the device at these or any other conditions beyond those indicated under Electrical Specifications is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. **Figure 5: Absolute Maximum Ratings TMF8701 Module** |**Symbol**|**Parameter**|**Min**|**Max**|**Units**|**Comment**| |---|---|---|---|---|---| |VDDC, VDDV, VDD|3V Supply voltage|-0.3|3.6|V|Connect pins VDDC, VDDV,<br>VDD on PCB with very short<br>connections| |GNDV, GNDC, GND|Ground|0.0|0.0|V|Connect all GND pins on PCB<br>with very short connections| |GPIO0, GPIO1|Digital I/O<br>terminal voltage|-0.3|VDD+0.3V|V|Protection diode to VDD| |INT, SCL, SDA, EN|Digital I/O<br>terminal voltage|-0.3|3.6|V|No protection diodes to any<br>positive supply only to ground| |I_SCR|Latch-up<br>immunity|±100||mA|JEDEC<br>JESD78D<br>Nov 2011| |**Electrostatic Discharge**|||||| |ESD_HBM|Electrostatic<br>discharge HBM|±2000||V|JS-001-2014| |ESD_CDM|Electrostatic<br>discharge CDM|±500||V|JEDEC<br>JESD22-C101F<br>Oct 2013| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 5** Document Feedback **TMF8701 −** Absolute Maximum Ratings |**Symbol**|**Parameter**|**Min**|**Max**|**Units**|**Comment**| |---|---|---|---|---|---| |**Temperature Ranges and Storage Conditions**|||||| |TSTRG|Storage<br>Temperature|-40|85|ºC|| |RHNC|Relative Humidity<br>(non-condensing)||85|%|| |TBODY|Package Body<br>Temperature||260|ºC|IPC/JEDEC J-STD-020(1)| |MSL|Moisture<br>Sensitivity Level|3|||Represents a maximum floor<br>life time of 168h with<br>TAMB<30ºC and <60% r.h.| ## **Note(s):** 1. The reflow peak soldering temperature (body temperature) is specified according to IPC/JEDEC J-STD-020 “Moisture/Reflow Sensitivity Classification for Non hermetic Solid State Surface Mount Devices.” **ams Datasheet** [v1-08] 2020-Jun-29 **Page 6** Document Feedback **TMF8701 −** Electrical Characteristics ## **Electrical Characteristics** ## **Recommended Operating Conditions** Device parameters are guaranteed at nominal conditions otherwise noted. While the device is operational across the temperature range, functionality will vary with temperature. **Figure 6:** **Recommended Operating Conditions TMF8701 Module** ||**Parameter**|**Min**|**Typ**|**Max**|**Units**|**Comment**| |---|---|---|---|---|---|---| |VDDV, VDDC, VDD|3V Supply voltage|2.7|3|3.3|V|| |Temperature Range|Free-air temperature|-30|25|70|ºC|Operational| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 7** Document Feedback **TMF8701 −** Typical Operating Characteristics ## **Typical Operating Characteristics** Following operating characteristics are measured with calibrated devices with a full optical stack including glass and IR ink with >90% transmissivity. The airgap is set to 0.38mm. The ambient light is measured on the target. As target object a grey card with 20cm x 26cm is used. **Figure 7: 350Lux Fluorescent Light** **==> picture [428 x 218] intentionally omitted <==** **----- Start of picture text -----**<br> 350Lux Fluorescent Light,<br>Measured Distance vs. Target Distance [mm]<br>600<br>500<br>400<br>300<br>200<br>100<br>0<br>0 100 200 300 400 500 600<br>**----- End of picture text -----**<br> **Figure 8: 350Lux Fluorescent Light (Smudge on Glass)** **==> picture [428 x 221] intentionally omitted <==** **----- Start of picture text -----**<br> 350Lux Fluorescent Light, Smudge on glass (1 layer Sotch Magic Tape 810)<br>Measured Distance vs. Target Distance [mm]<br>600<br>500<br>400<br>300<br>200<br>100<br>0<br>0 100 200 300 400 500 600<br>**----- End of picture text -----**<br> **ams Datasheet** **Page 8** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Typical Operating Characteristics ## **Figure 9:** **14kLux Halogen Light (100kLux Sunlight Equivalent)** **==> picture [391 x 166] intentionally omitted <==** **----- Start of picture text -----**<br> Measured Distance vs. Target Distance [mm]<br>400 =<br>350<br>300<br>250<br>200<br>150<br>100<br>50<br>0 S=snsoe w<br>0 50 100 150 200 250 300 350 400<br>**----- End of picture text -----**<br> **Figure 10: Field of Illumination of VCSEL (FOI), x-axis: ±10.4°, y-axis: ±10.31°, 1/e[2]** **ams Datasheet** [v1-08] 2020-Jun-29 **Page 9** Document Feedback **TMF8701 −** Detailed Description ## **Detailed Description** ## **I²C Protocol** The TMF8701 is controlled by an I²C bus, one interrupt pin and two GPIO pins. The device uses I²C serial communication protocol for communication. The device supports 7-bit chip addressing 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. 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 STOP 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. A Write transaction consists of a START, CHIP-ADDRESSWRITE, REGISTER-ADDRESSWRITE, DATA BYTE(S), and STOP. Following each byte (9[th] clock pulse) the slave places an ACKNOWLEDGE/NOT- ACKNOWLEDGE (ACK/NACK) on the bus. If NACK is transmitted by the slave, the master may issue a STOP. A Read transaction consists of a START, CHIP-ADDRESSWRITE, REGISTER-ADDRESS, RESTART, CHIP-ADDRESSREAD, DATA BYTE(S), and STOP. Following all but the final byte the master places an ACK on the bus (9TH clock pulse). Termination of the Read transaction is indicated by a NACK being placed on the bus by the master, followed by STOP. **ams Datasheet** **Page 10** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Detailed Description ## **TOF Description** ## _**System Parameters**_ The on-chip microprocessor is a Cortex M0 μP. **Figure 11: ARM M0 Parameters** ||**Min**|**Typ**|**Max**|**Units**|**Comment**| |---|---|---|---|---|---| |μP Operating Frequency||5.37|86|MHz|The CPU can operate with the rc oscillator<br>directly or with a 16x PLL| |RAM|||32|kB|| |ROM|||32|kB|| |Max PLL Frequency||172||MHz|| Standard I²C Timing for 1MHz Fast Mode Plus with lower drive. The default TOF address is 0x41. The address can be changed after power-up. Use the enable pin to enable only one device at a time to provide a unique device addresses. ## _**I/O**_ **Figure 12: Typical I/O Level Specification** |**Symbol**|**Parameter**|**Condition**|**Min**|**Typ**|**Max**|**Units**| |---|---|---|---|---|---|---| |ILEAK|SDA, SCL, GPIO0/1, EN, INT||-5||5|μA| |VIH(1)|SDA, SCL, GPIO0/1, EN||1.26|||V| |VIL_I2C(1)|SDA, SCL|2.7V<VDD<2.9V, <400kHz I²C speed|||0.3|V| |||VDD >2.9V, <400kHz I²C speed|||0.54|| |||2.8V<VDD<3.0V, <1MHz I²C speed|||0.3|| |||VDD>3.0V, <1MHz I²C speed|||0.54|| |VIL|GPIO0/1, EN||||0.54|V| |VOL|SDA, GPIO0/1, INT|2mA sink|0||0.36|V| |||4mA sink|0||0.6|V| |IDRIVE_H|GPIO0/1|1V applied on GPIO|3.6|||mA| |IDRIVE_L|GPIO0/1|1V applied on GPIO|3.9|||mA| ## **Note(s):** 1. The input high level VIH and low level VIL is defined to support a pull-up supply of 1.8V ±5%. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 11** Document Feedback **TMF8701 −** Detailed Description ## _**Power Consumption**_ All current consumption values include silicon process variation. Temperature and voltages are at nominal conditions (23ºC and 2.8V). ## **Figure 13: Power Consumption** ||**Condition**|**Min**|**Typ**|**Max**|**Units**|**Comment**| |---|---|---|---|---|---|---| |I_VDD Power down|Enable Pin Low<br>I²C Off|0.02|0.26|1|μA|State: Power down| |I_VDD Standby<br>CPU Off, RAM On<br>OSC Off, pon=0<br>I²C Wakeup Only|||85||μA|State: Standby| |I_VDD Wait<br>CPU Off, RAM On,<br>OSC On 5MHz<br>I²C On, Timer Wakeup|||140||μA|State: Wait| |I_VDD Ranging Processing<br>CPU Running at 80MHz<br>No VCSEL, No TDC|||2.7||mA|State: Histogram<br>processing| |I_VDD Ranging Active<br>CPU stopped<br>VCSEL 43MHz 320ps pulses,<br>TDCs running|||32.5||mA|State: Ranging active| |I_VDD Background<br>measurement Active CPU<br>stopped<br>VCSEL off, TDCs running|||13||mA|| |I_VDD<br>Ranging<br>60Hz, 16.6ms, distance and<br>proximity algorithm<br>combined|||26||mA|Average power<br>consumption| |Peak VCSEL Current 320ps<br>pulses|||230||mA|| |Max VCSEL Duty Cycle|||2||%|| **ams Datasheet** **Page 12** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Detailed Description ## _**Timing**_ ## _**Ranging Acquisition Timing**_ **Figure 14: Ranging Acquisition Timing** ||**Min**|**Typ**|**Max**|**Units**|**Comment**| |---|---|---|---|---|---| |Ranging time proximity<br>and distance mode<br>combined||16.6||ms|Varies with operational mode| |Ranging init<br>(including electrical<br>calibration)||8||ms|Only done on startup and if<br>temperature changed from last<br>calibration| |Ranging period|||209|ms|Programmable by the interface| **Figure 15: Ranging Timing Diagram** **ams Datasheet** [v1-08] 2020-Jun-29 **Page 13** Document Feedback **TMF8701 −** Detailed Description ## _**Reset Pin and Power-Up Timing**_ ## **Figure 16:** **Reset Pin and Power-Up Timing** ||**Min**|**Typ**|**Max**|**Units**|**Comment**| |---|---|---|---|---|---| |Power On (boot time)||3||ms|Does not include RAM<br>download time| |Enable High to Ready for<br>Measurement||8||ms|| |Standby to Active Time||<<1||ms|| |Active to Standby Time||<<1||ms|| |Enable Low to Power Down Time||<<1||ms|| ## _**Distance and Proximity Algorithm**_ As the performance of the algorithm is dependent on the ROM version, following section only applies for devices with order code TMF8701-1 **B** (and TMF8701-1 **B** M), calibrated and in-application oscillator calibration using the reference driver code and patched with the latest software patch from **ams** (contact **ams** to identify latest patch version). The TMF8701 is embedded in the application using a 0.38mm airgap and a glass with an IR ink with >90% transmissivity. The glass thickness is 0.5mm. An additional mask on the opaque ink is implemented according to TMF8701 optical design guide (external document). ## _**Calibration**_ To achieve the performance described in the next sections, a calibration of the algorithm needs to be performed (command = 0x0A). The TMF8701 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 40cm in FOI of the TMF8701. The TMF8701 generates a calibration data set which is permanently stored on the host. On each power-up of the TMF8701 the calibration data set is sent by I²C to the TMF8701 prior to execution of any algorithms (commands=0x02 or 0x0B). ## _**Operating Modes and Timings**_ The TMF8701 can be operated in two different modes: - Proximity mode only; it uses 80k iterations at 43Mhz for capturing (VCSEL on). - Proximity and distance mode combined; it uses 80k + 320k iterations at 43Mhz for capturing. **ams Datasheet** **Page 14** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Detailed Description The operating modes have different timings as shown in following table: ## **Figure 17: Algorithm Timings** ||**Condition**|**Min**|**Nom**|**Max**|**Units**| |---|---|---|---|---|---| |Proximity Mode only|command=0x02 or 0x03<br>cmd_data6=0x81||5.3||ms| |Proximity and Distance<br>Mode Combined|command=0x02 or 0x03<br>cmd_data6=0xA3||16.6||ms| ## _**Proximity Mode**_ The proximity algorithm reports a distance information in steps of 1mm and the detect/release threshold can be tuned inside the host. It especially can detect objects close to touch. For proper operation of the proximity mode a cover glass with IR ink is assumed. **Figure 18: Proximity Mode Parameters** ||**Condition**|**Min**|**Nom**|**Max**|**Units**| |---|---|---|---|---|---| |Reflectivity of Object at<br>940nm|Full FOV target assumed|5||90|%| |Ambient Light|Halogen light(1)|0||14k(2)|lux| |Object Detected||1.0(3)||20(4)|mm| |Object Released||60(4)|||mm| |Difference Object Detected /<br>Object Released|Appropriate but fixed<br>thresholds for detect /<br>release in the host<br>assumed|10|||mm| ## **Note(s):** 1. On the DUT or on the target; for close distances the target will shield ambient light. 2. 14k halogen light represents 100k sunlight equivalent 3. To detect a target at close distances, the algorithm relies on historical information. Therefore a grey or white target had to be present previously at approximately 60mm for obtaining this information. 4. These exact numbers apply for a 18% reflectivity target; due to the short distance a full FOV object perpendicular to TMF8701 is assumed. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 15** Document Feedback **TMF8701 −** Detailed Description ## _**Proximity and Distance Mode Combined**_ In the combined operating mode, proximity algorithm is run first followed by distance algorithm. An object detected in proximity mode has priority over an object detected in distance mode. The distance algorithm reports a distance information of the closest object in 1mm steps. **Figure 19: Distance Mode Parameters** ||**Condition**|**Min**|**Nom**|**Max**|**Units**| |---|---|---|---|---|---| |Reflectivity of Object at<br>940nm|20cmx26cm target,<br>perpendicular to TMF8701|18||90|%| |Maximum Distance<br>Detection, 18% Grey Card,<br>20cmx26cm|<350 lux fluorescent on<br>object||600||mm| ||14k lux halogen light on<br>object(1)||350||mm| |Minimum Distance<br>Detection, 18% Grey Card,<br>20cmx26cm(2)|||60|100|mm| |Accuracy|Object distance ≥ 200mm||±5||%| ||100mm< object distance<br><200mm||±10||mm| ## **Note(s):** 1. 14k lux halogen light represents 100k lux sunlight equivalent; light on object only. 2. If proximity mode detects an object within ≤ 100mm, it is reported. Only if proximity mode does not detect an object, distance mode result is used. Therefore the full range starting from minimum proximity distance (1mm) to maximum distance for distance mode (600mm) is covered. ## _**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: 23ns (43MHz) **ams Datasheet** **Page 16** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Detailed Description ## _**Typical Optical Characteristics**_ VCSEL Field of Illumination (FOI): 21º Full width from 5% of maximum up to maximum : 19º 1/e[2] TOF Sensor Field of View (FOV): 37º FWHM – in proximity mode : 24º FWHM – in distance mode This Rx SPAD FoV angular response simulates the TMF8701 operation in proximity mode based on the entire SPAD array. The Rx SPAD FoV angular response is reduced when the TMF8701 operates in distance mode since the SPAD array is reduced. This helps to improve ambient light tolerance. **Figure 20: FOI/FOV of TMF8701** ## _**Filter Characteristics**_ FWHM: 56nm Passband Center Frequency: 940nm Min. Stopband Frequency: 350nm Max. Stopband Frequency: 1100nm **ams Datasheet** [v1-08] 2020-Jun-29 **Page 17** Document Feedback **TMF8701 −** Register Description ## **Register Description** ## **Register Overview** **Figure 21: APPID Register** |**0x00: APPID**|**0x00: APPID**|**0x00: APPID**|**0x00: APPID**|**0x00: APPID**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|appid|0|RW|Currently running application:<br>0xC0…. App0 - Measurement application running<br>0x80…. Bootloader running| **Figure 22: APPREV MAJOR Register** |**0x01: APPREV MAJOR**|**0x01: APPREV MAJOR**|**0x01: APPREV MAJOR**|**0x01: APPREV MAJOR**|**0x01: APPREV MAJOR**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|apprevMajor|0|RW|Application major revision| **Figure 23: APPREQID Register** |**0x02: APPREQID**|**0x02: APPREQID**|**0x02: APPREQID**|**0x02: APPREQID**|**0x02: APPREQID**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|appReqid|0|RW|Application that shall be started, set this to<br>0x80…. Bootloader<br>0xC0…. App0 – Measurement application and wait<br>until register 0x00 (APPID) shows this as application.| **Note(s):** 1. Further application IDs might be added in the future. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 18** Document Feedback **TMF8701 −** Register Description ## **Figure 24: ENABLE Register** |**0xe0: ENABLE**|**0xe0: ENABLE**|**0xe0: ENABLE**|**0xe0: ENABLE**|**0xe0: ENABLE**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7|cpu_reset|0|RW_SC|Write a '1' here to reset CPU. This generates global<br>reset, fully resetting CPU and all CPU registers. The bit<br>resets itself, no need to explicitly clear it.| |6|cpu_ready|0|RO|CPU is ready to handle I²C - if this bit is zero, then only<br>the registers 0xe0 and above are usable, the memory<br>mapped I²C space is not used.<br>Bit gets set only explicitly by software, therefore a<br>functional and running firmware is necessary for this<br>bit to work.| |0|pon|1|R_PUSH|1 = Activate oscillator<br>0 = Ask cpu to go to standby<br>Activating the oscillator is implemented in hardware.<br>Whenever this register is '0' and a '1' is being written,<br>the oscillator is being started and CPU receives a<br>PON1 interrupt. It is implemented in the bootloader<br>to execute a reset at this point, but the application<br>goes to an IDLE state.<br>De-activating the oscillator is a software assisted<br>process. It is important that the CPU powers down all<br>modules properly before turning off the oscillator,<br>therefore this is implemented in firmware. So writing a<br>'0' to this register will trigger an internal CPU interrupt.<br>The firmware, after powering down everything, sets<br>the device into standby state.| **Figure 25: INT_STATUS Register** |**0xe1: INT_STATUS**|**0xe1: INT_STATUS**|**0xe1: INT_STATUS**|**0xe1: INT_STATUS**|**0xe1: INT_STATUS**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |1|int2|0|R_PUSH1|Raw histogram available interrupt for App0; asserted<br>when a raw histogram can be retrieved from I²C.<br>int2 status. If bis is asserted, and int2_enab is asserted as<br>well, then the INT pin will be pulled low. Writing a '1' here<br>will clear int1 condition.| |0|int1|0|R_PUSH1|Object detection interrupt for App0; asserted when a<br>result from object detection is available<br>int1 status. If bis is asserted, and int1_enab is asserted as<br>well, then the INT pin will be pulled low. Writing a '1' here<br>will clear int1 condition.| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 19** Document Feedback **TMF8701 −** Register Description ## **Figure 26: INT_ENAB Register** |**0xe2: INT_ENAB**|**0xe2: INT_ENAB**|**0xe2: INT_ENAB**|**0xe2: INT_ENAB**|**0xe2: INT_ENAB**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |1|int2_enab|0|RW|Raw histogram available interrupt for App0; asserted<br>when a raw histogram can be retrieved from I²C.<br>0 = Disabled, 1 = Enabled -> INT output is active if int2 flag<br>is "1"| |0|int1_enab|0|RW|Object detection interrupt for App0; asserted when a<br>result from object detection is available<br>0 = Disabled, 1 = Enabled -> INT output is active if int1 flag<br>is "1"| **Figure 27: ID Register** |**0xe3: ID**|**0xe3: ID**|**0xe3: ID**|**0xe3: ID**|**0xe3: ID**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |5:0|id|0|RO|Chip ID, reads 07h – Do not rely on register bits 6 and 7<br>of this register.| **Figure 28: REVID Register** |**0xe4: REVID**|**0xe4: REVID**|**0xe4: REVID**|**0xe4: REVID**|**0xe4: REVID**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |2:0|rev_id|0|RO|Chip revision ID| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 20** Document Feedback **TMF8701 −** Register Description ## **App0 Registers – appid=0xC0** Following registers are only available if appid=0xC0 (App0): **Figure 29: CMD_DATA9 Register** |**0x06: CMD_DATA9**|**0x06: CMD_DATA9**|**0x06: CMD_DATA9**|**0x06: CMD_DATA9**|**0x06: CMD_DATA9**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data9|0|W|Command data 9 – see register command<br>for future extension of commands| **Figure 30: CMD_DATA8 Register** |**0x07: CMD_DATA8**|**0x07: CMD_DATA8**|**0x07: CMD_DATA8**|**0x07: CMD_DATA8**|**0x07: CMD_DATA8**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data8|0|W|Command data 8 – see register command<br>for future extension of commands| **Figure 31: CMD_DATA7 Register** |**0x08: CMD_DATA7**|**0x08: CMD_DATA7**|**0x08: CMD_DATA7**|**0x08: CMD_DATA7**|**0x08: CMD_DATA7**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data7|0|W|Command data 7 – see register command| **Figure 32: CMD_DATA6 Register** |**0x09: CMD_DATA6**|**0x09: CMD_DATA6**|**0x09: CMD_DATA6**|**0x09: CMD_DATA6**|**0x09: CMD_DATA6**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data6|0|W|Command data 6 – see register command| |**0x09: CMD_DATA6**|**0x09: CMD_DATA6**|**0x09: CMD_DATA6**|**0x09: CMD_DATA6**|**0x09: CMD_DATA6**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data6|0|W|Command data 6 – see register command| **Figure 33: CMD_DATA5 Register** |**0x0a: CMD_DATA5**|**0x0a: CMD_DATA5**|**0x0a: CMD_DATA5**|**0x0a: CMD_DATA5**|**0x0a: CMD_DATA5**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data5|0|W|Command data 5 – see register command| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 21** Document Feedback **TMF8701 −** Register Description **Figure 34: CMD_DATA4 Register** |**0x0b: CMD_DATA4**|**0x0b: CMD_DATA4**|**0x0b: CMD_DATA4**|**0x0b: CMD_DATA4**|**0x0b: CMD_DATA4**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data4|0|W|Command data 4– see register command| **Figure 35: CMD_DATA3 Register** |**0x0c: CMD_DATA3**|**0x0c: CMD_DATA3**|**0x0c: CMD_DATA3**|**0x0c: CMD_DATA3**|**0x0c: CMD_DATA3**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data3|0|W|Command data 3 – see register command| **Figure 36: CMD_DATA2 Register** |**0x0d: CMD_DATA2**|**0x0d: CMD_DATA2**|**0x0d: CMD_DATA2**|**0x0d: CMD_DATA2**|**0x0d: CMD_DATA2**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data2|0|W|Command data 2 – see register command| **Figure 37: CMD_DATA1 Register** |**0x0e: CMD_DATA1**|**0x0e: CMD_DATA1**|**0x0e: CMD_DATA1**|**0x0e: CMD_DATA1**|**0x0e: CMD_DATA1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data1|0|W|Command data 1 – see register command| **Figure 38: CMD_DATA0 Register** |**0x0f: CMD_DATA0**|**0x0f: CMD_DATA0**|**0x0f: CMD_DATA0**|**0x0f: CMD_DATA0**|**0x0f: CMD_DATA0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|cmd_data0|0|W|Command data 0 – see register command| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 22** Document Feedback **TMF8701 −** Register Description ## **Figure 39: COMMAND Register** |**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**||| |---|---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**|| |7:0|Command|0|RW|Direct the device to control or select contents of the registers from<br>0x20...0xDF|| |||||**Setting**|**Meaning**| |||||0x00|No command| |||||0x02|Set flag to perform distance or proximity measurement<br>with 8 bytes of data containing where including setting of<br>calibration (and algorithm state) configuration.<br>**cmd_data7**= Bit mask which calibration/state data was<br>downloaded from the host to TMF8701 prior to setting<br>this command:<br>Bit 0 - dataFactoryCal: when 1 data from register 0x20<br>onward includes factory calibration<br>Bit 1 - dataAlgState: if set, also set dataFactoryCal=1. Data<br>from register 0x20 onwards includes factory calibration<br>and algorithm state.<br>**cmd_data6… cmd_data0**: Identical to command=0x03.| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 23** Document Feedback **TMF8701 −** Register Description |**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**| |---|---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**|| |||||0x03|Set flag to perform distance or proximity measurement<br>with 7 bytes of data containing where<br>**cmd_data6**= Bit mask which algorithm is used<br>Bit 0 - When 1 proximity is enabled<br>Bit 1 - When 1 distance enabled<br>Bits 3:2 - Reserved; set to 00b.<br>Bits 4 - algImmediateInterrupt – When 1 proximity and<br>distance will immediately report to the host an interrupt<br>of the capturing caused by a GPIO event; when 0, will only<br>report to the host when proximity (and distance if<br>enabled) was finished<br>Bit 5 - When 1 combine the capture of the proximity and<br>distance algorithms for maximum speed<br>Bit 6 - Reserved; set to 0.<br>Bit 7 - When 1 do not go to standby between<br>measurements (faster measurement times but higher<br>current consumption)<br>Please note if bits 0 and 1 are both zero, the system will<br>default to proximity and distance algorithms enabled.<br>**cmd_data5**= Bits for GPIO control<br>Bits 3:0 - GPIO0 settings<br>0 – Disabled (tristate)<br>1 - Input: Active low disables collection,<br>immediately abandoning current measurement.<br>Returning to high restarts new<br>measurement<br>2 - Input: Active high disables<br>collection, immediately abandoning current<br>measurement. Returning to low restarts new<br>measurement<br>3 - Output: VCSEL pulse output - see<br>cmd_data4<br>4 - Output low (default after startup)<br>5 - Output high<br>6:15 – Reserved, do not use<br>Bits 7:4 - GPIO1 settings<br>0 - Disabled (tristate)<br>1 - Input: Active low disables collection,<br>immediately abandoning current measurement.<br>Returning to high restarts new measurement<br>2 - Input: Active high disables<br>collection, immediately abandoning<br>current measurement. Returning to low restarts<br>new measurement<br>3 - Output: VCSEL pulse output – see<br>cmd_data4<br>4 - Output low (default after startup)<br>5 - Output high<br>6:15 – Reserved, do not use| **ams Datasheet** **Page 24** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Register Description |**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**||| |---|---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**|| ||||||**cmd_data4**= If cmd_data5 enables VCSEL pulse output<br>for GPIO0 and/or GPIO1, cmd_data4 sets its timings as<br>follows. If set to non-zero, GPIO1 shows the VCSEL pulse;<br>additionally the GPIO1 signal can be set to be asserted<br>before the VCSEL pulse starts<br>‘0’ - No signal,<br>‘1’ - GPIOx, rises 0μs time before VCSEL pulse starts<br>‘2’ - GPIOx rises 100μs before VCSEL pulse,<br>‘3’ - GPIOx rises 200μs before VCSEL pulse and so on.<br>The falling edge of GPIOx happens at the same time the<br>VCSEL stops emitting light.<br>**cmd_data3**= Reserved for future, use 0x00.<br>**cmd_data2**= Repetition period in ms, use 0 for single<br>measurement; if the repetition period is set lower than<br>the ranging time for this mode, the TMF8701 runs at it<br>maximum possible speed (best effort approach).<br>**cmd_data1**= Reserved for future, use 0xFF<br>**cmd_data0**= Reserved for future, use 0xFF<br>Once a measurement is finished the interrupt is asserted if<br>it is enabled by int1_enab. Additionally the transaction ID<br>tid is updated.| |||||0x04|Set flag to perform distance measurement (no proximity<br>algorithm is used) with 5 bytes of data containing where:<br>**cmd_data4**= If set to non-zero, GPIO1 shows the VCSEL<br>pulse; additionally the GPIO1 signal can be set to be<br>asserted before the VCSEL pulse starts,<br>0 for no signal,<br>‘1’=0μs time before VCSEL pulse<br>‘2’=GPIO1 starts 100μs before VCSEL pulse,<br>‘3’= GPIO1 starts 200μs before VCSEL pulse.<br>**cmd_data3**= Reserved for future, use 0x00<br>**cmd_data2**= Repetition period in ms, use 0 for single<br>ranging; if the repetition period is set lower than the<br>ranging time for this mode, the TMF8701 runs at it<br>maximum possible speed (best effort approach)<br>**cmd_data1**= Reserved for future, use 0xFF<br>**cmd_data0**= Reserved for future, use 0xFF<br>Once a measurement is finished the interrupt is asserted if<br>it is enabled by int1_enab. Additionally the transaction ID<br>tid is updated.| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 25** Document Feedback **TMF8701 −** Register Description |**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**||| |---|---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**|| |||||0x0A|Perform factory calibration in the final customer<br>application including cover glass, no ambient light and no<br>target.<br>The result from the factory calibration is stored from<br>register 0x20 onwards (14 bytes).| |||||0x0B|Set flag to download calibration (and algorithm state)<br>configuration to TMF8701.<br>**cmd_data0**= bit mask which calibration/state data was<br>downloaded from the host to TMF8701 prior to setting<br>this command:<br>Bit 0 - dataFactoryCal: When 1 data from register 0x20<br>onward includes factory calibration<br>Bit 1 - dataAlgState: If set, also set dataFactoryCal=1. Data<br>from register 0x20 onwards includes factory calibration<br>and algorithm state.| |||||0x0F|Set gpio control setting without actually performing a<br>measurement as commands 0x02 or 0x03 would do:<br>**cmd_data0**= bits for GPIO control<br>Bits 3:0 - GPIO0 settings<br>0 – Disabled<br>1 - Input: Active low disables collection,<br>immediately abandoning current measurement.<br>Returning to high restarts new measurement<br>2 - Input: Active high disables collection,<br>immediately abandoning current measurement.<br>Returning to low restarts new measurement<br>3 - Output: VCSEL pulse output<br>4 - Output low<br>5 - Output high<br>6:15 – Reserved, do not use<br>Bits 7:4 - GPIO1 settings<br>0 - Disabled<br>1 - Input: Active low disables collection,<br>immediately abandoning current<br>measurement. Returning to high restarts new<br>measurement<br>2 - Input: Active high disables collection,<br>immediately abandoning current measurement.<br>Returning to low restarts new measurement<br>3 - Output: VCSEL pulse output<br>4 - Output low<br>5 - Output high<br>6:15 – Reserved, do not use| **ams Datasheet** **Page 26** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Register Description |**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**|**0x10: COMMAND**||| |---|---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**|| |||||0x30|Enable histogram readout; the internal state machine will<br>stop when a histogram (e.g. calibration) is available and<br>wait for readout by the host. If the selected histogram is<br>readout, the host shall continue the state machine by<br>sending command 0x32<br>**cmd_data3**= Bitmask for the histograms to be readout:<br>**•** Always set bit 0 to ‘0’<br>**•** Set bit 1 to get electrical calibration histograms<br>**•** Set bit 2 to get optical calibration histogram<br>**•** Always set bit 3 to ‘0’<br>**•** Set bit 4 to get proximity histograms<br>**•** Always set bit 5 and 6 to ‘0’<br>**•** Set bit 7 to get distance measurement histograms<br>**cmd_data2**= Set to 0x00<br>**cmd_data1**= bitmask for pileup correct histograms<br>readout:<br>**•** Set bit 0 to get pileup corrected distance<br>measurement histograms<br>**•** Set bit 1 to get pileup corrected sum histogram<br>**•** Set bit 2 to get pileup corrected proximity histogram<br>**•** Always set bit 3-7 to 0<br>**cmd_data0**= Set to 0x00<br>Once above bitmask is set, the device is programed to<br>stop when the histogram is available. Set command=0x04<br>to actually perform the measurement.| |||||0x32|After the host has readout the histogram, continue with<br>internal processing.| |||||0x47|Read out serial number – results see sectionSerial<br>Number Readout – If Register register_contents=0x47| |||||0x80 …<br>0x93|Read 1 quarter of one histogram - copy histogram<br>bits[4:2] to select<br>TDC0… TDC5, quarter bits[1:0] into 0x20... 0x9f(1),(2)| |||||0xff|Stop whatever you are doing as soon as possible and<br>reenter the idle state. The current state will not be<br>interrupted and will require leaving the current state<br>processing to take effect. This command will stop<br>continuous measurement.| ## **Note(s):** 1. At the end of the transaction of read a quarter, the contents of the registers from 0x20-0x9F will be automatically updated, and the contents of registers REGISTER_CONTENTS and TID will be updated. 2. At the end of a TDC, the TDC number will also auto increment. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 27** Document Feedback **TMF8701 −** Register Description ## **Figure 40: PREVIOUS Register** |**0x11: PREVIOUS**|**0x11: PREVIOUS**|**0x11: PREVIOUS**|**0x11: PREVIOUS**|**0x11: PREVIOUS**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|previousCommand|0|RO|Previous command that was executed (or current<br>if continues mode is selected)| **Figure 41: APPREV_MINOR Register** |**0x12: APPREV_MINOR**|**0x12: APPREV_MINOR**|**0x12: APPREV_MINOR**|**0x12: APPREV_MINOR**|**0x12: APPREV_MINOR**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|appRevMinor|0|RO|Application minor revision| **Figure 42: APPREV_PATCH Register** |**0x13: APPREV_PATCH**|**0x13: APPREV_PATCH**|**0x13: APPREV_PATCH**|**0x13: APPREV_PATCH**|**0x13: APPREV_PATCH**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|appRevPatch|0|RO|Application patch number| **Figure 43: STATUS Register** |**0x1d:STATUS**|**0x1d:STATUS**|**0x1d:STATUS**|**0x1d:STATUS**||| |---|---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**|| |7:0|Status|0|RO|Current status or current general operation|| |||||**Setting**|**Meaning**| |||||0x00-0x0F|Ok| |||||0x10-0xFF|Error| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 28** Document Feedback **TMF8701 −** Register Description ## **Figure 44: REGISTER_CONTENTS Register** |**0x1e: REGISTER_CONTENTS**|**0x1e: REGISTER_CONTENTS**|**0x1e: REGISTER_CONTENTS**|**0x1e: REGISTER_CONTENTS**|**0x1e: REGISTER_CONTENTS**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|register_<br>contents|0|RO|Current contents of the I²C ram from 0x20 to 0xEF;<br>the coding is as follows:<br>0Ah ... Calibration data<br>47h ... Serial Number<br>55h ... Results for commands 0x02/0x03 and 0x04<br>80h-93h ... Raw histogram data where<br>80h=TDC0, bin 0... 63<br>81h=TDC0, bin 64... 127<br>82h=TDC0, bin 128... 195<br>83h=TDC0, bin 196... 255<br>84h=TDC1, bin 0... 63<br>...<br>93h=TDC4, bin 196... 255| **Figure 45: TID Register** |**0x1f: TID**|**0x1f: TID**|**0x1f: TID**|**0x1f: TID**|**0x1f: TID**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|tid|0|RO|Unique transaction ID, changes with every update of<br>register map by TOF| _**Object Detection Results – If Register register_contents =0x55 (Commands 0x02,0x03 or 0x04)**_ **Figure 46: RESULT_NUMBER Register** |**0x20: RESULT_NUMBER**|**0x20: RESULT_NUMBER**|**0x20: RESULT_NUMBER**|**0x20: RESULT_NUMBER**|**0x20: RESULT_NUMBER**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|result_<br>num|0|RO|Result number, incremented every time there is a unique<br>answer| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 29** Document Feedback **TMF8701 −** Register Description ## **Figure 47: RESULT_INFO Register** |**0x21: RESULT_INFO**|**0x21: RESULT_INFO**|**0x21: RESULT_INFO**|**0x21: RESULT_INFO**||| |---|---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**|| |5:0|reliability|0|RO|Reliability of object - valid range 0 to 63 where 63 is best|| |7:6|measStatus|0|RO|When algImmediateInterrupt == 1|| |||||Will indicate the status of the measurement.|| |||||**Value**|**Definition**| |||||0|Proximity capture interrupted, using<br>previous proximity only result| |||||1|Proximity capture interrupted, using<br>previous proximity and distance result| |||||2|Distance capture interrupted, result is<br>from proximity algorithm only| |||||3|Complete result (distance and proximity)| |||||When algImmediateInterrupt == 0|| |||||Will indicate the status of the measurement.|| |||||**Value**|**Definition**| |||||0|Measurement was not interrupted| |||||1|Reserved| |||||2|Measurement was interrupted (delay) by<br>GPIO interrupt| |||||3|Reserved| **Figure 48: DISTANCE_PEAK_0 Register** |**0x22: DISTANCE_PEAK_0**|**0x22: DISTANCE_PEAK_0**|**0x22: DISTANCE_PEAK_0**|**0x22: DISTANCE_PEAK_0**|**0x22: DISTANCE_PEAK_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|distance_peak[7:0]|0|RO|Distance to the peak in [mm] of the object,<br>least significant byte| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 30** Document Feedback **TMF8701 −** Register Description **Figure 49: DISTANCE_PEAK_1 Register** |**0x23: DISTANCE_PEAK_1**|**0x23: DISTANCE_PEAK_1**|**0x23: DISTANCE_PEAK_1**|**0x23: DISTANCE_PEAK_1**|**0x23: DISTANCE_PEAK_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|distance_peak[15:8]|0|RO|Distance to the peak in [mm] of the<br>object, most significant byte| The sys clock registers is a running timer information – this value is counting up (and wraps around to 0 again) as long as the internal clock is running. As it is derived from the internal RC oscillator and distance information is depending on its accuracy, it can be used to correct an algorithm result by comparing this clock with a more accurate clock inside the host. For correctly updating of these registers by TMF8701, an I²C blockread starting from address 0x1D until 0x27 shall be done. **Figure 50: SYS_CLOCK_0 Register** |**0x24: SYS_CLOCK_0**|**0x24: SYS_CLOCK_0**|**0x24: SYS_CLOCK_0**|**0x24: SYS_CLOCK_0**|**0x24: SYS_CLOCK_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|sys_clock[7:0]|0|RO|System clock/time stamp in units of 0.2μs| **Figure 51: SYS_CLOCK_1 Register** |**0x25: SYS_CLOCK_1**|**0x25: SYS_CLOCK_1**|**0x25: SYS_CLOCK_1**|**0x25: SYS_CLOCK_1**|**0x25: SYS_CLOCK_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|sys_clock[15:8]|0|RO|System clock/time stamp in units of 0.2μs| **Figure 52: SYS_CLOCK_2 Register** |**0x26: SYS_CLOCK_2**|**0x26: SYS_CLOCK_2**|**0x26: SYS_CLOCK_2**|**0x26: SYS_CLOCK_2**|**0x26: SYS_CLOCK_2**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|sys_clock[23:16]|0|RO|System clock/time stamp in units of 0.2μs| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 31** Document Feedback **TMF8701 −** Register Description **Figure 53: SYS_CLOCK_3 Register** |**0x27: SYS_CLOCK_3**|**0x27: SYS_CLOCK_3**|**0x27: SYS_CLOCK_3**|**0x27: SYS_CLOCK_3**|**0x27: SYS_CLOCK_3**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|sys_clock[31:24]|0|RO|System clock/time stamp in units of 0.2μs| 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 power-on of TMF8701 restored to resume operation. **Figure 54: STATE_DATA_0 Register** |**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_0|0|RO|Algorithm state data| |**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**|**0x28: STATE_DATA_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_0|0|RO|Algorithm state data| **Figure 55: STATE_DATA_1 Register** |**0x29: STATE_DATA_1**|**0x29: STATE_DATA_1**|**0x29: STATE_DATA_1**|**0x29: STATE_DATA_1**|**0x29: STATE_DATA_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_1|0|RO|Algorithm state data| **Figure 56: STATE_DATA_2 Register** |**0x2a: STATE_DATA_2**|**0x2a: STATE_DATA_2**|**0x2a: STATE_DATA_2**|**0x2a: STATE_DATA_2**|**0x2a: STATE_DATA_2**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_2|0|RO|Algorithm state data| **Figure 57: STATE_DATA_3 Register** |**0x2b: STATE_DATA_3**|**0x2b: STATE_DATA_3**|**0x2b: STATE_DATA_3**|**0x2b: STATE_DATA_3**|**0x2b: STATE_DATA_3**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_3|0|RO|Algorithm state data| **ams Datasheet** **Page 32** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Register Description **Figure 58: STATE_DATA_4 Register** |**0x2c: STATE_DATA_4**|**0x2c: STATE_DATA_4**|**0x2c: STATE_DATA_4**|**0x2c: STATE_DATA_4**|**0x2c: STATE_DATA_4**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_4|0|RO|Algorithm state data| **Figure 59: STATE_DATA_5 Register** |**0x2d: STATE_DATA_5**|**0x2d: STATE_DATA_5**|**0x2d: STATE_DATA_5**|**0x2d: STATE_DATA_5**|**0x2d: STATE_DATA_5**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_5|0|RO|Algorithm state data| **Figure 60: STATE_DATA_6 Register** |**0x2e: STATE_DATA_6**|**0x2e: STATE_DATA_6**|**0x2e: STATE_DATA_6**|**0x2e: STATE_DATA_6**|**0x2e: STATE_DATA_6**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_6|0|RO|Algorithm state data| **Figure 61: STATE_DATA_7 Register** |**0x2f: STATE_DATA_7**|**0x2f: STATE_DATA_7**|**0x2f: STATE_DATA_7**|**0x2f: STATE_DATA_7**|**0x2f: STATE_DATA_7**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_7|0|RO|Algorithm state data| **Figure 62: STATE_DATA_8 Register** |**0x30: STATE_DATA_8**|**0x30: STATE_DATA_8**|**0x30: STATE_DATA_8**|**0x30: STATE_DATA_8**|**0x30: STATE_DATA_8**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_8|0|RO|Algorithm state data| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 33** Document Feedback **TMF8701 −** Register Description **Figure 63: STATE_DATA_9 Register** |**0x31: STATE_DATA_9**|**0x31: STATE_DATA_9**|**0x31: STATE_DATA_9**|**0x31: STATE_DATA_9**|**0x31: STATE_DATA_9**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_9|0|RO|Algorithm state data| **Figure 64: STATE_DATA_10 Register** |**0x32: STATE_DATA_10**|**0x32: STATE_DATA_10**|**0x32: STATE_DATA_10**|**0x32: STATE_DATA_10**|**0x32: STATE_DATA_10**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_10|0|RO|Algorithm state data| 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. **Figure 65: REFERENCE_HITS_0 Register** |**0x33: REFERENCE_HITS_0**|**0x33: REFERENCE_HITS_0**|**0x33: REFERENCE_HITS_0**|**0x33: REFERENCE_HITS_0**|**0x33: REFERENCE_HITS_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|reference_hits[7:0]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| **Figure 66: REFERENCE_HITS_1 Register** |**0x34: REFERENCE_HITS_1**|**0x34: REFERENCE_HITS_1**|**0x34: REFERENCE_HITS_1**|**0x34: REFERENCE_HITS_1**|**0x34: REFERENCE_HITS_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|reference_hits[15:8]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 34** Document Feedback **TMF8701 −** Register Description **Figure 67: REFERENCE_HITS_2 Register** |**0x35: REFERENCE_HITS_2**|**0x35: REFERENCE_HITS_2**|**0x35: REFERENCE_HITS_2**|**0x35: REFERENCE_HITS_2**|**0x35: REFERENCE_HITS_2**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|reference_hits[23:16]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| **Figure 68: REFERENCE_HITS_3 Register** |**0x36: REFERENCE_HITS_3**|**0x36: REFERENCE_HITS_3**|**0x36: REFERENCE_HITS_3**|**0x36: REFERENCE_HITS_3**|**0x36: REFERENCE_HITS_3**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|reference_hits[31:24]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| **Figure 69: OBJECT_HITS_0 Register** |**0x37: OBJECT_HITS_0**|**0x37: OBJECT_HITS_0**|**0x37: OBJECT_HITS_0**|**0x37: OBJECT_HITS_0**|**0x37: OBJECT_HITS_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|object_hits[7:0]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| **Figure 70: OBJECT_HITS_1 Register** |**0x38: OBJECT_HITS_1**|**0x38: OBJECT_HITS_1**|**0x38: OBJECT_HITS_1**|**0x38: OBJECT_HITS_1**|**0x38: OBJECT_HITS_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|object_hits[15:8]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 35** Document Feedback **TMF8701 −** Register Description **Figure 71: OBJECT_HITS_2 Register** |**0x39: OBJECT_HITS_2**|**0x39: OBJECT_HITS_2**|**0x39: OBJECT_HITS_2**|**0x39: OBJECT_HITS_2**|**0x39: OBJECT_HITS_2**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|object_hits[23:16]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| **Figure 72: OBJECT_HITS_3 Register** |**0x3a: OBJECT_HITS_3**|**0x3a: OBJECT_HITS_3**|**0x3a: OBJECT_HITS_3**|**0x3a: OBJECT_HITS_3**|**0x3a: OBJECT_HITS_3**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|object_hits[31:24]|0|RO|Sum of the reference SPADs hits during the<br>distance measurement; zero if no object is<br>detected or distance algorithm is no used| ## _**Calibration and Algorithm State Data Exchange**_ These registers shall be pre-loaded by the host before command=0x02 or 0x0B is executed **Figure 73: FACTORY_CALIB_0 Register** |**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_0|0|RW|Factory calibration data<br>bits[3:0] are format revision<br>bits[7:4] are bits [3:0] of crosstalk measurement| |**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**|**0x20: FACTORY_CALIB_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_0|0|RW|Factory calibration data<br>bits[3:0] are format revision<br>bits[7:4] are bits [3:0] of crosstalk measurement| **Figure 74: FACTORY_CALIB_1 Register** |**0x21: FACTORY_CALIB_1**|**0x21: FACTORY_CALIB_1**|**0x21: FACTORY_CALIB_1**|**0x21: FACTORY_CALIB_1**|**0x21: FACTORY_CALIB_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_1|0|RW|Factory calibration data<br>bits[11:4] of crosstalk measurement| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 36** Document Feedback **TMF8701 −** Register Description **Figure 75: FACTORY_CALIB_2 Register** |**0x22: FACTORY_CALIB_2**|**0x22: FACTORY_CALIB_2**|**0x22: FACTORY_CALIB_2**|**0x22: FACTORY_CALIB_2**|**0x22: FACTORY_CALIB_2**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_2|0|RW|Factory calibration data<br>bits[19:12] of crosstalk measurement| **Figure 76: FACTORY_CALIB_3 Register** |**0x23: FACTORY_CALIB_3**|**0x23: FACTORY_CALIB_3**|**0x23: FACTORY_CALIB_3**|**0x23: FACTORY_CALIB_3**|**0x23: FACTORY_CALIB_3**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_3|0|RW|Factory calibration data| **Figure 77: FACTORY_CALIB_4 Register** |**0x24: FACTORY_CALIB_4**|**0x24: FACTORY_CALIB_4**|**0x24: FACTORY_CALIB_4**|**0x24: FACTORY_CALIB_4**|**0x24: FACTORY_CALIB_4**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_4|0|RW|Factory calibration data| **Figure 78: FACTORY_CALIB_5 Register** |**0x25: FACTORY_CALIB_5**|**0x25: FACTORY_CALIB_5**|**0x25: FACTORY_CALIB_5**|**0x25: FACTORY_CALIB_5**|**0x25: FACTORY_CALIB_5**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_5|0|RW|Factory calibration data| **Figure 79: FACTORY_CALIB_6 Register** |**0x26: FACTORY_CALIB_6**|**0x26: FACTORY_CALIB_6**|**0x26: FACTORY_CALIB_6**|**0x26: FACTORY_CALIB_6**|**0x26: FACTORY_CALIB_6**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_6|0|RW|Factory calibration data| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 37** Document Feedback **TMF8701 −** Register Description **Figure 80: FACTORY_CALIB_7 Register** |**0x27: FACTORY_CALIB_7**|**0x27: FACTORY_CALIB_7**|**0x27: FACTORY_CALIB_7**|**0x27: FACTORY_CALIB_7**|**0x27: FACTORY_CALIB_7**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_7|0|RW|Factory calibration data| **Figure 81: FACTORY_CALIB_8 Register** |**0x28: FACTORY_CALIB_8**|**0x28: FACTORY_CALIB_8**|**0x28: FACTORY_CALIB_8**|**0x28: FACTORY_CALIB_8**|**0x28: FACTORY_CALIB_8**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_8|0|RW|Factory calibration data| **Figure 82: FACTORY_CALIB_9 Register** |**0x29: FACTORY_CALIB_9**|**0x29: FACTORY_CALIB_9**|**0x29: FACTORY_CALIB_9**|**0x29: FACTORY_CALIB_9**|**0x29: FACTORY_CALIB_9**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_9|0|RW|Factory calibration data| **Figure 83: FACTORY_CALIB_10 Register** |**0x2a: FACTORY_CALIB_10**|**0x2a: FACTORY_CALIB_10**|**0x2a: FACTORY_CALIB_10**|**0x2a: FACTORY_CALIB_10**|**0x2a: FACTORY_CALIB_10**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_10|0|RW|Factory calibration data| **Figure 84: FACTORY_CALIB_11 Register** |**0x2b: FACTORY_CALIB_11**|**0x2b: FACTORY_CALIB_11**|**0x2b: FACTORY_CALIB_11**|**0x2b: FACTORY_CALIB_11**|**0x2b: FACTORY_CALIB_11**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_11|0|RW|Factory calibration data| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 38** Document Feedback **TMF8701 −** Register Description **Figure 85: FACTORY_CALIB_12 Register** |**0x2c: FACTORY_CALIB_12**|**0x2c: FACTORY_CALIB_12**|**0x2c: FACTORY_CALIB_12**|**0x2c: FACTORY_CALIB_12**|**0x2c: FACTORY_CALIB_12**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_12|0|RW|Factory calibration data| **Figure 86: FACTORY_CALIB_13 Register** |**0x2d: FACTORY_CALIB_13**|**0x2d: FACTORY_CALIB_13**|**0x2d: FACTORY_CALIB_13**|**0x2d: FACTORY_CALIB_13**|**0x2d: FACTORY_CALIB_13**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|factory_calib_13|0|RW|Factory calibration data| If algorithm state data is sent to TMF8701 following registers shall be pre-loaded by the host before command=0x02 or 0x0B is executed. **Note(s):** If only algorithm state data and no calibration data is sent to TMF8701, pre-load algorithm state data starting from address 0x20 instead of 0x2e. **Figure 87: STATE_DATA_WR_0 Register** |**0x2e: STATE_DATA_WR_0**|**0x2e: STATE_DATA_WR_0**|**0x2e: STATE_DATA_WR_0**|**0x2e: STATE_DATA_WR_0**|**0x2e: STATE_DATA_WR_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_0|0|RW|Algorithm state data| **Figure 88: STATE_DATA_WR_1 Register** |**0x2f: STATE_DATA_WR_1**|**0x2f: STATE_DATA_WR_1**|**0x2f: STATE_DATA_WR_1**|**0x2f: STATE_DATA_WR_1**|**0x2f: STATE_DATA_WR_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_1|0|RW|Algorithm state data| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 39** Document Feedback **TMF8701 −** Register Description **Figure 89: STATE_DATA_WR_2 Register** |**0x30: STATE_DATA_WR_2**|**0x30: STATE_DATA_WR_2**|**0x30: STATE_DATA_WR_2**|**0x30: STATE_DATA_WR_2**|**0x30: STATE_DATA_WR_2**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_2|0|RW|Algorithm state data| **Figure 90: STATE_DATA_WR_3 Register** |**0x31: STATE_DATA_WR_3**|**0x31: STATE_DATA_WR_3**|**0x31: STATE_DATA_WR_3**|**0x31: STATE_DATA_WR_3**|**0x31: STATE_DATA_WR_3**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_3|0|RW|Algorithm state data| **Figure 91: STATE_DATA_WR_4 Register** |**0x32: STATE_DATA_WR_4**|**0x32: STATE_DATA_WR_4**|**0x32: STATE_DATA_WR_4**|**0x32: STATE_DATA_WR_4**|**0x32: STATE_DATA_WR_4**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_4|0|RW|Algorithm state data| **Figure 92: STATE_DATA_WR_5 Register** |**0x33: STATE_DATA_WR_5**|**0x33: STATE_DATA_WR_5**|**0x33: STATE_DATA_WR_5**|**0x33: STATE_DATA_WR_5**|**0x33: STATE_DATA_WR_5**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_5|0|RW|Algorithm state data| **Figure 93: STATE_DATA_WR_6 Register** |**0x34: STATE_DATA_WR_6**|**0x34: STATE_DATA_WR_6**|**0x34: STATE_DATA_WR_6**|**0x34: STATE_DATA_WR_6**|**0x34: STATE_DATA_WR_6**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_6|0|RW|Algorithm state data| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 40** Document Feedback **TMF8701 −** Register Description **Figure 94: STATE_DATA_WR_7 Register** |**0x35: STATE_DATA_WR_7**|**0x35: STATE_DATA_WR_7**|**0x35: STATE_DATA_WR_7**|**0x35: STATE_DATA_WR_7**|**0x35: STATE_DATA_WR_7**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_7|0|RW|Algorithm state data| **Figure 95: STATE_DATA_WR_8 Register** |**0x36: STATE_DATA_WR_8**|**0x36: STATE_DATA_WR_8**|**0x36: STATE_DATA_WR_8**|**0x36: STATE_DATA_WR_8**|**0x36: STATE_DATA_WR_8**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_8|0|RW|Algorithm state data| **Figure 96: STATE_DATA_WR_9 Register** |**0x37: STATE_DATA_WR_9**|**0x37: STATE_DATA_WR_9**|**0x37: STATE_DATA_WR_9**|**0x37: STATE_DATA_WR_9**|**0x37: STATE_DATA_WR_9**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_9|0|RW|Algorithm state data| **Figure 97: STATE_DATA_WR_10 Register** |**0x38: STATE_DATA_WR_10**|**0x38: STATE_DATA_WR_10**|**0x38: STATE_DATA_WR_10**|**0x38: STATE_DATA_WR_10**|**0x38: STATE_DATA_WR_10**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|state_data_wr_10|0|RW|Algorithm state data| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 41** Document Feedback **TMF8701 −** Register Description ## _**Raw Histogram Output – If Register register_contents= 0x80 …0x93**_ **Figure 98: HISTOGRAM_START Register** |**0x20: HISTOGRAM_START**|**0x20: HISTOGRAM_START**|**0x20: HISTOGRAM_START**|**0x20: HISTOGRAM_START**|**0x20: HISTOGRAM_START**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|hist_start|0|RW|Quarter of histogram first byte| ...all bytes until... **Figure 99: HISTOGRAM_END Register** |**0x9f: HISTOGRAM_END**|**0x9f: HISTOGRAM_END**|**0x9f: HISTOGRAM_END**|**0x9f: HISTOGRAM_END**|**0x9f: HISTOGRAM_END**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|hist_end|0|RW|Quarter of histogram last byte| **ams Datasheet** **Page 42** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Register Description ## _**Serial Number Readout – If Register register_contents=0x47**_ **Figure 100: SERIAL_NUMBER_0 Register** |**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|serial_number_0|0|RW|Serial number byte 0| |**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**|**0x28: SERIAL_NUMBER_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|serial_number_0|0|RW|Serial number byte 0| **Figure 101: SERIAL_NUMBER_1 Register** |**0x29: SERIAL_NUMBER_1**|**0x29: SERIAL_NUMBER_1**|**0x29: SERIAL_NUMBER_1**|**0x29: SERIAL_NUMBER_1**|**0x29: SERIAL_NUMBER_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|serial_number_1|0|RW|Serial number byte 1| **Figure 102: IDENTIFICATION_NUMBER_0 Register** |**0x2A: IDENTIFICATION_NUMBER_0**|**0x2A: IDENTIFICATION_NUMBER_0**|**0x2A: IDENTIFICATION_NUMBER_0**|**0x2A: IDENTIFICATION_NUMBER_0**|**0x2A: IDENTIFICATION_NUMBER_0**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|identification_number_0|0|RW|Identification number byte 0| **Figure 103: IDENTIFICATION_NUMBER_1 Register** |**0x2B: IDENTIFICATION_NUMBER_1**|**0x2B: IDENTIFICATION_NUMBER_1**|**0x2B: IDENTIFICATION_NUMBER_1**|**0x2B: IDENTIFICATION_NUMBER_1**|**0x2B: IDENTIFICATION_NUMBER_1**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|identification_number_1|0|RW|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. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 43** Document Feedback **TMF8701 −** Register Description ## **Bootloader Registers – appid=0x80** Following registers are only available if appid=0x80 (Bootloader): **Figure 104: BL_CMD_STAT Register** |**0x08: BL_CMD_STAT**|**0x08: BL_CMD_STAT**|**0x08: BL_CMD_STAT**|**0x08: BL_CMD_STAT**|**0x08: BL_CMD_STAT**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|bl_cmd_stat|0|RW|Write: Bootloader Command – see section<br>Bootloader commands<br>Read: Bootloader Status – anything else than<br>0x00 means an error| **Figure 105: BL_SIZE Register** |**0x09: BL_SIZE**|**0x09: BL_SIZE**|**0x09: BL_SIZE**|**0x09: BL_SIZE**|**0x09: BL_SIZE**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |6:0|bl_size|0|RW|Data size in bytes| **Figure 106: BL_DATA Register** |**0x0A - 0x8A: BL_DATA**|**0x0A - 0x8A: BL_DATA**|**0x0A - 0x8A: BL_DATA**|**0x0A - 0x8A: BL_DATA**|**0x0A - 0x8A: BL_DATA**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|bl_data0 … bl_<br>data127|0|RW|Up to 128 data bytes for bootloader<br>commands| **Figure 107: BL_CSUM Register** |**0x8B: BL_CSUM**|**0x8B: BL_CSUM**|**0x8B: BL_CSUM**|**0x8B: BL_CSUM**|**0x8B: BL_CSUM**| |---|---|---|---|---| |**Field**|**Name**|**Reset**|**Type**|**Description**| |7:0|bl_csum|0|RW|Checksum for Sum (Command + Data Size +<br>Data itself) XOR 0xFF| **ams Datasheet** **Page 44** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Register Description ## _**Bootloader Commands**_ The following commands (bl_cmd_stat) are supported by the bootloader: ## **Figure 108: Bootloader Commands** |**Commands**|**Value**|**Meaning**| |---|---|---| |RAMREMAP_RESET|0x11|Remap RAM to address 0 and reset| |DOWNLOAD_INIT|0x14|Initialize for RAM download from host to TMF8701| |W_RAM|0x41|Write RAM region<br>(Plain = not encoded into e.g. Intel Hex Records)| |ADDR_RAM|0x43|Set the read/write RAM pointer to a given address| ## _**RAMREMAP_RESET = Execute Program Downloaded to RAM**_ This command remaps the RAM to address 0 and performs a System reset (see also command RESET). Command is performed immediately without any delay. After this the application that is located 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). **Figure 109: RAMREMAP_RESET Command** |**Address**|**Value**|**Meaning**| |---|---|---| |BL_CMD_STAT|0x11|REMAP RAM to 0 and RESET| |BL_SIZE|0|No parameters| |BL_CSUM|0xEE|| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 45** Document Feedback **TMF8701 −** Register Description ## _**DOWNLOAD_INIT**_ This command is used to initialize the download HW for secure devices. ## **Figure 110:** _**DOWNLOAD_INIT Command**_ |**Address**|**Value**|**Meaning**| |---|---|---| |BL_CMD_STAT|0x14|Initialize the HW for download from host to TMF8701<br>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. **Figure 111: W_RAM Command** |**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| |…||| |BL_DATA127|0..0xFF|128thbyte to be written (only if size was 0x80)| |BL_CSUM|0..0xFF|The CSUM comes immediately after the data.| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 46** Document Feedback **TMF8701 −** Register Description ## _**ADDR_RAM**_ This command is to specify the RAM pointer location for the next R_RAM or W_RAM command. ## **Figure 112: ADDR_RAM Command** |**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|| **ams Datasheet** [v1-08] 2020-Jun-29 **Page 47** Document Feedback **TMF8701 −** Application Information ## **Application Information** ## **SPAD Options** ## _**Signal SPADs**_ Firmware can enable/disable SPADs in the array as needed. **Figure 113: Signal SPADs** ||**Min**|**Typ**|**Max**|**Comments**| |---|---|---|---|---| |1x SPADS|||72|| |10x Attenuated SPADs|||16|| |100x Attenuated SPADs|||16|| Physically there are 4x32=128 signal SPADs, but SPADs with too high dark count rate are disabled during production test. There are four TDCs (TDC1 …TDC4) connected to the output of the SPADs. Each of the TDCs is connected to an array of 32 SPADs (SPADs with too high dark count rate are disabled). In distance mode the number of SPADs are reduced to typ. 40 SPADs to limit the FOV of the TMF8701. ## _**Reference SPADs**_ **Figure 114: Reference SPADs** ||**Min**|**Typ**|**Max**|**Comments**| |---|---|---|---|---| |100x Attenuated SPADs|||9|| Due to the high light intensity form the VCSEL which is located very close to the reference SPADs and has no optical barrier like the signal SPADs only highly attenuated SPADs are used. Physically there are 12 reference SPADs, but SPADs with too high dark count rate are disabled during production test. There is one TDC (TDC0) connected to the output of the SPADs. **ams Datasheet** **Page 48** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Application Information ## **Reference SPAD, TDC and Histogram** There is an internal reference SPAD with associated TDC and histogram. This is used to determine the start time of each pulse. The reference SPAD is processed during calibration. The reference channel processing occurs internal to the device with no user interaction required. All histograms can be processed inside the TMF8701 and/or readout through the I²C interface. As the readout is constrained by the I²C speed and the I²C bus utilization (TMF8701 can support I²C speed up to 1MHz), it is recommended to readout the histograms only for debugging purposes. Figure 115 shows a histogram obtained from TMF8701. The x-axis is scaled in bins, and the nominal bin size is 100ps per bin and each TDC has 256 bins. The y-axis is scaled in counts represented by 16 bits 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 20cm is used to generate the peak around bin 25. **Figure 115: Histogram** **ams Datasheet** [v1-08] 2020-Jun-29 **Page 49** Document Feedback **TMF8701 −** Application Information ## **Schematic** The TMF8701 needs only 3 small 0402 external capacitors for operation: **Figure 116: TMF8701 Application Schematic** **==> picture [440 x 219] intentionally omitted <==** **----- Start of picture text -----**<br> 0.1µF/6V3 VDD<br>High<br>SYNC<br>Power GNDV VDDV<br>Illuminator TMF8701<br>VIO<br>GPIO1 Optics<br>GPIO0<br>Driver VCSEL<br>Reflective<br>EN Control<br>Internal Surface<br>INT<br>SPAD, Reflection<br>Host<br>SDA TDC and<br>SCL ProcessData Histogram OpticalFilter<br>Background<br>VDD GND GNDC VDDC Light<br>VDD 2x<br>0.1µF/6V3<br>**----- End of picture text -----**<br> The SYNC signal connected to GPIO1 can be used to immediately interrupt the TMF8701 VCSEL operation if the high power illuminator is operating. It needs to be ensured that SYNC does not exceed the VDD supply of TMF8701 as otherwise an internal protection diode will start conducting. The VCSEL operation is controlled by setting cmd_data5 of command=0x02 or 0x03 according (see App0 Registers – appid=0xC0 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 can be used as a general GPIO output signal. The signals INT/SDA/SCL need an external pullup resistor to the VIO supply (typically 1.8V). **ams Datasheet** [v1-08] 2020-Jun-29 **Page 50** Document Feedback **TMF8701 −** Application Information ## **PCB Layout** **Figure 117: PCB Layout Recommendation** **==> picture [320 x 207] intentionally omitted <==** **----- Start of picture text -----**<br> VDD VDD<br>VDDC VDDV<br>(0402)<br>GND (0402) GNDC GNDV (0402) GND<br>- a.<br>GPIO0 GPIO0 GPIO1 GPIO1<br>INT INT EN EN<br>SCL SCL GND GND<br>SDA SDA VDD<br>(0402) VDD<br>:.<br>VDDC VDDV<br>C C<br>VDD<br>C<br>**----- End of picture text -----**<br> Use GRM155R70J104KA01 (0402 X7R 0.1μF 6.3V) or capacitors with same or better performance for CVDDC, CVDD and CVDDV. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 51** Document Feedback **TMF8701 −** Application Information ## **PCB Pad Layout** **Figure 118: PCB Pad Layout** ## **Note(s):** 1. All linear dimensions are in millimeters. 2. Dimension tolerances are 0.05mm 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. **ams Datasheet** **Page 52** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Package Information ## **Package Information** ## **Figure 119: Package Drawing** **==> picture [158 x 40] intentionally omitted <==** **----- Start of picture text -----**<br> RoHS Green<br>eo”<br>**----- End of picture text -----**<br> ## **Note(s):** 1. All linear dimensions are in millimeters. 2. Contact finish is Au/Ni 3. This package contains no lead (Pb). 4. This drawing is subject to change without notice. 5. 5-digit tracecode is only on bottom side of the package. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 53** Document Feedback **TMF8701 −** Tape & Reel Information ## **Tape & Reel Information** **Figure 120: Tape and Reel Drawing** ## **Note(s):** 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. 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) - a. 7’’ reels: Each reel is 7 inches in diameter and contains 500 parts. - b. 13’’ reels: Each reel is 13 inches in diameter and contains 5000 parts. 5. **ams** 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. **ams Datasheet** **Page 54** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Soldering & Storage Information ## **Soldering & Storage Information** ## **Soldering Information** The package has been tested and has demonstrated an ability to be reflow soldered to a PCB substrate. The process, equipment, and materials used in these test 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 121: Solder Reflow Profile Graph** **ams Datasheet** [v1-08] 2020-Jun-29 **Page 55** Document Feedback **TMF8701 −** Soldering & Storage Information ## **Figure 122: 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 60s| |Time above 230 °C (T2)|t2|Max 50s| |Time above Tpeak – 10 °C (T3)|t3|Max 10s| |Peak temperature in reflow|Tpeak|260°C| |Temperature gradient in cooling||Max −5°C/s| ## **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 12 months from the date code on the bag when stored under the following conditions: - Shelf Life: 12 months - Ambient Temperature: <40°C - Relative Humidity: <90% Rebaking of the devices will be required if the devices exceed the 12 month shelf life or the Humidity Indicator Card shows that the devices were exposed to conditions beyond the allowable moisture region. **ams Datasheet** **Page 56** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Soldering & Storage Information ## _**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% 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. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 57** Document Feedback **TMF8701 −** Laser Eye Safety ## **Laser Eye Safety** The TMF8701 is designed to meet the Class 1 laser safety limits including single faults in compliance with IEC/EN 60825-1:2014 and IEC/EN 60825-1:2007. This applies to the stand-alone device and the included software supplied by **ams** . 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. Additionally the device has been measured according to IEC/EN 60825-1:2007 and it is classified as class 1 according to this standard as well: **ams Datasheet** [v1-08] 2020-Jun-29 **Page 58** Document Feedback **TMF8701 −** Ordering & Contact Information ## **Ordering & Contact Information** ## **Figure 123: Ordering Information** |**Ordering Code**|**Package**|**Marking**|**Delivery Form**|**Delivery Quantity**| |---|---|---|---|---| |TMF8701-1XM|Optical Module|5-Digit Tracecode<br>(coded)|Tape & Reel (7")|500 parts/reel| |TMF8701-1X|||Tape & Reel (13")|5000 parts/reel| ## **Note(s):** 1. Where X=ROM version (A-Z). Buy our products or get free samples online at: www.ams.com/Products Technical Support is available at: www.ams.com/Technical-Support Provide feedback about this document at: www.ams.com/Document-Feedback For further information and requests, e-mail us at: ams_sales@ams.com For sales offices, distributors and representatives, please visit: www.ams.com/Contact ## **Headquarters** ams AG Tobelbader Strasse 30 8141 Premstaetten Austria, Europe Tel: +43 (0) 3136 500 0 Website: www.ams.com **ams Datasheet** [v1-08] 2020-Jun-29 **Page 59** Document Feedback **TMF8701 −** RoHS Compliant & ams Green Statement ## **RoHS Compliant & ams Green Statement** **RoHS:** The term RoHS compliant means that ams AG 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. Where designed to be soldered at high temperatures, RoHS compliant products are suitable for use in specified lead-free processes. **ams Green (RoHS compliant and no Sb/Br/Cl):** ams Green defines that in addition to RoHS compliance, our products are free of Bromine (Br) and Antimony (Sb) based flame retardants (Br or Sb do not exceed 0.1% by weight in homogeneous material) and do not contain Chlorine (Cl not exceed 0.1% by weight in homogeneous material). **Important Information:** The information provided in this statement represents ams AG knowledge and belief as of the date that it is provided. ams 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 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 AG and ams AG suppliers consider certain information to be proprietary, and thus CAS numbers and other limited information may not be available for release. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 60** Document Feedback **TMF8701 −** Copyrights & Disclaimer ## **Copyrights & Disclaimer** Copyright ams 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 AG are covered by the warranty and patent indemnification provisions appearing in its General Terms of Trade. ams AG makes no warranty, express, statutory, implied, or by description regarding the information set forth herein. ams 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 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 AG for each application. This product is provided by ams 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 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 ams AG rendering of technical or other services. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 61** Document Feedback **TMF8701 −** Document Status ## **Document Status** |**Document Status**|**Product Status**|**Definition**| |---|---|---| |Product Preview|Pre-Development|Information in this datasheet is based on product ideas in<br>the planning phase of development. All specifications are<br>design goals without any warranty and are subject to<br>change without notice| |Preliminary Datasheet|Pre-Production|Information in this datasheet is based on products in the<br>design, validation or qualification phase of development.<br>The performance and parameters shown in this document<br>are preliminary without any warranty and are subject to<br>change without notice| |Datasheet|Production|Information in this datasheet is based on products in<br>ramp-up to full production or full production which<br>conform to specifications in accordance with the terms of<br>ams AG standard warranty as given in the General Terms of<br>Trade| |Datasheet (discontinued)|Discontinued|Information in this datasheet is based on products which<br>conform to specifications in accordance with the terms of<br>ams AG standard warranty as given in the General Terms of<br>Trade, but these products have been superseded and<br>should not be used for new designs| **ams Datasheet** **Page 62** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Revision Information ## **Revision Information** |**Changes from 1-07 (2020-Apr-28) to current revision 1-08 (2020-Jun-29)**|**Page**| |---|---| |Added Laser Eye Safety logo|58| ## **Note(s):** 1. Page and figure numbers for the previous version may differ from page and figure numbers in the current revision. 2. Correction of typographical errors is not explicitly mentioned. **ams Datasheet** [v1-08] 2020-Jun-29 **Page 63** Document Feedback **TMF8701 −** Content Guide ## **Content Guide** ## **1 General Description** - 1 Key Benefits & Features 2 Applications 2 Block Diagram ## **3 Pin Assignments** - 3 Pin Diagram - 3 Pin Description ## **5 Absolute Maximum Ratings** ## **7 Electrical Characteristics** - 7 Recommended Operating Conditions ## **8 Typical Operating Characteristics** ## **10 Detailed Description** - 10 I²C Protocol - 11 TOF Description - 11 System Parameters - 11 I/O - 12 Power Consumption - 13 Timing - _13 Ranging Acquisition Timing_ - _14 Reset Pin and Power-Up Timing_ - 14 Distance and Proximity Algorithm - _14 Calibration_ - _14 Operating Modes and Timings_ - _15 Proximity Mode_ - _16 Proximity and Distance Mode Combined_ 16 VCSEL - 17 Typical Optical Characteristics _17 Filter Characteristics_ ## **18 Register Description** - 18 Register Overview - 21 App0 Registers – appid=0xC0 29 Object Detection Results – If Register register_contents =0x55 (Commands 0x02,0x03 or 0x04) - 36 Calibration and Algorithm State Data Exchange - 42 Raw Histogram Output – If Register - register_contents= 0x80 …0x93 - 43 Serial Number Readout – If Register register_contents=0x47 - 44 Bootloader Registers – appid=0x80 - 45 Bootloader Commands - _45 RAMREMAP_RESET = Execute Program Downloaded to RAM_ - _46 DOWNLOAD_INIT_ - _46 W_RAM 47 ADDR_RAM_ **ams Datasheet** **Page 64** Document Feedback [v1-08] 2020-Jun-29 **TMF8701 −** Content Guide ## **48 Application Information** - 48 SPAD Options - 48 Signal SPADs - 48 Reference SPADs - 49 Reference SPAD, TDC and Histogram - 50 Schematic - 51 PCB Layout - 52 PCB Pad Layout - **53 Package Information** - **54 Tape & Reel Information** - **55 Soldering & Storage Information** - 55 Soldering Information - 56 Storage Information - 56 Moisture Sensitivity 56 Shelf Life - 57 Floor Life - 57 Rebaking Instructions ## **58 Laser Eye Safety** - **59 Ordering & Contact Information** - **60 RoHS Compliant & ams Green Statement** - **61 Copyrights & Disclaimer** - **62 Document Status** - **63 Revision Information** **ams Datasheet** [v1-08] 2020-Jun-29 **Page 65** Document Feedback
Updated at March 27, 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 →