Image not available
Illustrative purposes only
ICM-20789
MEMS Module, 6-Axis Inertial Module, Barometric Pressure Sensor, ±16g, 1.71 V to 3.45 V, LGA-24
⚠️ Reference pricing provided. In case of supply shortages, we will connect you with our trusted procurement partners to ensure your project's continuity.
- Manufacturer: TDK INVENSENSE
- Product type: MEMS Modules
- MEMS Module Function:-; Supply Voltage Min:1.71V; Supply Voltage Max:3.45V; Sensor Case Style:LGA; No. of Pins:24Pins; Gyroscope Range:± 250; Available until stocks are exhausted
- MSL: MSL 1 - Unlimited
- SVHC: No SVHC (15-Jun-2015)
- No. of Pins: 24Pins
- Sensor Type: Accelerometer, Gyroscope
- Sensing Axis: X, Y, Z
- Product Range: -
- Output Interface: I2C, SPI
- Sensor Case Style: LGA
- Supply Voltage Max: 3.45V
- Supply Voltage Min: 1.71V
- MEMS Module Function: Tri-Axis Gyroscope, Tri-Axis Accelerometer
- Sensor Case / Package: LGA
- Operating Temperature Max: 85°C
- Operating Temperature Min: -40°C
- Sensing Range - Gyroscope: ± 250°/s, ± 500°/s, ± 1000°/s, ± 2000°/s
- Temperature Sensing Range: -
- Sensing Range - Accelerometer: ± 2g, ± 4g, ± 8g, ± 16g
| Delivery and price | |
|---|---|
| Units per pack | 500 |
| Price | 4.18 € |
| Current stock | 500+ |
| Lead time | 30 days |
_**ICM-20789**_
## 7-Axis, High Performance Integrated 6-Axis Inertial and Barometric Pressure Sensor
## **GENERAL DESCRIPTION**
## **APPLICATIONS**
The 7-Axis ICM-20789 is an integrated 6-axis inertial device that combines a 3-axis gyroscope, 3-axis accelerometer, and an ultra-low noise MEMS capacitive pressure sensor in a 24pin LGA package. This unique 7-Axis device offers performance of discrete components in a single small footprint for tracking rotational and linear motion as well as pressure differences with an accuracy of ±1 Pa, an accuracy enabling altitude measurement differentials as small as 8.5 cm.
The pressure sensor’s MEMS capacitive architecture provides the industry’s lowest noise at the lowest power, high sensor throughput, and temperature coefficient offset of ±0.5 Pa/°C. The pressure sensor’s combination of high accuracy elevation measurements, low power, and temperature stability complemented by the motion tracking 6-axis inertial sensor in a small footprint, make it ideal for a wide range of motion tracking applications.
The embedded 6-axis MotionTracking device combines a 3- axis gyroscope, 3-axis accelerometer, and a Digital Motion Processor™ (DMP). An available large 4 kB FIFO reduces traffic on the serial bus interface, and power consumption through burst sensor data transmission. The Gyroscope has programmable FSR of ±250 dps, ±500 dps, ±1000 dps and ±2000 dps. The Accelerometer FSR is programmable to ±2g, ±4g, ±8g and ±16g
ICM-20789 has 16-bit ADC for the 6-axis inertial sensor and 24-bit ADC for the pressure Sensor, programmable digital filters, two temperature sensors – one each in 6-axis Inertial and Pressure sensor. The device features an operating voltage of 1.8V. Communication port includes I[2] C at 400 kHz (6-axis and Pressure) and 8 MHz SPI (6-axis only). The package is 4x4x1.365 mm 24-pin to minimize board area requirements.
## **BLOCK DIAGRAM**
**==> picture [142 x 132] intentionally omitted <==**
**----- Start of picture text -----**<br>
AP/HUB<br>I [2] C SPI (6-Axis only) I [2] C<br>6-Axis I [2] C Pressure<br>Motion Sensor<br>ICM-20789<br>**----- End of picture text -----**<br>
- Drones and Flying Toys
- Motion-based gaming controllers
- Virtual Reality headsets and controllers
- Indoor/Outdoor Navigation (dead-reckoning, floor/elevator/step detection)
## **FEATURES**
- Pressure operating range: 30 to 110 kPa
- Noise and current consumption
- 3.2 Pa @ 1.3 µA (LP mode)
- 0.8 Pa @ 5.2 µA (LN mode)
- 0.4 Pa @ 10.4 µA (ULN mode)
- Pressure Sensor Relative Accuracy: ±1 Pa for any 10 hPa change over 950 hPa-1050 hPa at 25°C
- Pressure Sensor Absolute Accuracy: ±1 hPa over 950 hPa-1050 hPa, 0°C to 65°C
- Pressure Sensor Temperature Coefficient Offset: ±0.5 Pa/°C over 25°C to 45°C at 100 kPa
- Gyroscope programmable FSR of ±250 dps, ±500 dps, ±1000 dps, and ±2000 dps
- Accelerometer with Programmable FSR of ±2 _g_ , ±4 _g_ ,
- ±8 _g_ , and ±16 _g_
- Large 4 kB FIFO reduces traffic on the serial bus interface
- EIS FSYNC support
- User-programmable interrupts
- Wake-on-motion interrupt for low power operation of applications processor
- Host interface: 400 kHz Fast Mode I[2] C & 8 MHz SPI (see datasheet for ICM-20689)
- Digital-output temperature sensor (x2)
- Nominal VDD operation at 1.8V
- RoHS and Green compliant
## **ORDERING INFORMATION**
**PART TEMP RANGE PACKAGE** ICM-20789† −40°C to +85°C 24-Pin LGA ~~SE~~ †Denotes RoHS and Green-Compliant Package
**TDK Corporation** 1745 Technology Drive, San Jose, CA 95110 U.S.A +1(408) 988–7339 www.invensense.com
InvenSense reserves the right to change the detail specifications as may be required to permit improvements in the design of its products.
Document Number: DS-000169 Revision: 1.4 Revision Date: 01/30/2018
TDK InvenSense
_**ICM-20789**_
## **TABLE OF CONTENTS**
||General Description ............................................................................................................................................. 1|General Description ............................................................................................................................................. 1|
|---|---|---|
||Block Diagram ...................................................................................................................................................... 1|Block Diagram ...................................................................................................................................................... 1|
||Applications ......................................................................................................................................................... 1||
||Features ............................................................................................................................................................... 1||
||Ordering Information ........................................................................................................................................... 1||
|1|Introduction ......................................................................................................................................................... 8||
||1.1|Purpose and Scope .................................................................................................................................... 8|
||1.2|Product Overview...................................................................................................................................... 8|
||1.3|Applications ............................................................................................................................................... 8|
|2|Features ............................................................................................................................................................... 9||
||2.1|Gyroscope Features .................................................................................................................................. 9|
||2.2|Accelerometer Features ............................................................................................................................ 9|
||2.3|Pressure sensor Features .......................................................................................................................... 9|
||2.4|Additional Features ................................................................................................................................... 9|
||2.5|Motion Processing .................................................................................................................................... 9|
|3|Electrical Characteristics .................................................................................................................................... 10||
||3.1|Gyroscope Specifications ........................................................................................................................ 10|
||3.2|Accelerometer Specifications .................................................................................................................. 11|
||3.3|Pressure Sensor Specifications ................................................................................................................ 12|
||3.4|Electrical Specifications ........................................................................................................................... 13|
||3.5|I2C Timing Characterization ..................................................................................................................... 15|
||3.6|Absolute Maximum Ratings .................................................................................................................... 17|
|4|Applications Information ................................................................................................................................... 18||
||4.1|Pin Out Diagram and Signal Description ................................................................................................. 18|
||4.2|Typical Operating Circuit ......................................................................................................................... 19|
||4.3|Bill of Materials for External Components .............................................................................................. 22|
||4.4|Block Diagram ......................................................................................................................................... 23|
||4.5|Overview ................................................................................................................................................. 24|
||4.6|Three-Axis MEMS Gyroscope with 16-bit ADCs and Signal Conditioning ............................................... 25|
||4.7|Three-Axis MEMS Accelerometer with 16-bit ADCs and Signal Conditioning ......................................... 25|
||4.8|Digital Motion Processor ......................................................................................................................... 25|
||4.9|Pressure Sensor ....................................................................................................................................... 25|
||4.10|I2C Serial Communications Interface .................................................................................................. 25|
||4.11|Self-Test .............................................................................................................................................. 26|
||4.12|Clocking ............................................................................................................................................... 27|
||4.13|Sensor Data Registers ......................................................................................................................... 27|
||4.14|FIFO ..................................................................................................................................................... 27|
||4.15|Interrupts ............................................................................................................................................ 27|
||4.16|Digital-Output Temperature Sensor ................................................................................................... 27|
Page 2 of 65
Document Number: DS-000169 Revision: 1.4
TDK InvenSense
_**ICM-20789**_
|TDK|TDK|<br>**_ICM-20789_**<br>TDK InvenSense|
|---|---|---|
||4.17|Bias and LDOs ..................................................................................................................................... 27|
||4.18|Charge Pump ...................................................................................................................................... 27|
||4.19|Standard Power Modes – Update the power modes ......................................................................... 28|
|5|Programmable Interrupts .................................................................................................................................. 29||
||5.1|Per Axis Wake-on-Motion Interrupt ....................................................................................................... 29|
|6|Digital Interface ................................................................................................................................................. 30||
||6.1|I2C Serial Interface ................................................................................................................................... 30|
||6.2|I2C Interface ............................................................................................................................................. 30|
||6.3|I2C Communications Protocol (6-Axis only. For pressure please see chapter 10) ................................... 30|
||6.4|I2C Terms ................................................................................................................................................. 32|
|7|Serial Interface Considerations .......................................................................................................................... 34||
||7.1|ICM-20789 Supported Interfaces ............................................................................................................ 34|
|8|Register Map ...................................................................................................................................................... 35||
|9|Register Descriptions ......................................................................................................................................... 37||
||9.1|Registers Descriptions ............................................................................................................................. 37|
||9.2|Registers 0 to 2 – Self-Test Registers ...................................................................................................... 37|
||9.3|Registers 13 to 15 .................................................................................................................................... 37|
||9.4|Register 19 – Gyro Offset Adjustment Register ...................................................................................... 37|
||9.5|Register 20 – Gyro Offset Adjustment Register ...................................................................................... 37|
||9.6|Register 21 – Gyro Offset Adjustment Register ...................................................................................... 38|
||9.7|Register 22 – Gyro Offset Adjustment Register ...................................................................................... 38|
||9.8|Register 23 – Gyro Offset Adjustment Register ...................................................................................... 38|
||9.9|Register 24 – Gyro Offset Adjustment Register ...................................................................................... 38|
||9.10|Register 25 – Sample Rate Divider. ..................................................................................................... 38|
||9.11|Register 26 – Configuration ................................................................................................................ 39|
||9.12|Register 27 – Gyroscope Configuration .............................................................................................. 39|
||9.13|Register 28 – Accelerometer Configuration ....................................................................................... 40|
||9.14|Register 29 – Accelerometer Configuration 2..................................................................................... 40|
||9.15|Register 30 – Low Power Mode Configuration ................................................................................... 41|
||9.16|Register 32 – Wake on Motion Threshold .......................................................................................... 42|
||9.17|Register 33 – Wake on Motion Threshold .......................................................................................... 42|
||9.18|Register 34 – Wake on Motion Threshold .......................................................................................... 42|
||9.19|Register 35 – FIFO Enable ................................................................................................................... 43|
||9.20|Register 55 – Interrupt/Bypass Pin Configuration .............................................................................. 43|
||9.21|Register 56 – Interrupt Enable ............................................................................................................ 44|
||9.22|Register 57 – DMP Interrupt Status .................................................................................................... 44|
||9.23|Register 58 – Interrupt Status ............................................................................................................. 44|
||9.24|Register 59 – Accelerometer Measurements ..................................................................................... 44|
||9.25|Register 60 – Accelerometer Measurements ..................................................................................... 44|
||9.26|Register 61 – Accelerometer Measurements ..................................................................................... 45|
Page 3 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
|‘TDK|<br>**_ICM-20789_**<br>‘TDK InvenSense|
|---|---|
|9.27|Register 62 – Accelerometer Measurements ..................................................................................... 45|
|9.28|Register 63 – Accelerometer Measurements ..................................................................................... 45|
|9.29|Register 64 – Accelerometer Measurements ..................................................................................... 45|
|9.30|Register 65 – Temperature Measurement ......................................................................................... 45|
|9.31|Register 66 – Temperature Measurement ......................................................................................... 45|
|9.32|Register 67 – Gyroscope Measurement ............................................................................................. 45|
|9.33|Register 68 – Gyroscope Measurement ............................................................................................. 46|
|9.34|Register 69 – Gyroscope Measurement ............................................................................................. 46|
|9.35|Register 70 – Gyroscope Measurement ............................................................................................. 46|
|9.36|Register 71 – Gyroscope Measurement ............................................................................................. 46|
|9.37|Register 72 – Gyroscope Measurement ............................................................................................. 46|
|9.38|Register 104 – Signal Path Reset ......................................................................................................... 46|
|9.39|Register 105 – Accelerometer Intelligence Control ............................................................................ 47|
|9.40|Register 106 – User Control ................................................................................................................ 47|
|9.41|Register 107 – Power Management 1 ................................................................................................ 48|
|9.42|Register 108 – Power Management 2 ................................................................................................ 48|
|9.43|Register 114 – FIFO Count Registers ................................................................................................... 48|
|9.44|Register 115 – FIFO Count Registers ................................................................................................... 49|
|9.45|Register 116 – FIFO Read Write .......................................................................................................... 49|
|9.46|Register 117 – Who Am I .................................................................................................................... 49|
|9.47|Register 119 – Accelerometer Offset Register.................................................................................... 49|
|9.48|Register 120 – Accelerometer Offset Register.................................................................................... 50|
|9.49|Register 122 – Accelerometer Offset Register.................................................................................... 50|
|9.50|Register 123 – Accelerometer Offset Register.................................................................................... 50|
|9.51|Register 125 – Accelerometer Offset Register.................................................................................... 50|
|9.52|Register 126 – Accelerometer Offset Register.................................................................................... 50|
|I2C Operation And Communication.................................................................................................................... 51||
|10.1|Power-Up and Communication Start .................................................................................................. 51|
|10.2|Measurement Commands .................................................................................................................. 51|
|10.3|Starting a Measurement ..................................................................................................................... 51|
|10.4|Sensor Behavior during Measurement ............................................................................................... 51|
|10.5|Readout of Measurement Results ...................................................................................................... 51|
|10.6|Soft Reset ............................................................................................................................................ 52|
|10.7|Readout of ID Register ........................................................................................................................ 52|
|10.8|Checksum Calculation ......................................................................................................................... 52|
|10.9|Conversion of Signal Output ............................................................................................................... 52|
|10.10|Readout of Calibration Parameters .................................................................................................... 53|
|10.11|Sample Code: Example C Syntax ......................................................................................................... 54|
|10.12|Sample Code: Conversion Formula (Example Python Syntax) ............................................................ 56|
|10.13|Sample Code: Using Conversion Formula (Example Python Syntax) .................................................. 57|
Page 4 of 65
Document Number: DS-000169 Revision: 1.4
TDK InvenSense
_**ICM-20789**_
|TDK|<br>**_ICM-20789_**<br>TDK InvenSense|
|---|---|
|10.14|Communication Data Sequences ........................................................................................................ 57|
|Assembly ............................................................................................................................................................ 58||
|11.1|Orientation of Axes ............................................................................................................................. 58|
|11.2|Implementation and Usage Recommendations ................................................................................. 58|
|11.3|Package Dimensions ........................................................................................................................... 59|
|Part Number Package Marking .......................................................................................................................... 61||
|Ordering Guide .................................................................................................................................................. 62|Ordering Guide .................................................................................................................................................. 62|
|Reference ........................................................................................................................................................... 63||
|Revision History ................................................................................................................................................. 64|Revision History ................................................................................................................................................. 64|
Page 5 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **LIST OF FIGURES**
|Figure 1. I|Figure 1. I2C Bus Timing Diagram ............................................................................................................................................................. 16|
|---|---|
|Figure 2. Pin out Diagram for ICM-20789 ................................................................................................................................................ 18|Figure 2. Pin out Diagram for ICM-20789 ................................................................................................................................................ 18|
|Figure 3. I|Figure 3. I2C Communication – 1.8V Supply Schematic ........................................................................................................................... 19|
|Figure 4. I|Figure 4. I2C Communication MCU Interface at 3V or 1.8V Schematic .................................................................................................... 20|
|Figure 5. SPI Communication for Gyro/Accel; I|Figure 5. SPI Communication for Gyro/Accel; I2C for Pressure Schematic .............................................................................................. 21|
|Figure 6. SPI Communication for Gyro/Accel; I|Figure 6. SPI Communication for Gyro/Accel; I2C Pressure; MCU Digital Interface: 1.8V Schematic ...................................................... 21|
|Figure 7. SPI Communication for Gyro/Accel; I|Figure 7. SPI Communication for Gyro/Accel; I2C for Pressure; MCU Digital Interface: 3.0V Schematic................................................. 22|
|Figure 8. ICM-20789 Block Diagram (I|Figure 8. ICM-20789 Block Diagram (I2C interface).................................................................................................................................. 23|
|Figure 9. ICM-20789 Block Diagram (SPI/ I|Figure 9. ICM-20789 Block Diagram (SPI/ I2C interface) .......................................................................................................................... 24|
|Figure 10. ICM-20789 Solution Using I|Figure 10. ICM-20789 Solution Using I2C Interface .................................................................................................................................. 26|
|Figure 11. START and STOP Conditions .................................................................................................................................................... 30|Figure 11. START and STOP Conditions .................................................................................................................................................... 30|
|Figure 12. Acknowledge on the I|Figure 12. Acknowledge on the I2C Bus ................................................................................................................................................... 31|
|Figure 13. Complete I|Figure 13. Complete I2C Data Transfer ..................................................................................................................................................... 31|
|Figure 14. I/O Levels and Connections ..................................................................................................................................................... 34|Figure 14. I/O Levels and Connections ..................................................................................................................................................... 34|
|Figure 15. Communication Sequence for starting a measurement and reading measurement results .................................................. 57|Figure 15. Communication Sequence for starting a measurement and reading measurement results .................................................. 57|
|Figure 16. Orientation of Axes of Sensitivity and Polarity of Rotation .................................................................................................... 58|Figure 16. Orientation of Axes of Sensitivity and Polarity of Rotation .................................................................................................... 58|
|Figure 17. Package Dimensions................................................................................................................................................................ 59|Figure 17. Package Dimensions................................................................................................................................................................ 59|
|Figure 18. ICM-20789 recommended PCB land pattern .......................................................................................................................... 60|Figure 18. ICM-20789 recommended PCB land pattern .......................................................................................................................... 60|
|Figure 19. Part Number Package Marking ............................................................................................................................................... 61|Figure 19. Part Number Package Marking ............................................................................................................................................... 61|
Page 6 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **LIST OF TABLES**
|**LIST OF TABLES**|**LIST OF TABLES**|
|---|---|
|Table 1. Gyroscope Specifications ........................................................................................................................................................... 10|Table 1. Gyroscope Specifications ........................................................................................................................................................... 10|
|Table 2. Accelerometer Specifications ..................................................................................................................................................... 11|Table 2. Accelerometer Specifications ..................................................................................................................................................... 11|
|Table 3. Operation Ranges ....................................................................................................................................................................... 12|Table 3. Operation Ranges ....................................................................................................................................................................... 12|
|Table 4. Operation Modes ....................................................................................................................................................................... 12|Table 4. Operation Modes ....................................................................................................................................................................... 12|
|Table 5. Pressure Sensor Specifications ................................................................................................................................................... 12|Table 5. Pressure Sensor Specifications ................................................................................................................................................... 12|
|Table 6. Temperature Sensor Specifications ............................................................................................................................................ 13|Table 6. Temperature Sensor Specifications ............................................................................................................................................ 13|
|Table 7. D.C. Electrical Characteristics ..................................................................................................................................................... 13|Table 7. D.C. Electrical Characteristics ..................................................................................................................................................... 13|
|Table 8. A.C. Electrical Characteristics (6-Axis) ........................................................................................................................................ 14|Table 8. A.C. Electrical Characteristics (6-Axis) ........................................................................................................................................ 14|
|Table 9. Electrical Characteristics (Pressure sensor) ................................................................................................................................ 15|Table 9. Electrical Characteristics (Pressure sensor) ................................................................................................................................ 15|
|Table 10. Other Electrical Specifications .................................................................................................................................................. 15|Table 10. Other Electrical Specifications .................................................................................................................................................. 15|
|Table 11. I|Table 11. I2C Timing Characteristics ......................................................................................................................................................... 16|
|Table 12. Absolute Maximum Ratings (6-Axis) ........................................................................................................................................ 17|Table 12. Absolute Maximum Ratings (6-Axis) ........................................................................................................................................ 17|
|Table 13. Absolute Maximum Ratings (pressure sensor)......................................................................................................................... 17|Table 13. Absolute Maximum Ratings (pressure sensor)......................................................................................................................... 17|
|Table 14. Signal Descriptions ................................................................................................................................................................... 18|Table 14. Signal Descriptions ................................................................................................................................................................... 18|
|Table 15. Bill of Materials ........................................................................................................................................................................ 22|Table 15. Bill of Materials ........................................................................................................................................................................ 22|
|Table 16. Standard Power Modes for ICM-20789.................................................................................................................................... 28|Table 16. Standard Power Modes for ICM-20789.................................................................................................................................... 28|
|Table 17. Table of Interrupt Sources ........................................................................................................................................................ 29|Table 17. Table of Interrupt Sources ........................................................................................................................................................ 29|
|Table 18. Serial Interface ......................................................................................................................................................................... 30|Table 18. Serial Interface ......................................................................................................................................................................... 30|
|Table 19. I|Table 19. I2C Term SPI Interface ............................................................................................................................................................... 32|
|Table 20. Register Map ............................................................................................................................................................................ 36|Table 20. Register Map ............................................................................................................................................................................ 36|
|Table 21. Gyroscope and Temperature Sensor (Filtered according to the value of DLPF_CFG and FCHOICE_B) .................................... 39|Table 21. Gyroscope and Temperature Sensor (Filtered according to the value of DLPF_CFG and FCHOICE_B) .................................... 39|
|Table 22. Accelerometer Data Rates and Bandwidths (Low Noise Mode) .............................................................................................. 40|Table 22. Accelerometer Data Rates and Bandwidths (Low Noise Mode) .............................................................................................. 40|
|Table 23. Accelerometer Data Rates and Bandwidths (Low Power Mode) ............................................................................................. 41|Table 23. Accelerometer Data Rates and Bandwidths (Low Power Mode) ............................................................................................. 41|
|Table 24. Example Configurations for Gyroscope Low Power Mode ....................................................................................................... 42|Table 24. Example Configurations for Gyroscope Low Power Mode ....................................................................................................... 42|
|Table 25. ICM-20789 I|Table 25. ICM-20789 I2C Device Address ................................................................................................................................................. 51|
|Table 26. Measurement Commands ........................................................................................................................................................ 51|Table 26. Measurement Commands ........................................................................................................................................................ 51|
|Table 27. Soft Reset Command ................................................................................................................................................................ 52|Table 27. Soft Reset Command ................................................................................................................................................................ 52|
|Table 28. Readout Command of ID Register ............................................................................................................................................ 52|Table 28. Readout Command of ID Register ............................................................................................................................................ 52|
|Table 29. Structure of the 16-bit ID ......................................................................................................................................................... 52|Table 29. Structure of the 16-bit ID ......................................................................................................................................................... 52|
|Table 30. ICM-20789 I|Table 30. ICM-20789 I2C CRC Properties .................................................................................................................................................. 52|
|Table 31. Package Dimensions Table ....................................................................................................................................................... 59|Table 31. Package Dimensions Table ....................................................................................................................................................... 59|
Page 7 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## _**INTRODUCTION**_
## **1.1 PURPOSE AND SCOPE**
This document is a product specification, providing a description, specifications, and design related information on the ICM-20789, a 6-axis inertial and pressure sensor device. The device is packaged in a 4 mm x 4 mm x 1.365 mm 24-pin LGA package.
## **1.2 PRODUCT OVERVIEW**
The ICM-20789 is a 6-axis inertial sensor, 3-axis gyroscope and a 3-axis accelerometer, ultra-low noise MEMS capacitive barometric pressure sensor in a 4 mm x 4 mm x 1.365 mm (24-pin LGA) package. It features a 4 KB FIFO that can lower the traffic on the serial bus interface.
The digital output barometric pressure sensor is based on an ultra-low noise innovative MEMS capacitive technology that can measure pressure differences with an accuracy of ±1 Pa, an accuracy enabling altitude measurement differentials as small as 8.5 cm without the penalty of increased power consumption or reduced sensor throughput. The capacitive pressure sensor has a ±1 hPa absolute accuracy over its full range of 300 hPa -1100 hPa. The pressure sensor offers industry leading temperature stability of the pressure sensor with a temperature coefficient offset of ±0.5 Pa/°C, embedded temperature sensor and 400 kHz I[2] C bus for communication.
The gyroscope has a programmable full-scale range of ±250 dps, ±500 dps, ±1000 dps, and ±2000 dps. The accelerometer has a userprogrammable full-scale range of ±2 _g_ , ±4 _g_ , ±8 _g_ , and ±16 _g_ . Factory-calibrated initial sensitivity of both sensors reduces productionline calibration requirements. Other features include on-chip 16-bit ADCs, programmable digital filters, another embedded temperature sensor, and programmable interrupts. The device features I[2] C serial interface to access its registers at 400 kHz as well as at 8 MHz SPI.
By leveraging its patented and volume-proven CMOS-MEMS fabrication platform, which integrates MEMS wafers with companion CMOS electronics through wafer-level bonding, TDK-InvenSense has driven the package size down to a footprint and thickness of 4 mm x 4 mm x 1.365 mm (24-pin LGA), to provide an integrated high-performance package. The device provides high robustness by supporting 10,000 _g_ shock reliability.
## **1.3 APPLICATIONS**
- Drones and Flying Toys
- Motion-based gaming controllers
- Virtual Reality Headsets & Controllers
- Indoor/Outdoor Navigation (dead-reckoning, floor/elevation/step detection)
Page 8 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## _**FEATURES**_
## **2.1 GYROSCOPE FEATURES**
- Digital-output X-, Y-, and Z-axis angular rate sensors (gyroscopes) with a user-programmable full-scale range of ±250 dps, ±500 dps, ±1000 dps, and ±2000 dps and integrated 16-bit ADCs
- Digitally-programmable low-pass filter
- Low-power gyroscope operation
- Factory calibrated sensitivity scale factor
- Self-test
## **2.2 ACCELEROMETER FEATURES**
- Digital-output X-, Y-, and Z-axis accelerometer with a programmable full scale range of ±2 _g_ , ±4 _g_ , ±8 _g_ , and ±16 _g_ and integrated 16-bit ADCs
- User-programmable interrupts
- Wake-on-motion interrupt for low power operation of applications processor
- Self-test
## **2.3 PRESSURE SENSOR FEATURES**
- Pressure operating range: 30 kPa to 110 kPa
- 4 operating modes to optimize noise and power, 3 example modes:
- 3.2 Pa @ 1.3 µA (LP mode)
- 0.8 Pa @ 5.2 µA (LN mode)
- 0.4 Pa @ 10.4 µA (ULN mode)
- Relative accuracy: ±1 Pa for any 10 hPa change over 950 hPa-1050 hPa at 25°C
- Absolute accuracy: ±1 hPa over 950 hPa-1050 hPa, 0°C to 65°C
- Temperature Coefficient Offset: ±0.5 Pa/°C over 25°C to 45°C at 100 kPa
- I[2] C at 400 kHz
- Temperature sensor accuracy: ±0.4°C
## **2.4 ADDITIONAL FEATURES**
- Minimal cross-axis sensitivity between the accelerometer and gyroscope axes
- 4 kB FIFO buffer enables the applications processor to read the data in bursts
- Digital-output temperature sensor
- User-programmable digital filters for gyroscope, accelerometer, and temp sensor
- 10,000 _g_ shock tolerant
- 400 kHz Fast Mode I[2] C for communicating with all registers
- RoHS and Green compliant
## **2.5 MOTION PROCESSING**
- Internal Digital Motion Processing™ (DMP™) engine supports advanced MotionProcessing and low power functions
- DMP operation is possible in low-power gyroscope and low-power accelerometer modes
Page 9 of 65
Document Number: DS-000169 Revision: 1.4
~~4STDIK iensesce~~
_**ICM-20789**_ ~~sss~~
## ~~3~~ _**ELECTRICAL CHARACTERISTICS**_
## **3.1 GYROSCOPE SPECIFICATIONS**
Typical Operating Circuit Figure 3, VDD = 1.8V, VDDIO = 1.8V, TA=25°C, unless otherwise noted.
|**PARAMETER**<br>~~a~~|**CONDITIONS**<br>~~a~~|**MIN**<br>~~a~~|**TYP**<br>~~a~~|**MAX**<br>~~a~~|**UNITS**<br>~~a~~|**NOTES**<br>~~a~~|
|---|---|---|---|---|---|---|
|**GYROSCOPE SENSITIVITY**<br>~~a~~<br>~~BC~~|||||||
|Full-Scale Range<br>~~BC~~|FS_SEL=0<br><br>~~I (S(O~~|~~(S(O~~|±250<br><br>~~(S(O~~||dps<br>|3<br>|
|~~BCIS~~|FS_SEL=1<br>~~IS~~<br>~~I (S(O~~|~~IS~~<br>~~(S(O~~|±500<br>~~IS~~<br>~~(S(O~~|~~IS~~|dps<br>~~IS~~|3<br>~~IS~~|
|~~Ce~~|FS_SEL=2<br>~~I (S(O~~<br>~~Ce~~<br>~~nn~~|~~(S(O~~<br>~~Ce~~<br>~~QO~~|±1000<br>~~(S(O~~<br>~~Ce~~<br>~~QO~~|~~Ce~~<br>~~(OO~~|dps<br>~~Ce~~<br>~~(OO~~|3<br>~~Ce~~|
|~~ID~~<br>~~BC~~|FS_SEL=3<br>~~ID~~<br>~~nn~~<br>~~nn~~<br>|~~ID~~<br>~~QO~~<br>~~QO~~<br>|±2000<br>~~ID~~<br>~~QO~~<br>~~QO~~<br>|~~ID~~<br>~~(OO~~<br>~~(OO~~<br>|dps<br>~~ID~~<br>~~(OO~~<br>~~(OO~~<br>|3<br>~~ID~~<br>|
|Gyroscope ADC Word Length<br>~~ID~~<br>~~BC~~|~~nn~~<br>~~ID~~<br>~~nn~~<br>|~~QO~~<br>~~ID~~<br>~~QO~~<br>|16<br>~~QO~~<br>~~ID~~<br>~~QO~~<br>|~~(OO~~<br>~~ID~~<br>~~(OO~~<br>|bits<br>~~(OO~~<br>~~ID~~<br>~~(OO~~<br>|3<br>~~ID~~<br>|
|SensitivityScale Factor<br>~~BC~~|FS_SEL=0<br>~~nn~~<br>|~~QO~~<br>|131<br>~~QO~~<br>|~~(OO~~<br>|LSB/(dps)<br>~~(OO~~<br>|3<br>|
|~~BCCe~~|FS_SEL=1<br>~~nn~~<br>~~Ce~~<br>~~I (US~~|~~QO~~<br>~~Ce~~<br>~~(US~~|65.5<br>~~QO ~~<br>~~Ce~~<br>~~(I~~|~~(OO~~<br>~~Ce~~|LSB/(dps)<br>~~(OO~~<br>~~Ce~~|3<br>~~Ce~~|
|~~IY~~|FS_SEL=2<br>~~IY~~<br>~~I (US~~|~~IY~~<br>~~(US~~|32.8<br>~~IY~~<br>~~(I~~|~~IY~~|LSB/(dps)<br>~~IY~~|3<br>~~IY~~|
|~~IY~~<br>~~Cf~~<br>~~a~~|FS_SEL=3<br>~~IY~~<br>~~I (US~~<br>~~Cf~~<br>~~nn~~|~~IY~~<br>~~(US~~<br>~~Cf~~<br>~~QO~~|16.4<br>~~IY~~<br>~~(I~~<br>~~Cf~~<br>~~QO~~|~~IY~~<br>~~Cf~~<br>~~(OO~~|LSB/(dps)<br>~~IY~~<br>~~Cf~~<br>~~(OO~~|3<br>~~IY~~<br>~~Cf~~|
|SensitivityScale Factor Tolerance<br>~~ID~~<br>~~a~~|Component-Level, 25°C<br>~~ID~~<br>~~nn~~<br>~~ee~~|~~ID~~<br>~~QO~~<br>~~ee~~|±2<br>~~ID~~<br>~~QO~~<br>~~ee~~|~~ID~~<br>~~(OO~~<br>~~ee~~|%<br>~~ID~~<br>~~(OO~~<br>~~ee~~|2<br>~~ID~~|
|Sensitivity Scale Factor Variation Over<br>Temperature<br>~~a~~|-40°C to +85°C<br>~~nn~~<br>~~ee~~|~~QO~~<br>~~ee~~|±1.5<br>~~QO ~~<br>~~ee~~|~~(OO~~<br>~~ee~~|%<br>~~(OO~~<br>~~ee~~|1|
|Nonlinearity<br>~~Be~~<br>~~Co~~|Best fit straight line; 25°C<br>~~ee ~~<br>~~Be~~<br>~~nnn~~<br>|~~ee~~<br>~~Be~~<br>~~GD~~<br>|±0.1<br>~~ee~~<br>~~Be~~<br>|~~ee~~<br>~~Be~~<br>|%<br>~~ee~~<br>~~Be~~<br>|1<br>~~Be~~<br>|
|Cross-Axis Sensitivity<br>~~ny~~<br>~~Co~~|~~ny~~<br>~~nnn~~<br>|~~ny~~<br>~~GD~~<br>|±2<br>~~ny~~<br>|~~ny~~<br>|%<br>~~ny~~<br>|1<br>~~ny~~<br>|
|**ZERO-RATE OUTPUT(ZRO)**<br>~~ny~~<br>~~nnn~~<br>~~GD~~<br>~~Co~~<br>~~nnn~~<br>~~(S(O~~|||||||
|Initial ZRO Tolerance<br>~~CoI~~<br>~~Co~~|Component-Level, 25°C<br>~~nnn~~<br>~~I~~<br>~~nnn~~<br>~~nn~~<br>|~~GD~~<br>~~I~~<br>~~(S(O~~<br>~~GS~~<br>|±5<br>~~I~~<br>~~(S(O~~<br>~~(OU~~<br>|~~I~~<br>|dps<br>~~I~~<br>|2<br>~~I~~<br>|
|ZRO Variation Over Temperature<br>~~I~~<br>~~ID~~<br>~~Co~~|-40°C to +85°C<br>~~I~~<br>~~nnn~~<br>~~ID~~<br>~~nn~~<br>|~~I~~<br>~~(S(O~~<br>~~ID~~<br>~~GS~~<br>|±0.05<br>~~I~~<br>~~(S(O~~<br>~~ID~~<br>~~(OU~~<br>|~~I~~<br>~~ID~~<br>|dps/°C<br>~~I~~<br>~~ID~~<br>|1<br>~~I~~<br>~~ID~~<br>|
|**GYROSCOPE NOISE PERFORMANCE(FS_SEL=0)**<br>~~ID~~<br>~~nn~~<br>~~GS(OU~~<br>~~Co~~|||||||
|Noise Spectral Density<br>~~CoCf~~|~~nn~~<br>~~Cf~~<br>~~nn~~|~~GS~~<br>~~Cf~~<br>~~QO~~|0.006<br>~~(OU~~<br>~~Cf~~<br>~~QO~~|~~Cf~~<br>~~(OO~~|dps/√Hz<br>~~Cf~~<br>~~(OO~~|1<br>~~Cf~~|
|Gyroscope Mechanical Frequencies<br>~~ID~~|~~ID~~<br>~~nn~~<br>~~nn~~|25<br>~~ID~~<br>~~QO~~<br>~~QO~~|27<br>~~ID~~<br>~~QO~~<br>~~QO~~|29<br>~~ID~~<br>~~(OO~~<br>~~(OO~~|kHz<br>~~ID~~<br>~~(OO~~<br>~~(OO~~|2<br>~~ID~~|
|Low Pass Filter Response<br>~~ID~~|Programmable Range<br>~~nn~~<br>~~ID~~<br>~~nn~~|5<br>~~QO~~<br>~~ID~~<br>~~QO~~|~~QO~~<br>~~ID~~<br>~~QO~~|250<br>~~(OO~~<br>~~ID~~<br>~~(OO~~|Hz<br>~~(OO~~<br>~~ID~~<br>~~(OO~~|3<br>~~ID~~|
|Gyroscope Start-UpTime<br>~~Re~~|From Sleepmode<br>~~nn~~<br>~~Re ep~~|~~QO~~<br>~~ep~~|35<br>~~QO~~<br>~~ep~~|~~(OO~~<br>~~ep~~|ms<br>~~(OO~~<br>~~ep~~|1|
|Output Data Rate<br>~~Re~~|Standard(duty-cycled)mode<br>~~Re ep~~|3.91<br>~~ep~~|~~ep~~|500<br>~~ep~~|Hz<br>~~ep~~|1|
||Low-Noise(active)mode<br>~~Re ep~~|4<br>~~ep~~|~~ep~~|8000<br>~~ep~~|Hz<br>~~ep~~|1|
**Notes** : 1. Derived from validation or characterization of parts, not guaranteed in production.
2. Tested in production.
3. Guaranteed by design.
Page 10 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **3.2 ACCELEROMETER SPECIFICATIONS**
Typical Operating Circuit Figure 3, VDD = 1.8V, VDDIO = 1.8V, TA=25°C, unless otherwise noted.
|**PARAMETER**<br>~~ff~~|**CONDITIONS**<br>~~ff~~|**MIN**<br>~~ff~~|**TYP**<br>~~ff~~|**MAX**<br>~~ff~~|**UNITS**<br>~~ff~~|**NOTES**<br>~~ff~~|
|---|---|---|---|---|---|---|
|**ACCELEROMETER SENSITIVITY**<br>~~eee~~<br>~~eseses~~|||||||
|Full-Scale Range|AFS_SEL=0<br>~~re~~|~~re~~<br>~~eee~~<br>~~ee~~|±2<br>~~re~~<br>~~es~~<br>~~es es~~|~~re~~<br>~~es~~<br>~~es~~|_g_<br>~~re~~<br>~~es~~<br>~~es~~|3<br>~~re~~|
||AFS_SEL=1<br>~~es~~|~~eee~~<br>~~es~~<br>~~ee~~|±4<br>~~es ~~<br>~~es~~<br>~~es es~~|~~es ~~<br>~~es~~<br>~~es~~|_g_<br> ~~es~~<br>~~es~~<br>~~es~~|3<br>~~es~~|
||AFS_SEL=2|~~ee ~~<br>~~rs~~|±8<br> ~~es es~~<br>~~rs~~|~~es~~|_g_<br>~~es~~|3|
||AFS_SEL=3<br>~~rs~~<br>~~er~~|~~rs~~<br>~~rs~~<br>~~ss~~|±16<br>~~rs~~<br>~~rs~~<br>~~ss~~|~~rs~~<br>~~ss~~|_g_<br>~~rs~~|3<br>~~rs~~|
|ADC Word Length<br>~~rs~~<br>~~Oo~~|Output in two’s complement format<br>~~rs~~<br>~~er~~|~~rs ~~<br>~~rs~~<br>~~ss~~<br>~~ee~~<br>~~ee~~|16<br> ~~rs~~<br>~~rs~~<br>~~ss~~<br>~~es es~~<br>~~e~~~~**s**~~|~~rs~~<br>~~ss~~<br>~~es~~<br>~~es~~|bits<br>~~rs~~<br>~~es~~<br>~~es~~|3<br>~~rs~~|
|Sensitivity Scale Factor<br>~~Oo~~|AFS_SEL=0<br>~~er~~<br>~~rs~~|~~ss~~<br>~~rs~~<br>~~ee~~<br>~~ee~~|16,384<br>~~ss~~<br>~~rs~~<br>~~es es~~<br>~~e~~~~**s**~~|~~ss~~<br>~~rs~~<br>~~es~~<br>~~es~~|LSB/_g_<br>~~rs~~<br>~~es~~<br>~~es~~|3<br>~~rs~~|
||AFS_SEL=1<br>~~es~~|~~ee ~~<br>~~es~~<br>~~ee~~|8,192<br> ~~es es~~<br>~~es~~<br>~~e~~~~**s**~~|~~es~~<br>~~es~~<br>~~es~~|LSB/_g_<br>~~es~~<br>~~es~~<br>~~es~~|3<br>~~es~~|
||AFS_SEL=2|~~ee~~<br>~~rs~~|4,096<br>~~e~~~~**s**~~<br>~~r~~|~~es~~|LSB/_g_<br>~~es~~|3|
||AFS_SEL=3<br>~~rs~~|~~ee~~<br>~~rs~~<br>~~rs~~|2,048<br>~~e~~~~**s**~~<br>~~rs~~<br>~~r~~|~~es~~<br>~~rs~~|LSB/_g_<br>~~es~~<br>~~rs~~|3<br>~~rs~~|
|SensitivityInitial Tolerance<br>~~Oo~~<br>~~Pf~~|Component-Level,25°C<br>~~Pf~~|~~ee ~~<br>~~rs ~~<br>~~Pf~~|±2<br> ~~e~~~~**s**~~<br> ~~r~~<br>~~Pf~~|~~es ~~<br>~~Pf~~|%<br> ~~es~~<br>~~Pf~~|2<br>~~Pf~~|
|Sensitivity Change vs. Temperature<br>~~Pf~~<br>~~es~~|-40°C to +85°C<br>~~Pf~~<br>~~es~~<br>~~sO~~|~~Pf~~<br>~~es~~<br>~~sO~~|±1<br>~~Pf~~<br>~~es~~<br>~~sO~~|~~Pf~~<br>~~es~~<br>~~(Os~~|%<br>~~Pf~~<br>~~es~~<br>~~(Os~~|1<br>~~Pf~~<br>~~es~~|
|Nonlinearity<br>~~es~~<br>~~a~~|Best Fit Straight Line<br>~~es~~<br>~~sO~~<br>|~~es~~<br>~~sO~~<br>|±0.5<br>~~es~~<br>~~sO~~<br>~~(Os~~<br>|~~es~~<br>~~(Os~~<br>~~(Os I~~<br>|%<br>~~es~~<br>~~(Os~~<br>~~I~~<br>|1<br>~~es~~<br>|
|Cross-Axis Sensitivity<br>~~es~~<br>~~a~~|~~sO~~<br>~~es~~<br>|~~sO~~<br>~~es~~<br>|±2<br>~~sO ~~<br>~~es~~<br>~~(Os~~<br>|~~(Os~~<br>~~es~~<br>~~(Os I~~<br>|%<br>~~(Os~~<br>~~es~~<br>~~I~~<br>|1<br>~~es~~<br>|
|**ZERO-G OUTPUT**<br>~~(Os I~~<br>~~a~~<br>~~eG(Os~~<br>~~es~~|||||||
|Offset Initial Tolerance<br>~~aes~~<br>~~es meres~~|Component-Level, 25°C<br>~~es~~<br>~~eG~~<br>~~meres~~|~~es~~<br>~~eG~~<br>~~(re~~|±80<br>~~(Os~~<br>~~es~~<br>~~eG~~|~~(Os I~~<br>~~es~~<br>~~(Os~~|m_g_<br>~~I~~<br>~~es~~<br>~~(Os~~|2<br>~~es~~|
|Zero-G Level Change vs. Temperature<br>~~es meres~~|-5°C to +85°C<br>~~eG~~<br>~~meres~~|~~eG~~<br>~~(re~~|±0.75<br>~~eG~~|~~(Os~~|m_g_/°C<br>~~(Os~~|1|
|**NOISE PERFORMANCE**<br>~~eG (Os~~<br>~~es meres (re~~<br>~~rsGG~~|||||||
|Noise Spectral Density<br>~~rs~~|~~GG~~<br>~~sO~~|~~GG~~<br>~~sO~~|150<br>~~sO~~|~~(Os~~|µ_g_/√Hz<br>~~(Os~~|1|
|Low Pass Filter Response<br>~~rs~~<br>~~es~~|Programmable Range<br>~~GG~~<br>~~es~~<br>~~sO~~<br>~~sO~~|5<br>~~GG~~<br>~~es~~<br>~~sO~~<br>~~sO~~|~~es~~<br>~~sO~~<br>~~sO~~|218<br>~~es~~<br>~~(Os~~<br>~~(Os~~|Hz<br>~~es~~<br>~~(Os~~<br>~~(Os~~|3<br>~~es~~|
|Intelligence Function Increment<br>~~es~~<br>~~ee~~|~~sO~~<br>~~es~~<br>~~sO~~<br>~~e~~|~~sO~~<br>~~es~~<br>~~sO~~|4<br>~~sO ~~<br>~~es~~<br>~~sO~~|~~(Os~~<br>~~es~~<br>~~(Os~~<br>~~eee~~|m_g_/LSB<br>~~(Os~~<br>~~es~~<br>~~(Os~~<br>~~eee~~|3<br>~~es~~<br>~~eee~~|
|Accelerometer Startup Time<br>~~ee~~<br>~~Re~~|From Sleepmode<br>~~sO~~<br>~~e~~|~~sO~~|20<br>~~sO ~~|~~(Os~~<br>~~eee~~|ms<br>~~(Os~~<br>~~eee~~|1<br>~~eee~~|
||From Cold Start,1 ms VDDramp<br>~~e~~||30|~~eee~~<br>~~—~~|ms<br>~~eee~~|1<br>~~eee~~|
|Output Data Rate<br>~~ee~~<br>~~Re~~|Standard(duty-cycled)mode<br>~~e~~|0.24||500<br>~~eee~~<br>~~—~~|Hz<br>~~eee~~|1<br>~~eee~~|
||Low-Noise(active)mode|4||4000<br>~~—~~|Hz||
**Notes** :
1. Derived from validation or characterization of parts, not guaranteed in production.
2. Tested in production.
3. Guaranteed by design.
Page 11 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **3.3 PRESSURE SENSOR SPECIFICATIONS**
Typical Operating Circuit Figure 3, VDD = 1.8V, VDDIO = 1.8V, TA=25°C, unless otherwise noted.
|**OPERATION RANGE**|**PRESSURE(kPa)**|**TEMPERATURE(**°**C)**|
|---|---|---|
|**Normal**|70 to 110|0 to 65|
|**Extended**|30 to 110|0 to 65|
|**Maximum**|25 to 115|-40 to 85|
**Table 3. Operation Ranges**
|**PRESSURE**<br>**PARAMETER**<br>~~eee~~<br>~~|~~|**CONDITIONS**<br>~~eee~~|**Sensor Mode**<br>~~eee~~<br>~~ee~~|**TYP**<br>~~eee~~<br>~~eee~~<br>~~**e**e~~|**MAX**<br>~~eee~~<br>~~eee~~|**UNITS**<br>~~eee~~<br>~~ee~~|**NOTES**<br>~~eee~~<br>~~ee~~<br>~~Po~~|
|---|---|---|---|---|---|---|
|**Conversion Time**<br>~~|~~<br>~~|~~|Time between sending last<br>bit of measurement<br>command, and sensor data<br>ready for measurement|Low Power(LP)<br>~~ee~~<br>~~SSE~~|1.6<br>~~eee~~<br>~~**e**e~~<br>~~SSE~~|1.8<br>~~eee~~<br>~~SSE~~|ms<br> ~~ee~~<br>~~SSE~~<br>~~eee~~<br>~~|~~|1<br>~~ee~~<br>~~Po~~<br>~~SSE~~|
|||Normal(N)<br>~~ee~~<br>~~SSE~~|5.6<br>~~eee~~<br>~~**e**e~~<br>~~SSE~~|6.3<br>~~eee ~~<br>~~SSE~~||1<br>~~ee~~<br>~~Po~~<br>~~SSE~~|
|||Low Noise(LN)<br>~~SSE~~<br><br>~~ee~~|20.8<br>~~**e**e~~<br>~~SSE~~<br>~~ee~~|23.8<br>~~SSE~~<br>~~ee~~||1<br>~~Po~~<br>~~SSE~~<br>~~ee~~|
|||Ultra Low Noise<br>(ULN)<br>~~SSE~~<br>~~e~~<br>~~ee~~|83.2<br>~~**e**e~~<br>~~SSE~~<br>~~e~~ ~~ee~~<br>~~ee~~|94.5<br>~~SSE~~<br>~~ee~~||1<br>~~Po~~<br>~~SSE~~<br>~~ee~~<br>~~|~~|
|**Current**<br>**Consumption**<br>~~|~~|1 Hz ODR|Low Power(LP)<br><br>~~ee~~<br>~~Ss~~|1.3<br> ~~ee~~<br>~~ee~~<br>~~Ss~~|~~ee~~<br>~~Ss~~|µA<br>~~eee~~<br>~~|~~<br> <br>~~ee~~<br>~~|~~|~~ee~~<br>~~|~~<br>~~=~~|
|||Normal(N)<br><br>~~ee~~<br>~~Ss~~|2.6<br> ~~ee ~~<br>~~ee~~<br>~~Ss~~|~~ee~~<br>~~Ss~~||~~ee~~<br>~~|~~<br>~~=~~|
|||Low Noise(LN)<br>~~Ss~~<br>~~ee~~|5.2<br>~~ee~~<br>~~Ss~~<br>~~ee~~|~~Ss~~<br>~~e~~||~~|~~<br>~~=~~<br>~~ee~~|
|||Ultra Low Noise<br>(ULN)<br>~~Ss~~<br>~~ee~~<br>~~ee~~|10.4<br>~~ee~~<br>~~Ss~~<br>~~ee~~<br>~~ee~~<br>~~ee~~|~~Ss ~~<br>~~ee~~<br>~~e~~||~~|~~<br> ~~=~~<br>~~ee~~<br>~~|~~|
|**Pressure RMS**<br>**Noise**<br>~~|S~~|Valid for P = 100 kPa, T =<br>25°C, and U = 1.8V<br>~~|S~~|Low Power(LP)<br>~~ee~~<br>~~|S~~|3.2<br>~~ee~~<br>~~ee~~<br>~~|S~~|~~e~~<br>~~|S~~|Pa<br>~~ee~~<br>~~|~~<br>~~|S~~<br>~~ee~~|~~ee~~<br>~~|~~<br>~~|S~~|
|||Normal<br>~~ee~~<br>~~|S~~|1.6<br>~~ee ~~<br>~~ee~~<br>~~|S~~|~~e~~<br>~~|S~~||~~ee~~<br>~~|~~<br>~~|S~~|
|||Low Noise(LN)<br>~~|S~~|0.8<br>~~|S~~<br>~~ee~~|~~|S~~<br>~~ee~~||~~|S~~|
|||Ultra Low Noise<br>(ULN)<br>~~|S~~<br>~~a~~|0.4<br>~~|S~~<br>~~a~~<br>~~ee~~|~~|S~~<br>~~a~~<br>~~ee~~||~~|S~~|
**Notes** :
|**PARAMETER**|**CONDITIONS**|**TYP**|**UNITS**|**NOTES**|
|---|---|---|---|---|
|**Absolute Accuracy**|Normal range<br>Extended range|±1<br>±1.5|hPa|1|
|**Relative Accuracy**|Any step ≤ 1 kPa, 25 °C<br>Any step ≤ 10 kPa, 25 °C|±1<br>±3|Pa||
|**Long-term drift**<br>**During 1year**|Extended range|±1|hPa/y||
|**Solder drift**||1.5|hPa|1,2|
|**Temperature coefficient offset**|P = 100 kPa<br>25°C … 45°C|±0.5|Pa/°C||
|**Resolution**|Maximum range|0.01|Pa||
**Table 5. Pressure Sensor Specifications**
## **Notes:**
1. Absolute accuracy may be improved through One Point Calibration
2. Sensor accuracy post Solder reflow may be improved through One Point Calibration
Page 12 of 65
Document Number: DS-000169 Revision: 1.4
TDK InvenSense
_**ICM-20789**_
|**Temperature PARAMETER**|**CONDITIONS**|**TYP**|**MAX**|**UNITS**|**NOTES**|
|---|---|---|---|---|---|
|Absolute Accuracy|Extended range|±0.4||°C||
|Repeatability|Extended range|±0.1||°C||
|Resolution|Maximum range|0.01||°C||
|Long-term drift|Normal range|<0.04||°C/y||
**Table 6. Temperature Sensor Specifications**
## **3.4 ELECTRICAL SPECIFICATIONS**
## **D.C. Electrical Characteristics**
Typical Operating Circuit Figure 3, VDD = 1.8V, VDDIO = 1.8V, TA=25°C, unless otherwise noted.
|**PARAMETER**|**CONDITIONS**|**MIN**|**TYP**|**MAX**|**UNITS**<br>||**NOTES**|
|---|---|---|---|---|---|---|
|**SUPPLY VOLTAGES**|||||||
|VDD(For 6-axis MEMS)<br>~~pf~~|~~pf~~<br>~~Gs~~|1.71<br>~~pf~~<br>~~Gs~~|1.8<br>~~pf~~<br>~~Ge~~|3.45<br>~~pf~~|V<br>~~pf~~|1<br>~~pf~~|
|VDDIO (Pressure Sensor VDD and Chip I/O)<br>~~es~~|~~es~~<br>~~Gs~~|1.71<br>~~es~~<br>~~Gs~~|1.8<br>~~es~~<br>~~Ge~~|1.98<br>~~es~~|V<br>~~es~~|1<br>~~es~~|
|**SUPPLY CURRENTS & BOOT TIME**<br>~~es~~<br>~~GsGe~~|||||||
|Normal Mode<br>~~==~~|7-axis Gyroscope + Accelerometer<br>+ Pressure<br>~~==~~|~~==~~<br>~~es~~|3.0<br>~~== ===~~<br>~~es~~|~~===~~<br>~~es~~|mA<br>~~===~~|1<br>~~===~~|
||3-axis Gyroscope<br>~~==~~<br>~~ee~~|~~==~~<br>~~ee~~<br>~~es~~<br>~~es~~|2.6<br>~~== ===~~<br>~~ee~~<br>~~es~~<br>~~es~~|~~===~~<br>~~ee~~<br>~~es~~<br>~~es~~|mA<br>~~===~~<br>~~ee~~|1<br>~~===~~<br>~~ee~~|
||3-axis Accelerometer, 4 kHz ODR<br>~~==~~<br>~~ee~~|~~==~~<br>~~es ~~<br>~~ee~~<br>~~es~~|390<br>~~== ===~~<br> ~~es~~<br>~~ee~~<br>~~es~~|~~===~~<br>~~es~~<br>~~ee~~<br>~~es~~|µA<br>~~===~~<br>~~ee~~|1<br>~~===~~<br>~~ee~~|
||Pressure Sensor<br>~~==~~<br>~~ee~~|~~==~~<br>~~es ~~<br>~~ee~~|1.1<br>~~== ===~~<br> ~~es~~<br>~~ee~~|~~===~~<br>~~es~~<br>~~ee~~|µA<br>~~===~~<br>~~ee~~|1<br>~~===~~<br>~~ee~~|
|Accelerometer Low -Power Mode<br>~~GG~~|100 Hz ODR, 1x averaging<br>~~GG~~|~~GG~~|57<br>~~GG~~|~~GG~~|µA<br>~~GG~~|2<br>~~GG~~|
|Gyroscope Low-Power Mode<br>~~GG~~<br>~~pO~~|100 Hz ODR, 1x averaging<br>~~GG~~<br>~~pO~~|~~GG~~<br>~~pO~~|1.6<br>~~GG~~<br>~~pO~~|~~GG~~<br>~~pO~~|mA<br>~~GG~~<br>~~pO~~|2<br>~~GG~~<br>~~pO~~|
|6-Axis Low-Power Mode (Gyroscope Low-<br>Power Mode; Accelerometer Low-Noise<br>Mode)<br>~~pO~~|100 Hz ODR, 1x averaging<br>~~pO~~|~~pO~~|1.9<br>~~pO~~<br>~~GO~~|~~pO~~<br>~~GO~~|mA<br>~~pO~~|2<br>~~pO~~|
|Full-ChipSleepMode<br>~~GG~~|~~GG~~|~~GG~~|6<br>~~GG~~<br>~~GO~~|~~GG~~<br>~~GO~~|µA<br>~~GG~~|1<br>~~GG~~|
|**TEMPERATURE RANGE**<br>~~GG~~<br>~~GO~~<br>~~ee~~<br>~~eee~~|||||||
|Specified Temperature Range<br>~~ee~~|Performance parameters are not<br>applicable beyond Specified<br>Temperature Range<br>~~ee~~<br>~~ee~~|-40<br>~~ee~~|~~ee~~<br>~~eee~~|+85<br>~~ee~~<br>~~eee~~|°C<br>~~ee~~<br>~~eee~~|1<br>~~ee~~<br>~~eee~~|
## **Table 7. D.C. Electrical Characteristics**
1. Derived from validation or characterization of parts, not guaranteed in production.
2. Based on simulation.
**Notes:**
Page 13 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **A.C. Electrical Characteristics**
Typical Operating Circuit Figure 3, VDD = 1.8V, VDDIO = 1.8V, TA=25°C, unless otherwise noted.
|**PARAMETER**|**CONDITIONS**|**MIN**|**TYP**|**MAX**|**UNITS**|**NOTES**|
|---|---|---|---|---|---|---|
|**SUPPLIES**<br>~~a~~<br>~~eeeeeeee~~|||||||
|Supply Ramp Time (TRAMP)<br>~~a~~|Monotonic ramp. Ramp<br>rate is 10% to 90% of the<br>final value<br>~~ee~~|0.01<br>~~eee~~|~~eee~~|100<br>~~eee~~|ms<br>~~eee~~|1<br>~~eee~~|
|**TEMPERATURE SENSOR**<br>~~a~~<br>~~ee eee eee~~<br>~~SSSS~~|||||||
|OperatingRange<br>~~SS~~|Ambient<br>~~SS~~|-40<br>~~SS~~|~~SS~~|85<br>~~SS~~|°C<br>~~SS~~|1|
|Room Temperature Offset<br>~~ee~~|25°C<br>~~ee~~|~~ee~~|0<br>~~ee~~|~~ee~~|°C<br>~~ee~~|1<br>~~ee~~|
|Sensitivity<br>~~ee~~|Untrimmed<br>~~ee~~|~~ee~~|0.003<br>~~ee~~|~~ee~~|°C/LSB<br>~~ee~~|1<br>~~ee~~|
|**POWER-ON RESET**|||||||
|SupplyRampTime(TRAMP) (6-Axis)<br>~~GC~~|Validpower-on RESET<br>~~GC~~|0.01<br>~~GC~~<br>~~es~~|~~GC~~<br>~~ee~~|100<br>~~GC~~<br>~~ee~~|ms<br>~~GC~~<br>~~ee~~|1<br>~~GC~~<br>~~ee~~|
|Start-up time for register read/write<br>(6-Axis)<br>~~res~~|Frompower-up<br>~~res~~|~~res~~<br>~~es~~|11<br>~~res~~<br>~~ee~~|100<br>~~res~~<br>~~ee~~|ms<br>~~res~~<br>~~ee~~|1<br>~~res~~<br>~~ee~~|
||From sleep<br>~~res~~|~~res~~<br>~~es~~|~~res~~<br>~~ee~~|5<br>~~res~~<br>~~ee~~|ms<br>~~res~~<br>~~ee~~|1<br>~~res~~<br>~~ee~~|
|**Power-up time(pressure sensor)**<br>~~eo~~|After hard reset(Vdd>Vpor<br>~~eo~~|~~es ~~<br>~~eo~~|170<br> ~~ee ~~<br>~~eo~~|~~ee~~<br>~~eo~~|µs<br>~~ee ~~<br>~~eo~~|1<br> ~~ee~~<br>~~eo~~|
|**Soft reset time(Pressure sensor)**<br>~~eo~~|After soft reset<br>~~eo~~<br>~~es~~|~~eo~~<br>~~es~~|170<br>~~eo~~<br>~~es~~|~~eo~~|µs<br>~~eo~~|a<br>~~eo~~|
|**I2C ADDRESS**<br>~~eo~~<br>~~es~~|AD0 = 0<br>AD0 = 1<br>~~eo~~<br>~~es~~<br>~~es~~|~~eo~~<br>~~es~~<br>~~es~~|1101000<br>1101001<br>~~eo~~<br>~~es~~<br>~~es~~|~~eo~~<br>~~es~~|~~eo~~<br>~~es~~|~~eo~~<br>~~es~~|
|**DIGITAL INPUTS(FSYNC, AD0)**<br>~~es es es~~<br>~~eeeeeeoeoe~~<br>~~ee~~|||||||
|VIH, High-Level Input Voltage<br>~~———~~<br>~~ee~~|~~———~~<br>~~ee~~<br>|0.7*VDDIO<br>~~———~~<br>~~ee~~<br>|~~———~~<br>~~ee~~|~~———~~<br>~~ee~~|V<br>~~———~~<br>~~oe~~|1<br>~~———~~<br>~~oe~~|
|VIL, Low-Level Input Voltage<br>~~———~~<br>~~ee~~|~~———~~<br>~~ee~~<br>|~~———~~<br>~~ee~~<br>|~~———~~<br>~~ee~~|0.3*VDDIO<br>~~———~~<br>~~ee~~|V<br>~~———~~<br>~~oe~~||
|CI, Input Capacitance<br>~~———~~<br>~~ee~~|~~———~~<br>~~ee~~<br>~~GQ~~|~~———~~<br>~~ee~~<br>~~GQ~~|< 10<br>~~———~~<br>~~ee~~|~~———~~<br>~~ee~~|pF<br>~~———~~<br>~~oe~~||
|**DIGITAL OUTPUT(INT)**<br>~~———~~<br>~~ee ee ee oe oe~~<br>~~eeGQ~~<br>~~——~~|||||||
|VOH, High- Level Output Voltage<br>~~GG~~<br>~~ee~~<br>~~——~~|RLOAD= 1 MΩ;<br>~~GG~~<br>~~GO~~|0.9*VDDIO<br>~~GG~~<br>~~GO~~|~~GG~~|~~GG~~|V<br>~~GG~~|1|
|VOL1, Low-Level Output Voltage<br>~~GG~~<br>~~ee~~<br>~~——~~|RLOAD= 1 MΩ;<br>~~GG~~<br>~~GO~~|~~GG~~<br>~~GO~~|~~GG~~|0.1*VDDIO<br>~~GG~~|V<br>~~GG~~||
|VOL.INT, INT Low-Level Output Voltage<br>~~ee~~<br>~~——~~|OPEN = 1, 0.3 mA sink<br>Current<br>~~GO~~|~~GO~~||0.1|V||
|Output Leakage Current<br>~~——~~<br>~~GG~~|OPEN = 1<br>~~GG~~<br>~~Qe~~|~~GG~~<br>~~Qe~~|100<br>~~GG~~<br>~~QO~~|~~GG~~|nA<br>~~GG~~||
|tINT, INT Pulse Width<br>~~——~~<br>~~es~~|LATCH_INT_EN = 0<br>~~es~~<br>~~Qe~~|~~es~~<br>~~Qe~~|50<br>~~es~~<br>~~QO~~|~~es~~|µs<br>~~es~~||
|**I2C I/O (SCL, SDA)**<br>~~——~~<br>~~Qe~~<br>~~QO~~|||||||
|VIL, Low-Level Input Voltage<br>~~QQ~~<br>~~aoe~~|~~QQ~~<br>~~aoe~~|-0.5 V<br>~~QQ~~<br>~~aoe~~|~~QQ~~<br>~~aoe~~|0.3*VDDIO<br>~~QQ~~<br>~~aoe~~|V<br>~~QQ~~<br>~~aoe~~|1<br>~~aoe~~|
|VIH, High-Level Input Voltage<br>~~QQ~~<br>~~aoe~~|~~QQ~~<br>~~aoe~~|0.7*VDDIO<br>~~QQ~~<br>~~aoe~~|~~QQ~~<br>~~aoe~~|VDDIO + 0. 5 V<br>~~QQ~~<br>~~aoe~~|V<br>~~QQ~~<br>~~aoe~~||
|Vhys, Hysteresis<br>~~GG~~<br>~~aoe~~|~~GG~~<br>~~aoe~~|~~GG~~<br>~~aoe~~|0.1*VDDIO<br>~~GG~~<br>~~aoe~~|~~GG~~<br>~~aoe~~|V<br>~~GG~~<br>~~aoe~~||
|VOL, Low-Level Output Voltage<br>~~GG~~<br>~~aoe~~|3 mA sink current<br>~~GG~~<br>~~aoe~~|0<br>~~GG~~<br>~~aoe~~|~~GG~~<br>~~aoe~~|0.4<br>~~GG~~<br>~~aoe~~|V<br>~~GG~~<br>~~aoe~~||
|IOL, Low-Level Output Current<br>~~aoe~~|VOL= 0.4 V<br>VOL= 0.6 V<br>~~aoe~~|~~aoe~~|3<br>6<br>~~aoe~~|~~aoe~~|mA<br>mA<br>~~aoe~~||
|Output Leakage Current<br>~~aoe~~<br>~~GG~~|~~aoe~~<br>~~GG~~<br>~~ee~~|~~aoe~~<br>~~GG~~|100<br>~~aoe~~<br>~~GG~~|~~aoe~~<br>~~GG~~|nA<br>~~aoe~~<br>~~GG~~||
|tof, Output Fall Time from VIHmaxto<br>VILmax<br>~~aoe~~<br>~~ee~~|Cbbus capacitance in pf<br>~~aoe~~<br>~~ee~~<br>~~ee~~|20+0.1Cb<br>~~aoe~~<br>~~ee~~|~~aoe~~<br>~~ee~~|300<br>~~aoe~~<br>~~ee~~|ns<br>~~aoe~~<br>~~ee~~||
Page 14 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
|**PARAMETER**<br>~~ee~~<br>~~ee~~|**SYMBOL**<br>~~ss~~|**CONDITIONS**<br>~~ss~~|**MIN**<br>~~ss~~<br>~~Os~~|**TYP**<br>~~ss~~|**MAX**<br>~~ss~~|**UNITS**<br>~~ss~~|**COMMENTS**<br>~~ss~~|
|---|---|---|---|---|---|---|---|
|**Supply voltage**<br>~~ee~~<br>~~ee~~<br>~~es~~|VDD<br>~~ss~~<br>~~ee~~|~~ss~~<br>~~ee~~|1.71<br>~~ss~~<br>~~Os~~<br>~~ee~~|1.8<br>~~ss~~<br>~~ee~~|1.89<br>~~ss~~<br>~~ee~~|V<br>~~ss~~<br>~~ee~~|~~ss~~<br>~~ee~~|
|**Power-up/down level**<br>~~ee~~<br>~~es~~|VPOR<br>~~ee~~|Static power supply<br>~~ee~~|1.0<br>~~Os~~<br>~~ee~~<br>~~es~~|1.25<br>~~ee~~<br>~~ee~~|1.5<br>~~ee~~<br>~~ee~~|V<br>~~ee~~<br>~~ee~~|~~ee~~|
|**Supply current**<br>~~es ~~|IDD<br> ~~ee~~|Idle state<br>~~ee~~|-<br>~~ee~~<br>~~es~~|1.0<br>~~ee~~<br>~~ee~~|2.5<br>~~ee~~<br>~~ee~~|µA<br>~~ee~~<br>~~ee~~|~~ee~~|
|||Measurement|-<br>~~es ~~|210<br> ~~ee~~|300<br>~~ee~~|µA<br>~~ee~~|Current consumption while<br>sensor is measuring.|
|||Average|-|1.3|-|µA|Current consumption in<br>continuous operation @ 1 Hz<br>ODR in LP Mode|
||||-|5.2|-|µA|Current consumption in<br>continuous operation @1 Hz<br>ODR in LN Mode|
|**Low level input voltage**<br>~~es~~<br>~~ee~~|VIL<br>~~es~~<br>~~ss~~|~~es~~<br>~~ss~~|0<br>~~es~~<br>~~ss~~|-<br>~~es~~<br>~~ss~~|0.3 VDD<br>~~es~~<br>~~ss~~|V<br>~~es~~<br>~~ss~~|~~es~~<br>~~ss~~|
|**High level input voltage**<br>~~ee~~|VIH<br>~~ss~~|~~ss~~<br>~~es~~|0.7 VDD<br>~~ss~~<br>~~es~~|-<br>~~ss~~|VDD<br>~~ss~~|V<br>~~ss~~|~~ss~~|
|**Low level output voltage**<br>~~ee~~<br>~~ee~~<br>~~——————————EE~~|VOL<br>~~ss~~<br>~~ee~~<br>~~——————————EE~~|0 < IOL < 3 mA<br>~~ss~~<br>~~ee~~<br>~~es~~<br>~~——————————EE~~|-<br>~~ss~~<br>~~ee~~<br>~~es~~<br>~~——————————EE~~|-<br>~~ss~~<br>~~ee~~<br>~~——————————EE~~|0.2 VDD<br>~~ss~~<br>~~ee~~<br>~~——————————EE~~|V<br>~~ss~~<br>~~ee~~<br>~~——————————EE~~|~~ss~~<br>~~ee~~<br>~~——————————EE~~|
|**Output Sink Current**<br>~~——————————EE~~|IOL<br>~~——————————EE~~|VOL= 0.4V<br>~~es~~<br>~~——————————EE~~|3.1<br>~~es~~<br>~~——————————EE~~|4.1<br>~~——————————EE~~|-<br>~~——————————EE~~|mA<br>~~——————————EE~~|~~——————————EE~~|
|||VOL= 0.6V<br>~~——————————EE~~<br>~~ee~~|3.5<br>~~——————————EE~~<br>~~ee~~|4.5<br>~~——————————EE~~<br>~~ee~~|-<br>~~——————————EE~~<br>~~ee~~|mA<br>~~——————————EE~~<br>~~ee~~|~~——————————EE~~<br>~~ee~~|
**Table 9. Electrical Characteristics (Pressure sensor)**
## **Other Electrical Specifications**
Typical Operating Circuit Figure 3, VDD = 1.8V, VDDIO = 1.8V, TA=25°C, unless otherwise noted.
|**PARAMETER**|**CONDITIONS**|**MIN**|**TYP**|**MAX**|**UNITS**|**NOTES**|
|---|---|---|---|---|---|---|
|**SERIAL INTERFACE**|||||||
|I2C Operating Frequency|All registers, Fast-mode|||400|kHz|1|
||All registers, Standard-mode|||100|kHz|1|
## **Notes** :
1. Derived from validation or characterization of parts, not guaranteed in production.
## **3.5 I[2] C TIMING CHARACTERIZATION**
Typical Operating Circuit Figure 3, VDD = 1.8V, VDDIO = 1.8V, TA=25°C, unless otherwise noted.
|**PARAMETERS**|**CONDITIONS**|**MIN**|**TYP**|**MAX**|**UNITS**|**NOTES**|
|---|---|---|---|---|---|---|
|**I2C TIMING**<br>~~GG~~|**I2C FAST-MODE**<br>~~GG~~|~~GG~~|~~GG~~|~~GG~~|~~GG~~|~~GG~~|
|fSCL, SCL Clock Frequency<br>~~GG~~<br>~~I~~|~~GG~~<br>~~I~~|~~GG~~<br>~~I~~|~~GG~~<br>~~I~~|400<br>~~GG~~<br>~~I~~|kHz<br>~~GG~~<br>~~I~~|1<br>~~GG~~<br>~~I~~|
|tHD.STA, (Repeated) START Condition Hold Time<br>~~GD~~|~~GD~~|0.6<br>~~GD~~|~~GD~~|~~GD~~|µs<br>~~GD~~|1<br>~~GD~~|
|tLOW, SCL Low Period<br>~~fn~~|~~fn~~|1.3<br>~~fn~~|~~fn~~|~~fn~~|µs<br>~~fn~~|1<br>~~fn~~|
|tHIGH, SCL High Period<br>~~eS~~|~~eS~~|0.6<br>~~eS~~|~~eS~~|~~eS~~|µs<br>~~eS~~|1<br>~~eS~~|
|tSU.STA, Repeated START Condition SetupTime<br>~~GG~~|~~GG~~|0.6<br>~~GG~~|~~GG~~|~~GG~~|µs<br>~~GG~~|1<br>~~GG~~|
|tHD.DAT, SDA Data Hold Time<br>~~I~~|~~I~~|0<br>~~I~~|~~I~~|~~I~~|µs<br>~~I~~|1<br>~~I~~|
|tSU.DAT, SDA Data SetupTime<br>~~fn~~|~~fn~~|100<br>~~fn~~|~~fn~~|~~fn~~|ns<br>~~fn~~|1<br>~~fn~~|
|tr, SDA and SCL Rise Time<br>~~fn~~|Cbbus cap. from 10 to 400pF<br>~~fn~~|20+0.1Cb<br>~~fn~~|~~fn~~|300<br>~~fn~~|ns<br>~~fn~~|1<br>~~fn~~|
|tf, SDA and SCL Fall Time<br>~~eS~~|Cbbus cap. from 10 to 400pF<br>~~eS~~|20+0.1Cb<br>~~eS~~|~~eS~~|300<br>~~eS~~|ns<br>~~eS~~|1<br>~~eS~~|
|tSU.STO, STOP Condition SetupTime<br>~~FO~~<br>~~I~~|~~FO~~<br>~~ee~~|0.6<br>~~FO~~<br>~~ee~~|~~FO~~<br>~~ee~~|~~FO~~|µs<br>~~FO~~|1<br>~~FO~~|
|tBUF, Bus Free Time Between STOP and START<br>Condition<br>~~ee~~<br>~~I~~|~~ee~~<br>~~ee~~|1.3<br>~~ee~~<br>~~ee~~|~~ee~~<br>~~ee~~|~~ee~~|µs<br>~~ee~~|1<br>~~ee~~|
|Cb, Capacitive Load for each Bus Line<br>~~I~~|~~ee~~|~~ee~~|< 400<br>~~ee~~||pF|1|
Page 15 of 65
Document Number: DS-000169 Revision: 1.4
- _**ICM-20789**_
- ~~€S8TDIK ivenserse ssi—<‘—sSSCiS~~
|**PARAMETERS**|**CONDITIONS**|**MIN**|**TYP**|**MAX**|**UNITS**|**NOTES**|
|---|---|---|---|---|---|---|
|**I2C TIMING**|**I2C FAST-MODE**||||||
|tVD.DAT, Data Valid Time||||0.9|µs|1|
|tVD.ACK, Data Valid Acknowledge Time||||0.9|µs|1|
**Table 11. I[2] C Timing Characteristics**
## **Notes** :
1. Based on characterization of 5 parts over temperature and voltage as mounted on evaluation board or in sockets
**==> picture [474 x 147] intentionally omitted <==**
**----- Start of picture text -----**<br>
tf tr tSU.DAT<br>SDA 70% 70%<br>a 30% y 30% \ e e ns e renco roa, :<br>tf continued below at A<br>: : tr = Rancsen nn nns tVD.DAT Ss se h<br>SCL 70% tHD.DAT 70%<br>30% 30%<br>tHD.STA 1/fSCL tLOW 9 [th] clock cycle<br>S 1 [st] clock cycle tHIGH<br>tBUF<br>SDA 70%<br>A 30%<br>tSU.STA tHD.STA tVD.ACK tSU.STO<br>SCL 70%<br>30%<br>Sr 9 [th] clock cycle P S<br>**----- End of picture text -----**<br>
**Figure 1. I[2] C Bus Timing Diagram**
Page 16 of 65
Document Number: DS-000169 Revision: 1.4
‘TDK InvenSense
_**ICM-20789**_
## **3.6 ABSOLUTE MAXIMUM RATINGS**
Stress above those listed as “Absolute Maximum Ratings” may cause permanent damage to the device. These are stress ratings only and functional operation of the device at these conditions is not implied. Exposure to the absolute maximum ratings conditions for extended periods may affect device reliability.
|**PARAMETER**|**RATING**|
|---|---|
|Supply Voltage, VDD (for 6-axis MEMS)|-0.5V to 4V|
|Supply Voltage, VDDIO (for Pressure Sensor VDD and I/O)|-0.5V to 2.16V|
|REGOUT|-0.5V to 2V|
|Input Voltage Level (AD0, FSYNC, SCL, SDA)|-0.5V to VDD + 0.5V|
|Acceleration (Any Axis, unpowered)|10,000_g_for 0.2 ms|
|Operating Temperature Range|-40°C to 85°C|
|Storage Temperature Range|-40°C to 125°C|
|Electrostatic Discharge (ESD) Protection|2 kV (HBM);<br>250V (MM)|
|Latch-up|JEDEC Class II (2),125°C<br>±100 mA|
**Table 12. Absolute Maximum Ratings (6-Axis)**
|**PARAMETER**|**RATING**|
|---|---|
|**Supply voltage, VDD**|-0.3V to 2.16V|
|**Supply Voltage, SCL & SDA**|-0.3V to VDD + 0.3V|
|**Operating temperature range**|-40°C to +85°C|
|**Storage temperature range**|-40°C to 125°C|
|**ESD HBM**|1.0 kV|
|**ESD CDM**|250V|
|**Latch up, JESD78 Class II, 85°C**|100 mA|
|**Overpressure**|>600 kPa|
**Table 13. Absolute Maximum Ratings (pressure sensor)**
Page 17 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## _**APPLICATIONS INFORMATION**_
## **4.1 PIN OUT DIAGRAM AND SIGNAL DESCRIPTION**
|PIN NUMBER|PIN NAME|PIN DESCRIPTION|
|---|---|---|
|6|PR_DA|I2C interface data pin for Pressure Sensor access|
|7|PR_CL|I2C interface clock pin for Pressure Sensor access|
|8|VDDIO|Digital I/O supply voltage|
|9|AD0/SDO|I2C slave address LSB (AD0); SPI serial data output (SDO)|
|10|REGOUT|Regulator filter capacitor connection|
|11|FSYNC|Frame synchronization digital input. Connect to GND if unused.|
|12|INT|Interrupt digital output (totem pole or open-drain)|
|13|VDD|Power supply voltage|
|18|GND|Power supply ground|
|22|nCS|SPI chip select|
|23|SCL/SCLK|I2C serial clock (SCL); SPI serial clock (SCLK)|
|24|SDA/SDI|I2C serial data (SDA); SPI serial data input (SDI)|
|1, 19, 20, 21|NC|No Connect|
|2, 3, 4, 5, 14, 15,<br>16, 17|GND/VDD/NC|Connect to: GND or VDD or No Connection|
**Table 14. Signal Descriptions**
## **Note:**
1. VDD and VDDIO cannot be shorted if VDD > 1.98V
2. VDD & VDDIO should not violate operating range specifications as mentioned in Section 3.4
**==> picture [400 x 282] intentionally omitted <==**
**----- Start of picture text -----**<br>
24 23 22 21 20 19<br>+Z<br>NC 1 18 GND<br>GND/VDD/NC 2 17 GND/VDD/NC +Z +Y<br>GND/VDD/NC 3 16 GND/VDD/NC<br>ICM-20789 +Y<br>GND/VDD/NC 4 15 GND/VDD/NC<br>GND/VDD/NC 5 14 GND/VDD/NC<br>+X +X<br>PR_DA 6 13 VDD<br>7 8 9 10 11 12<br>Top View – LGA Package Orientation of Axes of Sensitivity and<br>24-pin, 4mm x 4mm x 1.365mm Polarity of Rotation<br>ICM-20789<br>SDA/SDI SCL/SCLK nCS NC NC NC<br>PR_CL VDDIO AD0/SDO REGOUT FSYNC INT<br>**----- End of picture text -----**<br>
**Figure 2. Pin out Diagram for ICM-20789**
Page 18 of 65
Document Number: DS-000169 Revision: 1.4
kX i DI InvenSense
_**ICM-20789**_
## **4.2 TYPICAL OPERATING CIRCUIT**
## **I[2] C Communication – 1.8V Supply Schematic**
**Figure 3. I[2] C Communication – 1.8V Supply Schematic**
Page 19 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **I[2] C Communication MCU Interface at 3V or 1.8V Schematic**
**Figure 4. I[2] C Communication MCU Interface at 3V or 1.8V Schematic**
Page 20 of 65
Document Number: DS-000169 Revision: 1.4
kX i DIX InvenSense
_**ICM-20789**_
## **SPI Communication for Gyro/Accel; I[2] C for Pressure Schematic**
**Figure 5. SPI Communication for Gyro/Accel; I[2] C for Pressure Schematic**
**SPI Communication for Gyro/Accel; I[2] C Pressure; MCU Digital Interface: 1.8V Schematic**
**Figure 6. SPI Communication for Gyro/Accel; I[2] C Pressure; MCU Digital Interface: 1.8V Schematic**
Page 21 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
**SPI Communication for Gyro/Accel; I[2] C for Pressure; MCU Digital Interface: 3.0V Schematic**
**Figure 7. SPI Communication for Gyro/Accel; I[2] C for Pressure; MCU Digital Interface: 3.0V Schematic**
**Note** : I[2] C lines are open drain and pullup resistors (e.g. 10 kΩ) are required.
## **4.3 BILL OF MATERIALS FOR EXTERNAL COMPONENTS**
|**COMPONENT**|**LABEL**|**SPECIFICATION**|**QUANTITY**|
|---|---|---|---|
|REGOUT Capacitor|C1|X7R, 0.1 µF ±10%|1|
|VDD Bypass Capacitors|C2|X7R, 0.1 µF ±10%|1|
||C4|X7R, 2.2 µF ±10%|1|
|VDDIO Bypass Capacitor|C3|X7R, 10 nF ±10%|1|
**Table 15. Bill of Materials**
Page 22 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## **4.4 BLOCK DIAGRAM**
**==> picture [393 x 336] intentionally omitted <==**
**----- Start of picture text -----**<br>
ICM-20789<br>Self<br>test X Accel ADC Interrupt INT1<br>Status<br>Register<br>nCS<br>Self test Y Accel ADC Slave I2C and AD0 / SDO<br>SPI Serial<br>FIFO<br>Interface SCL / SCLK<br>sos) Self test Z Accel ADC User & Config == SDA / SDI<br>TAG) Registers nia :<br>Master I2C Serial PR_CL<br>Self Serial Interface<br>test X Gyro AD C Sensor Interface Bypass Mux PR_DA<br>Registers<br>FSYNC<br>o Self test o h Y Gyro e|| ADC eS is<br>_ = ie:<br>Digital Motion<br>Processor<br>Self test W Z Gyro s AD C (DMP)<br>Signal Conditioning<br>Temp Sensor ADC<br>ADC<br>L i a<br>Pressure<br>Sensor<br>L_<br>Charge Bias & LDOs<br>Pump<br>VDD GND REGOUT<br>Signal Conditioning<br>**----- End of picture text -----**<br>
**Figure 8. ICM-20789 Block Diagram (I[2] C interface)**
Page 23 of 65
Document Number: DS-000169 Revision: 1.4
**==> picture [535 x 453] intentionally omitted <==**
**----- Start of picture text -----**<br>
ICM-20789<br>‘TDI InvenSense<br>ICM-20789<br>Interrupt INT1<br>Status<br>Register<br>nCS<br>nCS<br>Slave I2C and SDO<br>FIFO SPI Serial Interface SCLK SDOSCLK Host Processor<br> SDI<br> SDI<br>User & Config<br>Registers<br>Master I2C Serial PR_CL SCL<br>Serial Interface<br>Interface Bypass<br>Sensor Mux PR_DA SDA<br>Registers<br>FSYNC<br>Digital Motion<br>Processor<br>(DMP)<br>Signal Conditioning<br>ADC<br>Pressure<br>Sensor<br>Bias & LDOs<br>EE<br>VDD GND REGOUT<br>Figure 9. ICM-20789 Block Diagram (SPI/ I [2] C interface)<br>4.5 OVERVIEW<br>Signal Conditioning<br>**----- End of picture text -----**<br>
The ICM-20789 is comprised of the following key blocks and functions:
- Three-axis MEMS rate gyroscope sensor with 16-bit ADCs and signal conditioning
- Three-axis MEMS accelerometer sensor with 16-bit ADCs and signal conditioning
- Digital Motion Processor (DMP) engine
- I[2] C serial communications interfaces
- Self-Test
- Clocking
- Sensor Data Registers
- FIFO
- Interrupts
- Digital-Output Temperature Sensor
- Bias and LDOs
- Charge Pump
- Standard Power Modes
- Pressure Sensor
Page 24 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **4.6 THREE-AXIS MEMS GYROSCOPE WITH 16-BIT ADCS AND SIGNAL CONDITIONING**
The ICM-20789 consists of three independent vibratory MEMS rate gyroscopes, which detect rotation about the X-, Y-, and Z- Axes. When the gyros are rotated about any of the sense axes, the Coriolis Effect causes a vibration that is detected by a capacitive pickoff. The resulting signal is amplified, demodulated, and filtered to produce a voltage that is proportional to the angular rate. This voltage is digitized using individual on-chip 16-bit Analog-to-Digital Converters (ADCs) to sample each axis. The full-scale range of the gyro sensors may be digitally programmed to ±250, ±500, ±1000, or ±2000 degrees/sec (dps). The ADC sample rate is programmable from 8,000 samples/sec, to 3.9 samples/sec, and user-selectable low-pass filters enable a wide range of cut-off frequencies.
## **4.7 THREE-AXIS MEMS ACCELEROMETER WITH 16-BIT ADCS AND SIGNAL CONDITIONING**
The ICM-20789’s 3-Axis accelerometer uses separate proof masses for each axis. Acceleration along a particular axis induces displacement on the corresponding proof mass, and capacitive sensors detect the displacement differentially. The ICM-20789’s architecture reduces the accelerometers’ susceptibility to fabrication variations as well as to thermal drift. When the device is placed on a flat surface, it will measure 0 _g_ on the X- and Y-axes and +1 _g_ on the Z-axis. The accelerometers’ scale factor is calibrated at the factory and is nominally independent of supply voltage. Each sensor has a dedicated sigma-delta ADC for providing digital outputs. The full-scale range of the digital output can be adjusted to ±2 _g_ , ±4 _g_ , ±8 _g_ , or ±16 _g_ .
## **4.8 DIGITAL MOTION PROCESSOR**
The embedded Digital Motion Processor (DMP) offloads computation of motion processing algorithms from the host processor. The DMP acquires data from the accelerometer and gyroscope, processes the data, and the results can be read from the FIFO. The DMP has access to one of the external pins, which can be used for generating interrupts. The purpose of the DMP is to offload both timing requirements and processing power from the host processor. Typically, motion processing algorithms should be run at a high rate, often around 200 Hz to provide accurate results with low latency. This is required even if the application updates at a much lower rate; for example, a low power user interface may update as slowly as 5 Hz, but the motion processing should still run at 200 Hz. The DMP can be used to minimize power, simplify timing, simplify the software architecture, and save valuable MIPS on the host processor for use in applications. DMP operation is possible in low-power gyroscope and low-power accelerometer modes.
## **4.9 PRESSURE SENSOR**
The pressure sensor is a capacitive pressure sensor, and has a membrane over a sealed cavity at a reference pressure. External pressure changes relative to the sealed cavity pressure cause the membrane to deflect. The membrane and the floor of the cavity form a capacitor where the capacitance changes in response to changes in external pressure. The capacitance measurement is converted to a voltage proportional to the external pressure by the on-chip electronics. An external algorithm is used to compensate for temperature effects on the pressure accuracy.
## **4.10 I[2] C SERIAL COMMUNICATIONS INTERFACE**
The ICM-20789 communicates to a system processor using a I[2] C serial interface. The ICM-20789 always acts as a slave when communicating to the system processor. The LSB of the I[2] C slave address is set by pin 9 (AD0).
Page 25 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **ICM-20789 Solution Using I[2] C Interface**
Recommended operation mode is described in Figure 10, with the system processor being an I[2] C master to the ICM-20789.
**==> picture [332 x 300] intentionally omitted <==**
**----- Start of picture text -----**<br>
INT<br>Slave I2C System<br>Interface SCL Processor<br>SCL<br>SDA SDA<br>Master I2C Serial<br>Serial Interface<br>Interface Bypass<br>Mux<br>au. FSYNC<br>Digital Motion<br>Processor<br>(DMP)<br>Signal Conditioning aa<br>ADC<br>|<br>Pressure<br>Sensor<br>LJ<br>Bias & LDOs<br>VDD GND REGOUT<br>**----- End of picture text -----**<br>
**Figure 10. ICM-20789 Solution Using I[2] C Interface**
**Note** : I[2] C lines are open drain and pullup resistors (e.g. 10 kΩ) are required.
## **Accessing Pressure Sensor Data**
Pressure sensor data can be accessed in the following mode:
- Bypass Mode: Set register INT_PIN_CFG (Address: 55 (Decimal); 37 (Hex)) bit 1 to value 1 and I2C_MST_EN bit is ‘0’ (Address: 106 (Decimal); 6A (Hex). Pressure sensor data can then be accessed using the procedure described in Section 10.
## **4.11 SELF-TEST**
Self-test allows for the testing of the mechanical and electrical portions of the sensors. The self-test for each measurement axis can be activated by means of the gyroscope and accelerometer self-test registers (registers 27 and 28).
When the self-test is activated, the electronics cause the sensors to be actuated and produce an output signal. The output signal is used to observe the self-test response.
The self-test response is defined as follows:
SELF-TEST RESPONSE = SENSOR OUTPUT WITH SELF-TEST ENABLED – SENSOR OUTPUT WITH SELF-TEST DISABLED
When the value of the self-test response is within the specified min/max limits of the product specification, the part has passed selftest. When the self-test response exceeds the min/max values, the part is deemed to have failed self-test. It is recommended to use TDK-InvenSense MotionApps software for executing self-test.
Page 26 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **4.12 CLOCKING**
The ICM-20789 has a flexible clocking scheme, allowing a variety of internal clock sources to be used for the internal synchronous circuitry. This synchronous circuitry includes the signal conditioning and ADCs, the DMP, and various control circuits and registers. An on-chip PLL provides flexibility in the allowable inputs for generating this clock.
Allowable internal sources for generating the internal clock are:
- a) An internal relaxation oscillator
- b) Auto-select between internal relaxation oscillator and gyroscope MEMS oscillator to use the best available source
The only setting supporting specified performance in all modes is option b). It is recommended that option b) be used.
## **4.13 SENSOR DATA REGISTERS**
The sensor data registers contain the latest gyroscope, accelerometer, and temperature measurement data. They are read-only registers, and are accessed via the serial interface. Data from these registers may be read anytime.
## **4.14 FIFO**
The ICM-20789 contains a 4 kB FIFO register that is accessible via the Serial Interface. The FIFO configuration register determines which data is written into the FIFO. Possible choices include gyro data, accelerometer data, temperature readings, and FSYNC input. A FIFO counter keeps track of how many bytes of valid data are contained in the FIFO. The FIFO register supports burst reads. The interrupt function may be used to determine when new data is available.
The ICM-20789 allows FIFO read in low-power accelerometer mode.
## **4.15 INTERRUPTS**
Interrupt functionality is configured via the Interrupt Configuration register. Items that are configurable include the INT pin configuration, the interrupt latching and clearing method, and triggers for the interrupt. Items that can trigger an interrupt are (1) Clock generator locked to new reference oscillator (used when switching clock sources); (2) new data is available to be read (from the FIFO and Data registers); (3) accelerometer event interrupts; (4) DMP; (5) FIFO overflow. The interrupt status can be read from the Interrupt Status register.
## **4.16 DIGITAL-OUTPUT TEMPERATURE SENSOR**
An on-chip temperature sensor and ADC are used to measure the 6-axis motion die temperature. Another on-chip temperature sensor is present in the pressure sensor die. The readings from the ADC can be read from the FIFO or the Sensor Data registers.
## **4.17 BIAS AND LDOS**
The bias and LDO section generates the internal supply and the reference voltages and currents required by the ICM-20789. Its two inputs are an unregulated VDD and a VDDIO logic reference supply voltage. The LDO output is bypassed by a capacitor at REGOUT. For further details on the capacitor, please refer to the Bill of Materials for External Components.
## **4.18 CHARGE PUMP**
An on-chip charge pump generates the high voltage required for the MEMS oscillator.
Page 27 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **4.19 STANDARD POWER MODES – UPDATE THE POWER MODES**
The following table lists the user-accessible power modes for ICM-20789.
|**MODE**|**NAME**|**GYRO**|**ACCEL**|**DMP**|**PRESSURE**|
|---|---|---|---|---|---|
|1<br>~~a GQ~~|SleepMode<br>~~GQ~~|Off<br>~~GQ~~<br>~~GQ~~|Off<br>~~GQ~~<br>~~GQ~~|Off<br>~~GQ~~<br>~~QO~~|Off<br>~~GQ~~|
|2<br>~~Rs~~<br>~~Rs~~|StandbyMode<br>~~Rs~~<br>|Drive On<br>~~Rs~~<br>~~GQ~~<br>~~GQ~~<br>|Off<br>~~Rs~~<br>~~GQ~~<br>~~GQ~~<br>|Off<br>~~Rs~~<br>~~QO~~<br>~~QO~~<br>|Off<br>~~Rs~~<br>|
|3<br>~~Rs~~<br>~~Rs~~|Accelerometer Low-Power Mode<br>~~Rs~~<br>|Off<br>~~GQ~~<br>~~Rs~~<br>~~GQ~~<br>|Duty-Cycled<br>~~GQ~~<br>~~Rs~~<br>~~GQ~~<br>|On or Off<br>~~QO~~<br>~~Rs~~<br>~~QO~~<br>|On or Off<br>~~Rs~~<br>|
|4<br>~~Rs~~<br>~~a~~|Accelerometer Low-Noise Mode<br>~~QQ~~<br>~~es~~|Off<br>~~GQ~~<br>~~QQ~~<br>~~GGG~~|On<br>~~GQ~~<br>~~QQ~~<br>~~GGG~~|On or Off<br>~~QO~~<br>~~QQ~~<br>~~GGG~~|On or Off<br>~~QQ~~<br>~~GGG~~|
|5<br>~~Rs~~<br>~~a~~|Gyroscope Low-Power Mode<br><br>~~es~~|Duty-Cycled<br>~~GQ~~<br><br>~~GGG~~|Off<br>~~GQ~~<br><br>~~GGG~~|On or Off<br>~~QO~~<br><br>~~GGG~~|On or Off<br><br>~~GGG~~|
|6<br>~~a ~~<br>~~a~~<br>~~a~~|Gyroscope Low-Noise Mode<br> ~~es~~<br>~~sf~~<br>~~es~~|On<br>~~GGG~~<br>~~sf~~<br>~~GG~~|Off<br>~~GGG~~<br>~~sf~~<br>~~GG~~|On or Off<br>~~GGG~~<br>~~sf~~<br>~~GG~~|On or Off<br>~~GGG~~<br>~~sf~~|
|7<br>~~a~~|6-Axis Low-Noise Mode<br>~~es~~|On<br>~~GG~~|On<br>~~GG~~|On or Off<br>~~GG~~|On or Off|
|8<br>~~a ~~<br>~~a~~|6-Axis Low-Power Mode<br> ~~es~~<br>~~GQ~~|Duty-Cycled<br>~~GG~~<br>~~GQ~~<br>~~GQ~~|On<br>~~GG~~<br>~~GQ~~<br>~~GQ~~|On or Off<br>~~GG~~<br>~~GQ~~<br>~~QO~~|On or Off<br>~~GQ~~|
|9<br>~~Rs~~|Pressure sensor Low Noise Mode<br>~~Rs~~|On<br>~~Rs~~<br>~~GQ~~<br>~~QO~~|On<br>~~Rs~~<br>~~GQ~~<br>~~QO~~|On or Off<br>~~Rs~~<br>~~QO~~<br>~~QO~~|On<br>~~Rs~~|
|10<br>~~es~~|Pressure Sensor Low Power Mode<br>~~es~~|Duty-Cycled<br>~~GQ~~<br>~~es~~<br>~~QO~~|On<br>~~GQ~~<br>~~es~~<br>~~QO~~|On or Off<br>~~QO~~<br>~~es~~<br>~~QO~~|On<br>~~es~~|
**Table 16. Standard Power Modes for ICM-20789**
Page 28 of 65
Document Number: DS-000169 Revision: 1.4
‘TDK InvenSense
_**ICM-20789**_
## _**PROGRAMMABLE INTERRUPTS**_
The ICM-20789 has a programmable interrupt system which can generate an interrupt signal on the INT pin. Status flags indicate the source of an interrupt. Interrupt sources may be enabled and disabled individually.
|**INTERRUPT NAME**|**MODULE**|
|---|---|
|Motion Detection|Motion|
|FIFO Overflow|FIFO|
|Data Ready|Sensor Registers|
|DMP|DMP|
**Table 17. Table of Interrupt Sources**
## **5.1 PER AXIS WAKE-ON-MOTION INTERRUPT**
The ICM-20789 provides motion detection capability. A qualifying motion sample is one where the high passed sample from any axis has an absolute value exceeding a user-programmable threshold. The following steps explain how to configure the Wake-on-Motion Interrupt.
## _**Step 1: Ensure that Accelerometer is running**_
- In PWR_MGMT_1 register (0x6B) set CYCLE = 0, SLEEP = 0, and GYRO_STANDBY = 0
- In PWR_MGMT_2 register (0x6C) set DISABLE_XA = DISABLE_YA = DISABLE_ZA = 0, and DISABLE_XG = DISABLE_YG = DISABLE_ZG = 1
## _**Step 2: Accelerometer Configuration**_
1. In ACCEL_CONFIG2 register (0x1D) set ACCEL_FCHOICE_B = 0 and A_DLPF_CFG [2:0] = 1 (b001)
## _**Step 3: Enable Motion Interrupt**_
2. In INT_ENABLE register (0x38) set WOM_X_INT_EN = WOM_Y_INT_EN = WOM_Z_INT_EN = 1 to enable motion interrupt per axis.
## _**Step 4: Set Motion Threshold**_
3. Set the motion threshold in ACCEL_WOM_X_THR (0x20), ACCEL_WOM_Y_THR (0x21), ACCEL_WOM_Z_THR (0x22)
## _**Step 5: Enable Accelerometer Hardware Intelligence**_
4. In ACCEL_INTEL_CTRL register (0x69) set ACCEL_INTEL_EN = ACCEL_INTEL_MODE = 1; Ensure that bit 0 is set to 0.
## _**Step 6: Set Frequency of Wake-Up**_
5. In SMPLRT_DIV register (0x19) set SMPLRT_DIV [7:0] = 3.9 Hz – 500 Hz
## _**Step 7: Enable Cycle Mode (Accelerometer Low-Power Mode)**_
6. In PWR_MGMT_1 register (0x6B) set CYCLE = 1
Page 29 of 65
Document Number: DS-000169 Revision: 1.4
‘TDK InvenSense
_**ICM-20789**_
## _**DIGITAL INTERFACE**_
## **6.1 I[2] C SERIAL INTERFACE**
The internal registers and memory of the ICM-20789 can be accessed using either I[2] C at 400 kHz.
|**PIN NUMBER**|**PIN NAME**|**PIN DESCRIPTION**|
|---|---|---|
|9|AD0|I2C Slave Address LSB (AD0)|
|23|SCL|I2C serial clock (SCL)|
|24|SDA|I2C serial data (SDA)|
## **Table 18. Serial Interface**
## **6.2 I[2] C INTERFACE**
I[2] C is a two-wire interface comprised of the signals serial data (SDA) and serial clock (SCL). In general, the lines are open-drain and bidirectional. In a generalized I[2] C interface implementation, attached devices can be a master or a slave. The master device puts the slave address on the bus, and the slave device with the matching address acknowledges the master.
The ICM-20789 always operates as a slave device when communicating to the system processor, which thus acts as the master. SDA and SCL lines typically need pull-up resistors to VDDIO. The maximum bus speed is 400 kHz.
The slave address of the ICM-20789 is b110100X which is 7 bits long. The LSB bit of the 7-bit address is determined by the logic level on pin AD0. This allows two ICM-20789s to be connected to the same I[2] C bus. When used in this configuration, the address of one of the devices should be b1101000 (pin AD0 is logic low) and the address of the other should be b1101001 (pin AD0 is logic high).
## **6.3 I[2] C COMMUNICATIONS PROTOCOL (6-AXIS ONLY. FOR PRESSURE PLEASE SEE CHAPTER 10)**
## _START (S) and STOP (P) Conditions_
Communication on the I[2] C bus starts when the master puts the START condition (S) on the bus, which is defined as a HIGH-to-LOW transition of the SDA line while SCL line is HIGH (see figure below). The bus is considered to be busy until the master puts a STOP condition (P) on the bus, which is defined as a LOW to HIGH transition on the SDA line while SCL is HIGH (see Figure 11).
Additionally, the bus remains busy if a repeated START (Sr) is generated instead of a STOP condition.
**==> picture [363 x 84] intentionally omitted <==**
**----- Start of picture text -----**<br>
SDA<br>SCL<br>S P<br>START condition STOP condition<br>**----- End of picture text -----**<br>
**Figure 11. START and STOP Conditions**
Page 30 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## _Data Format / Acknowledge_
I[2] C data bytes are defined to be 8 bits long. There is no restriction to the number of bytes transmitted per data transfer. Each byte transferred must be followed by an acknowledge (ACK) signal. The clock for the acknowledge signal is generated by the master, while the receiver generates the actual acknowledge signal by pulling down SDA and holding it low during the HIGH portion of the acknowledge clock pulse.
If a slave is busy and cannot transmit or receive another byte of data until some other task has been performed, it can hold SCL LOW, thus forcing the master into a wait state. Normal data transfer resumes when the slave is ready, and releases the clock line (refer to the following figure).
**==> picture [419 x 157] intentionally omitted <==**
**----- Start of picture text -----**<br>
DATA OUTPUT BY<br>TRANSMITTER (SDA)<br>VL not acknowledge<br>DATA OUTPUT BY<br>>t<br>RECEIVER (SDA)<br>acknowledge<br>7 —_<br>SCL FROM<br>1 2 8 9<br>MASTER<br>clock pulse for<br>START acknowledgement<br>condition<br>**----- End of picture text -----**<br>
**Figure 12. Acknowledge on the I[2] C Bus**
## _Communications_
After beginning communications with the START condition (S), the master sends a 7-bit slave address followed by an 8[th] bit, the read/write bit. The read/write bit indicates whether the master is receiving data from or is writing to the slave device. Then, the master releases the SDA line and waits for the acknowledge signal (ACK) from the slave device. Each byte transferred must be followed by an acknowledge bit. To acknowledge, the slave device pulls the SDA line LOW and keeps it LOW for the high period of the SCL line. Data transmission is always terminated by the master with a STOP condition (P), thus freeing the communications line. However, the master can generate a repeated START condition (Sr), and address another slave without first generating a STOP condition (P). A LOW to HIGH transition on the SDA line while SCL is HIGH defines the stop condition. All SDA changes should take place when SCL is low, with the exception of start and stop conditions.
**==> picture [400 x 113] intentionally omitted <==**
**----- Start of picture text -----**<br>
SDA<br>SCL 1 – 7 8 9 1 – 7 8 9 1 – 7 8 9<br>S P<br>START ADDRESS R/W ACK DATA ACK DATA ACK STOP<br>condition condition<br>**----- End of picture text -----**<br>
**Figure 13. Complete I[2] C Data Transfer**
Page 31 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
To write the internal ICM-20789 registers, the master transmits the start condition (S), followed by the I[2] C address and the write bit (0). At the 9[th] clock cycle (when the clock is high), the ICM-20789 acknowledges the transfer. Then the master puts the register address (RA) on the bus. After the ICM-20789 acknowledges the reception of the register address, the master puts the register data onto the bus. This is followed by the ACK signal, and data transfer may be concluded by the stop condition (P). To write multiple bytes after the last ACK signal, the master can continue outputting data rather than transmitting a stop signal. In this case, the ICM20789 automatically increments the register address and loads the data to the appropriate register. The following figures show single and two-byte write sequences.
_Single-Byte Write Sequence_
|Master<br>S<br>AD+W<br>RA<br>DATA<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>~~ee~~||
|---|---|
|_Burst Write Sequence_||
|Master<br>S<br>AD+W<br>RA<br>DATA<br>DATA<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>ACK<br>~~ee~~<br>~~ee~~||
|To read the internal ICM-20789 registers, the master sends a start condition, followed by the I2C address and a write bit, and then||
|the register address that is going to be read. Upon receiving the ACK signal from the ICM-20789, the master transmits a start signal||
|followed by the slave address and read bit. As a result, the ICM-20789 sends an ACK signal and the data. The communication ends||
|with a not acknowledge (NACK) signal and a stop bit from master. The NACK condition is defined such that the SDA line remains high||
|at the 9thclock cycle. The following figures show single and two-byte read sequences.||
_Single-Byte Read Sequence_
|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~|Master<br>S<br>AD+W<br>RA<br>S<br>AD+R<br>NACK<br>P<br>Slave<br>ACK<br>ACK<br>ACK<br>DATA<br>~~ee~~||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|_Burst Read Sequence_||||_Burst Read Sequence_|||||||||||||
|Master<br>S<br>AD+W<br>Slave<br>~~oe ~~|||||RA<br>S<br>AD+R<br>ACK<br>ACK<br> ~~ee~~|ACK|DATA||ACK||DATA||||NACK|P|
|**6.4 I2C TERMS**|||||||||||||||||
|||||**SIGNAL**<br>**DESCRIPTION**|||||||||||||
||||||S<br>Start Condition: SDAgoes from high to low while SCL is hi|||h to low while SCL is high||||h|||||
|||||AD<br>Slave I2C address|||||||||||||
||||||W<br>Write bit(0)||||||||||||
||||||R<br>Read bit(1)||||||||||||
|||||ACK<br>Acknowledge: SDA line is low while the SCL line is hi|||||e: SDA line is low while the SCL line is hi|e: SDA line is low while the SCL line is high at the 9|||h at the 9thclock cycle||||
|||||NACK<br>Not-Acknowledge: SDA line stays high at the 9thclock c|||||clock cycle||||||||
||||||RA<br>ICM-20789 internal register address||||||||||||
|||||DATA<br>Transmit or received data|||||||||||||
||||||P<br>Stopcondition: SDAgoingfrom low to high while SCL is hi|||||h while SCL is high||h|||||
**Table 19. I[2] C Term SPI Interface**
SPI is a 4-wire synchronous serial interface that uses two control lines and two data lines. The ICM-20789 always operates as a Slave device during standard Master-Slave SPI operation (6-Axis only).
With respect to the Master, the Serial Clock output (SPC), the Serial Data Output (SDO) and the Serial Data Input (SDI) are shared among the Slave devices. Each SPI slave device requires its own Chip Select (CS) line from the master.
CS goes low (active) at the start of transmission and goes back high (inactive) at the end. Only one CS line is active at a time, ensuring that only one slave is selected at any given time. The CS lines of the non-selected slave devices are held high, causing their SDO lines to remain in a high-impedance (high-z) state so that they do not interfere with any active devices.
Page 32 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## _SPI Operational Features_
1. Data is delivered MSB first and LSB last
2. Data is latched on the rising edge of SPC
3. Data should be transitioned on the falling edge of SPC
4. The maximum frequency of SPC is 8 MHz
5. SPI read and write operations are completed in 16 or more clock cycles (two or more bytes). The first byte contains the SPI Address, and the following byte(s) contain(s) the SPI data. The first bit of the first byte contains the Read/Write bit and indicates the Read (1) or Write (0) operation. The following 7 bits contain the Register Address. In cases of multiplebyte Read/Writes, data is two or more bytes:
|_SPI Address format_|||||||
|---|---|---|---|---|---|---|
|**MSB**<br>**LSB**<br>R/W<br>A6<br>A5<br>A4<br>A3<br>A2<br>A1<br>A0<br>~~oo~~|||||||
|_SPI Data format_|||||||
|**MSB**||||||**LSB**|
|D7<br>D6|D5|D4|D3|D2|D1|D0|
6. Supports Single or Burst Read/Writes.
Page 33 of 65
Document Number: DS-000169 Revision: 1.4
TDK InvenSense
_**ICM-20789**_
## _**SERIAL INTERFACE CONSIDERATIONS**_
## **7.1 ICM-20789 SUPPORTED INTERFACES**
The ICM-20789 supports I[2] C communications on its serial interface **.** The ICM-20789’s I/O logic levels are set to be VDDIO. Figure 14 depicts a sample circuit of ICM-20789. It shows the relevant logic levels and voltage connections.
**==> picture [425 x 223] intentionally omitted <==**
**----- Start of picture text -----**<br>
VDDIO<br>VDD_IO<br>(0V - VDDIO) SYSTEM BUS<br>System<br>VDD Processor IO<br>VDDIO<br>|<br>VDD INT (0V - VDDIO) _ 3 ~<br>(0V - VDDIO)<br>SDA<br>(0V - VDDIO)<br>(0V - VDDIO) SCL<br>SYNC<br>VDDIO<br>ICM-20789<br>| VDDIO<br>(0V, VDDIO)<br>AD0<br>**----- End of picture text -----**<br>
**Figure 14. I/O Levels and Connections**
Page 34 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## _**REGISTER MAP**_
|**Addr.**<br>**(Dec)**<br>~~P|]~~|**Addr**<br>**(Hex)**<br>~~P|][|~~|**Register Names**<br>~~[|6c~~|**Bit7**<br>~~6c~~|**Bit6**<br>~~6c~~|**Bit5**|**Bit4**|**Bit3**|**Bit2**|**Bit1**|**Bit0**|
|---|---|---|---|---|---|---|---|---|---|---|
|0<br>~~P|]~~<br>~~a~~|00<br>~~P|] [|~~<br>~~a~~<br>~~a~~|SELF_TEST X GYRO<br>~~[| 6c~~<br>~~a~~<br>~~a~~<br>~~a~~|XG_ST_DATA[7:0]<br>~~6c~~<br>~~a~~<br>~~a~~||||||||
|1<br>~~a~~<br>~~a~~<br>~~a~~|01<br>~~a~~<br>~~a~~<br>~~a~~<br>a<br>~~a~~|SELF_TEST Y GYRO<br>~~a~~<br>~~a~~<br>~~a~~<br>~~a~~<br>~~a~~<br>~~ee~~|YG_ST_DATA[7:0]<br>~~a~~<br>~~a~~||||||||
|2<br>~~a~~|02<br>~~a~~|SELF_TEST Z GYRO<br>~~ee~~|ZG_ST_DATA[7:0]||||||||
|13<br>~~a~~<br>~~a~~<br><br>~~a~~|0D<br>~~a ~~<br>~~a~~<br>|SELF_TEST4(X<br>ACCEL)<br> ~~ee~~<br>~~ee~~|XA_ST_DATA[7:0]||||||||
|14<br>~~a~~ <br>~~a~~|0E<br> ~~a~~<br>|SELF_TEST5(Y<br>ACCEL)<br>~~ee~~|YA_ST_DATA[7:0]||||||||
|15<br> <br>~~aa~~|0F<br> ~~a~~<br>~~a~~|SELF_TEST6(Z<br>ACCEL)<br>~~ee~~<br>~~ee~~|ZA_ST_DATA[7:0]||||||||
|19<br>~~a~~<br>~~a~~|13<br>~~a~~<br>~~a~~|XG_OFFS_USRH<br>~~ee~~<br>~~ee~~|X_OFFS_USR[15:8]||||||||
|20<br>~~a ~~<br>~~a~~<br>~~a~~|14<br> ~~a~~<br>~~a~~<br>~~a~~|XG_OFFS_USRL<br>~~ee~~<br>~~ee~~<br>~~ee~~|X_OFFS_USR[7:0]||||||||
|21<br>~~a ~~<br>~~a~~<br>~~a~~|15<br> ~~a~~<br>~~a~~<br>~~a~~|YG_OFFS_USRH<br>~~ee~~<br>~~ee~~<br>~~ee~~|Y_OFFS_USR[15:8]||||||||
|22<br>~~a ~~<br>~~a~~|16<br> ~~a~~<br>~~a~~|YG_OFFS_USRL<br>~~ee~~<br>~~ee~~|Y_OFFS_USR[7:0]||||||||
|23<br>~~a~~<br>~~a~~|17<br>~~a ~~|ZG_OFFS_USRH<br> ~~ee~~|Z_OFFS_USR[15:8]||||||||
|24<br>~~a~~<br>~~a~~|18<br> a|ZG_OFFS_USRL|Z_OFFS_USR[7:0]||||||||
|25<br>~~a~~|19<br>~~a~~|SMPLRT_DIV|SMPLRT_DIV[7:0]||||||||
|26<br>~~a~~<br>~~ee~~<br>~~a~~|1A<br>~~a~~<br>~~ee~~<br>~~a~~|CONFIG<br>~~ee~~<br>~~ee~~|FIFO_COUN<br>T_REC<br>~~ee ~~<br>~~ee~~|FIFO_MODE<br> ~~GG~~<br>~~ss~~|EXT_SYNC_SET[2:0]<br>~~GG~~<br>~~ss~~|||DLPF_CFG[2:0]|||
|27<br>~~a~~<br>~~a~~|1B<br>~~a~~<br>~~a~~|GYRO CONFIG<br>~~ee~~<br>~~es~~|XGYRO_STE<br>N<br>~~ee~~<br>~~es~~|YGYRO_STEN<br>~~ss~~|ZGYRO_STEN<br>~~ss~~|GYRO_FS_SEL[1:0]||-|FCHOICE_B[1:0]||
|28<br>~~a ~~<br>~~a~~<br>~~a~~|1C<br> ~~a~~<br>~~a~~<br>~~a~~|ACCEL_CONFIG<br>~~ee~~<br>~~es~~<br>~~ee~~|AX_ST_EN<br>~~ee ~~<br>~~es~~<br>~~ee~~|AY_ST_EN<br> ~~ss~~<br>~~ee~~|AZ_ST_EN<br>~~ss~~|ACCEL_FS_SEL[4:3]||-|-|-|
|29<br>~~a~~<br>~~a~~<br>~~a~~|1D<br>~~a~~<br>~~a~~<br>~~a~~|ACCEL_CONFIG2<br>~~es~~<br>~~ee~~<br>~~ee~~|FIFO_SIZE[1:0]<br>~~es~~<br>~~ee~~||DEC2_CFG[5:4]||ACCEL_FCHOICE<br>_B|A_DLPF_CFG[2:0]|||
|30<br>~~a~~<br>~~a~~|1E<br>~~a~~<br>~~a~~|LP_MODE_CTRL<br>~~ee~~<br>~~ee~~|GYRO_CYCL<br>E<br>~~ee~~|GYRO_AVGCFG[2:0]<br>~~ee~~|||LPOSC_CLKSEL2[3:0]||||
|32<br>~~a~~<br>~~aa~~<br><br>~~a~~|20<br>~~a ~~<br>~~aa~~<br>~~**a**~~<br>|ACCEL_WOM_X_T<br>HR<br> ~~ee~~<br>~~aa~~<br>~~ee~~|WOM_X_THRESHOLD[7:0]||||||||
|33<br>~~a~~<br>~~a~~|21<br>~~a~~~~**a**~~<br>|ACCEL_WOM_Y_T<br>HR<br>~~ee~~|WOM_Y_THRESHOLD[7:0]||||||||
|34<br><br>~~aP|~~|22<br>~~**a**~~<br>~~P|~~<br>~~|~~|ACCEL_WOM_Z_T<br>HR<br>~~ee~~<br>~~UT~~|WOM_Z_THRESHOLD[7:0]<br>~~UT~~||||||||
|35<br>~~P|~~<br>~~P|~~|23<br>~~P|~~<br>~~|~~<br>~~P|~~<br>~~|~~|FIFO_EN<br>~~UT~~<br>~~UT~~|TEMP_OUT<br>~~UT~~<br>~~UT~~|GYRO_XOUT|GYRO_YOUT|GYRO_ZOUT|ACCEL_XYZ_OU<br>T|-|-|-|
|55<br>~~P|~~<br>~~P|~~<br>~~a~~|37<br>~~P|~~<br>~~|~~<br>~~P|~~<br>~~|~~<br>~~a~~|INT_PIN_CFG<br>~~UT~~<br>~~UT~~<br>~~Gs~~|ACTL<br>~~UT~~<br>~~UT~~<br>~~Gs~~|OPEN<br>~~Gs~~|LATCH_INT_EN<br>~~ss~~|INT_ANYRD_2CLE<br>AR<br>~~ss~~|ACTL_FSYNC<br>~~GO~~|FSYNC_INT_MOD<br>E_EN|BYPASS_EN|-|
|56<br>~~P|~~<br>~~a~~<br>~~a~~|38<br>~~P|~~<br>~~|~~<br>~~a~~<br>~~a~~|INT_ENABLE<br>~~UT~~<br>~~Gs~~<br>~~es~~|WOM_X_IN<br>T_EN<br>~~UT~~<br>~~Gs~~<br>~~es~~|WOM_Y_INT_EN<br>~~Gs~~<br>~~ee~~|WOM_Z_INT_EN<br>~~ss~~|FIFO_OVERFLOW<br>_EN<br>~~ss~~|-<br>~~GO~~|GDRIVE_RDY_EN|DMP_INT_EN|RAW_RDY_EN|
|57<br>~~a ~~<br>~~a~~|39<br> ~~a~~<br>~~a~~|DMP_INT_STATUS<br>~~Gs~~<br>~~es~~|-<br>~~Gs~~<br>~~es~~|FIFO_WM_INT<br>~~Gs~~<br>~~ee~~|DMP_INT [5:0]<br>~~ssGO~~||||||
|58<br>~~a~~<br>~~a~~ <br>~~a~~|3A<br>~~a~~<br> a<br>~~a~~|INT_STATUS<br>~~es~~<br>~~ee~~<br>~~ee~~|WOM_X_IN<br>T<br>~~es~~<br>~~ee~~|WOM_Y_INT<br>~~ee~~<br>~~eG~~|WOM_Z_INT<br>~~eG~~|FIFO_OVERFLOW<br>_INT<br>~~eG~~|-<br>~~eG~~|GDRIVE_RDY_INT<br>~~eG~~|DMP_INT<br>~~eG~~|RAW_DATA_RDY<br>_INT<br>~~eG~~|
|59<br>~~a~~<br>~~a~~|3B<br>~~a~~<br>~~a~~|ACCEL_XOUT_H<br>~~ee~~<br>~~ee~~|ACCEL_XOUT_H [15:8]||||||||
|60<br>~~a~~<br>~~a~~<br>~~a~~|3C<br>~~a~~<br>~~a~~<br>~~a~~|ACCEL_XOUT_L<br>~~ee~~<br>~~ee~~<br>~~ee~~|ACCEL_XOUT_L[7:0]||||||||
|61<br>~~a~~<br>~~a~~|3D<br>~~a~~<br>~~a~~|ACCEL_YOUT_H<br>~~ee~~<br>~~ee~~|ACCEL_YOUT_H[15:8]||||||||
|62<br>~~a ~~<br>~~a~~|3E<br> ~~a ~~<br>~~a~~|ACCEL_YOUT_L<br> ~~ee~~|ACCEL_YOUT_L[7:0]||||||||
|63<br>~~a~~<br>~~a~~|3F<br>~~a~~<br>~~a~~|ACCEL_ZOUT_H|ACCEL_ZOUT_H[15:8]||||||||
|64<br>~~a~~|40<br>~~a~~|ACCEL_ZOUT_L|ACCEL_ZOUT_L[7:0]||||||||
|65<br>~~a~~|41<br>~~a~~|TEMP_OUT_H|TEMP_OUT_H[15:8]||||||||
|66<br>~~a~~<br>~~a~~<br>|42<br>~~a~~<br>~~a~~<br>~~a~~|TEMP_OUT_L<br>~~ee~~|TEMP_OUT_L[7:0]||||||||
|67<br>~~a~~<br>~~a~~|43<br>~~aa~~<br>~~a~~|GYRO_XOUT_H<br>~~ee~~<br>~~ee~~|GYRO_XOUT_H[15:8]||||||||
|68<br><br>~~a~~<br>~~a~~|44<br>~~a ~~<br>~~a~~<br>~~a~~|GYRO_XOUT_L<br> ~~ee~~<br>~~ee~~<br>~~ee~~|GYRO_XOUT_L[7:0]||||||||
|69<br>~~a~~<br>~~a~~<br>~~a~~|45<br>~~a~~<br>~~a~~<br>~~a~~|GYRO_YOUT_H<br>~~ee~~<br>~~ee~~<br>~~ee~~|GYRO_YOUT_H[15:8]||||||||
|70<br>~~a~~<br>~~a~~<br>~~a~~|46<br>~~a~~<br>~~a~~<br>~~a~~|GYRO_YOUT_L<br>~~ee~~<br>~~ee~~<br>~~ee~~|GYRO_YOUT_L[7:0]||||||||
|71<br>~~a~~<br>~~a~~|47<br>~~a~~<br>~~a~~|GYRO_ZOUT_H<br>~~ee~~<br>~~ee~~|GYRO_ZOUT_H[15:8]||||||||
|72<br>~~a~~<br>~~a~~<br>~~Pot]~~|48<br>~~a~~<br>~~Pot]|~~|GYRO_ZOUT_L<br>~~ee~~<br>~~|~~|GYRO_ZOUT_L[7:0]||||||||
|104<br>~~Pot]~~<br>~~|~~<br>~~|~~|68<br>~~Pot]|~~<br>~~fT~~|SIGNAL_PATH_RES<br>ET<br>~~|~~<br>~~fT~~|-<br>~~fT~~|-|-|-|-|GYRO_RST|ACCEL_RST|TEMP_RST|
|105<br>~~Pot]~~<br>~~|~~<br>~~|~~|69<br>~~Pot] |~~<br>~~fT~~|ACCEL_INTEL_CTRL<br>~~|~~<br>~~fT~~|ACCEL_INTE<br>L_EN<br>~~fT~~|ACCEL_INTEL_MO<br>DE|-|-|-|-|-|-|
Page 35 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
|**Addr.**<br>**(Dec)**<br>~~a~~|**Addr**<br>**(Hex)**<br>~~a~~|**Register Names**<br>~~a~~|**Bit7**<br>~~es ee~~|**Bit6**<br>~~ee~~|**Bit5**<br>~~eG~~|**Bit4**<br>~~eG~~|**Bit3**<br>~~eG~~|**Bit2**<br>~~eG~~|**Bit1**<br>~~eG~~|**Bit0**<br>~~eG~~|
|---|---|---|---|---|---|---|---|---|---|---|
|106<br>~~a~~<br>~~a~~|6A<br>~~a~~<br>~~a~~|USER_CTRL<br>~~a~~<br>~~ee~~|DMP_EN<br>~~es ee~~<br>~~ee ee~~|FIFO_EN<br>~~ee~~<br>~~ee~~|-<br>~~eG~~<br>~~rs~~|I2C_IF_DIS<br>~~eG~~<br>~~rs~~|DMP_RST<br>~~eG~~|FIFO_RST<br>~~eG~~|-<br>~~eG~~|SIG_COND_RST<br>~~eG~~|
|107<br>~~a~~<br>~~a~~<br>~~a~~|6B<br>~~a ~~<br>~~a~~<br>~~a~~|PWR_MGMT_1<br> ~~a~~<br>~~ee~~<br>~~re~~|DEVICE_RES<br>ET<br>~~es ee~~<br>~~ee ee~~<br>~~er~~|SLEEP<br>~~ee~~<br>~~ee~~<br>~~es~~|ACCEL_CYCLE<br>~~eG~~<br>~~rs~~<br>~~rs~~|GYRO_STANDBY<br>~~eG~~<br>~~rs~~<br>~~rs~~|TEMP_DIS<br>~~eG~~<br>~~Qs~~|CLKSEL[2:0]<br>~~eG~~|||
|108<br>~~a ~~<br>~~a~~<br>~~a~~|6C<br> ~~a~~<br>~~a~~<br>~~ae~~|PWR_MGMT_2<br>~~ee~~<br>~~re~~<br>~~ee~~|LP_DIS<br>~~ee ee~~<br>~~er~~|DMP_LP_DIS<br>~~ee ~~<br>~~es~~|DISABLE_XA<br> ~~rs~~<br>~~rs~~|DISABLE_YA<br>~~rs~~<br>~~rs~~|DISABLE_ZA<br>~~Qs~~|DISABLE_XG|DISABLE_YG|DISABLE_ZG|
|114<br>~~a ~~<br>~~a~~<br>~~a~~|72<br> ~~a~~<br>~~ae~~<br>~~ae~~|FIFO_COUNTH<br>~~re ~~<br>~~ee~~<br>~~re~~|FIFO_COUNTH[12:8]<br> ~~er es~~<br>~~rs rsQs~~<br>~~ee~~||||||||
|115<br>~~a~~<br>~~a~~<br>~~a~~|73<br>~~ae~~<br>~~ae~~<br>~~ae~~|FIFO_COUNTL<br>~~ee~~<br>~~re~~<br>~~re~~|FIFO_COUNTL[7:0]<br>~~ee~~<br>~~ee~~||||||||
|116<br>~~a~~<br>~~a~~<br>~~a~~|74<br>~~ae ~~<br>~~ae~~<br>~~a~~|FIFO_R_W<br> ~~re~~<br>~~re~~<br>~~ee~~|FIFO_R_W[7:0]<br>~~ee~~<br>~~ee~~||||||||
|117<br>~~a~~<br>~~a~~<br>~~a~~|75<br>~~ae ~~<br>~~a~~<br>~~a~~|WHO_AM_I<br> ~~re~~<br>~~ee~~<br>~~ee~~|WHO_AM_I[7:0]<br>~~ee~~||||||||
|119<br>~~a ~~<br>~~a~~<br>~~a~~|77<br> ~~a~~<br>~~a~~<br>~~a~~|XA_OFFS_H<br>~~ee~~<br>~~ee~~<br>~~ee~~|XA_OFFSH[14:7]||||||||
|120<br>~~a ~~<br>~~a~~<br>~~a~~|78<br> ~~a~~<br>~~a~~<br>~~a~~|XA_OFFS_L<br>~~ee~~<br>~~ee~~<br>~~ee~~|XA_OFFSL[6:0]|||||||-|
|122<br>~~a ~~<br>~~a~~<br>~~a~~|7A<br> ~~a~~<br>~~a~~<br>~~a~~|YA_OFFS_H<br>~~ee~~<br>~~ee~~<br>~~ee~~|YA_OFFSH[14:7]||||||||
|123<br>~~a ~~<br>~~a~~|7B<br> ~~a~~<br>~~a~~|YA_OFFS_L<br>~~ee~~<br>~~ee~~|YA_OFFSL[6:0]|||||||-|
|125<br>~~a ~~<br>~~a~~|7D<br> ~~a~~<br>~~ee~~|ZA_OFFS_H<br>~~ee~~<br>~~ee~~|ZA_OFFSH[14:7]||||||||
|126<br>~~a~~|7E<br>a|ZA_OFFS_L|ZA_OFFSL[6:0]|||||||-|
## **Table 20. Register Map**
**Note:** Register Names ending in _H and _L contain the high and low bytes, respectively, of an internal register value.
In the detailed register tables that follow, register names are in capital letters, while register values are in capital letters and italicized. For example, the ACCEL_XOUT_H register (Register 59) contains the 8 most significant bits, _ACCEL_XOUT_ [15:8], of the 16bit X-Axis accelerometer measurement, _ACCEL_XOUT_ .
The reset value is 0x00 for all registers other than the registers below, also the self-test registers contain pre-programmed values and will not be 0x00 after reset.
- Register 107 (0x40) Power Management 1
- Register 117 (0x03) WHO_AM_I for ICM-20789
Page 36 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## _**REGISTER DESCRIPTIONS**_
This section describes the function and contents of each register within the ICM-20789.
**Note** : The device will come up in sleep mode upon power-up.
## **9.1 REGISTERS DESCRIPTIONS**
Reset values are “0” for all registers, unless otherwise specified
## **9.2 REGISTERS 0 TO 2 – SELF-TEST REGISTERS**
## **Register Name: SELF_TEST X GYRO, SELF_TEST Y GYRO, SELF_TEST Z GYRO Type: USR/CFG**
## **Register Address: 0, 1, 2 (Decimal); 00, 01, 02 (Hex)**
|**REGISTER**|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|---|
|SELF_TEST X GYRO|**[7:0]**|XG_ST_DATA|The value in this register indicates the self-test output generated during<br>manufacturing tests. This value is to be used to check against<br>subsequent self-test outputsperformed bythe end user.|
|SELF_TEST Y GYRO|**[7:0]**|YG_ST_DATA|The value in this register indicates the self-test output generated during<br>manufacturing tests. This value is to be used to check against<br>subsequent self-test outputsperformed bythe end user.|
|SELF_TEST Z GYRO|**[7:0]**|ZG_ST_DATA|The value in this register indicates the self-test output generated during<br>manufacturing tests. This value is to be used to check against<br>subsequent self-test outputsperformed bythe end user.|
## **9.3 REGISTERS 13 TO 15**
## **Register Name: SELF_TEST4(X ACCEL), SELF_TEST5(Y ACCEL), SELF_TEST6(Z ACCEL) Register Type: USR/CFG**
## **Register Address: 13, 14, 15 (Decimal); 0D, 0E, 0F (Hex)**
|**REGISTER**|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|---|
|SELF_TEST4(X ACCEL)|**[7:0]**|XA_ST_DATA[7:0]|Contains self-test data for the X Accelerometer|
|SELF_TEST5(Y ACCEL)|**[7:0]**|YA_ST_DATA[7:0]|Contains self-test data for the Y Accelerometer|
|SELF_TEST6(Z ACCEL)|**[7:0]**|ZA_ST_DATA[7:0]|Contains self-test data for the Z Accelerometer|
## **9.4 REGISTER 19 – GYRO OFFSET ADJUSTMENT REGISTER**
## **Register Name: XG_OFFS_USRH**
## **Register Type: USR**
## **Register Address: 19 (Decimal); 13 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|X_OFFS_USR[15:8]|Bits 15 to 8 of the 16-bit offset of X gyroscope (2’s complement). This register is used to<br>remove DC bias from the sensor output. The value in this register is added to the gyroscope<br>sensor value beforegoinginto the sensor register.|
## **9.5 REGISTER 20 – GYRO OFFSET ADJUSTMENT REGISTER**
## **Register Name: XG_OFFS_USRL**
**Register Type: USR**
## **Register Address: 20 (Decimal); 14 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|X_OFFS_USR[7:0]|Bits 7 to 0 of the 16-bit offset of X gyroscope (2’s complement). This register is used to<br>remove DC bias from the sensor output. The value in this register is added to the gyroscope<br>sensor value beforegoinginto the sensor register.|
Page 37 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **9.6 REGISTER 21 – GYRO OFFSET ADJUSTMENT REGISTER**
**Register Name: YG_OFFS_USRH Register Type: USR Register Address: 21 (Decimal); 15 (Hex) INTBIT NAME FUNCTION** Bits 15 to 8 of the 16-bit offset of Y gyroscope (2’s complement). This register is used to Y_OFFS_USR[15:8] **[7:0]** remove DC bias from the sensor output. The value in this register is added to the ~~a~~ gyroscope sensor value before going into the sensor register. **9.7 REGISTER 22 – GYRO OFFSET ADJUSTMENT REGISTER Register Name: YG_OFFS_USRL Register Type: USR Register Address: 22 (Decimal); 16 (Hex)**
**BIT NAME FUNCTION** Bits 7 to 0 of the 16-bit offset of Y gyroscope (2’s complement). This register is used to **[7:0]** Y_OFFS_USR[7:0] remove DC bias from the sensor output. The value in this register is added to the ~~a~~ gyroscope sensor value before going into the sensor register. **9.8 REGISTER 23 – GYRO OFFSET ADJUSTMENT REGISTER**
## **Register Name: ZG_OFFS_USRH**
## **Register Type: USR**
## **Register Address: 23 (Decimal); 17 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|Z_OFFS_USR[15:8]|Bits 15 to 8 of the 16-bit offset of Z gyroscope (2’s complement). This register is used to<br>remove DC bias from the sensor output. The value in this register is added to the<br>gyroscope sensor value before going into the sensor register.|
## **9.9 REGISTER 24 – GYRO OFFSET ADJUSTMENT REGISTER**
**Register Name: ZG_OFFS_USRL Register Type: USR Register Address: 24 (Decimal); 18 (Hex) BIT NAME FUNCTION** Bits 7 to 0 of the 16-bit offset of Z gyroscope (2’s complement). This register is used to **[7:0]** Z_OFFS_USR[7:0] remove DC bias from the sensor output. The value in this register is added to the ~~a~~ gyroscope sensor value before going into the sensor register. **9.10 REGISTER 25 – SAMPLE RATE DIVIDER.**
## **Register Name: SMPLRT_DIV**
## **Register Type: USR**
## **Register Address: 25 (Decimal); 19 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|SMPLRT_DIV[7:0]|Divides the internal sample rate (see register CONFIG (0x1A)) to generate the sample rate<br>that controls sensor data output rate, FIFO sample rate.<br>**Note**: This register is only effective when FCHOICE_B register bits are 2’b00, and (0 < DLPF_CFG < 7).<br>This is the update rate of the sensor register:<br>SAMPLE_RATE = INTERNAL_SAMPLE_RATE / (1 + SMPLRT_DIV)<br>Where INTERNAL_SAMPLE_RATE = 1 kHz|
Page 38 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **9.11 REGISTER 26 – CONFIGURATION**
## **Register Name: CONFIG**
## **Register Type: USR**
## **Register Address: 26 (Decimal); 1A (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|FIFO_COUNT_REC|Always set to 0.|
|**[6]**|FIFO_MODE|When set to ‘1’, when the fifo is full, additional writes will not be written to fifo.<br>When set to ‘0’, when the fifo is full, additional writes will be written to the fifo,<br>replacingthe oldest data.|
|**[5:3]**|EXT_SYNC_SET[2:0]|Enables the FSYNCpin data to be sampled.<br>**EXT_SYNC_SET**<br>**FSYNC bit location**<br>0<br>function disabled<br>1<br>TEMP_OUT_L[0]<br>2<br>GYRO_XOUT_L[0]<br>3<br>GYRO_YOUT_L[0]<br>4<br>GYRO_ZOUT_L[0]<br>5<br>ACCEL_XOUT_L[0]<br>6<br>ACCEL_YOUT_L[0]<br>7<br>ACCEL_ZOUT_L[0]|
|**[2:0]**|DLPF_CFG[2:0]|For the DLPF to be used, FCHOICE_B[1:0] is 2’b00.<br>See the table below.|
The DLPF is configured by _DLPF_CFG,_ when _FCHOICE_B_ [1:0] = 2b’00. The gyroscope and temperature sensor are filtered according to the value of _DLPF_CFG_ and _FCHOICE_B_ as shown in Table 21.
|**FCHOICE_B**<br>~~ee~~<br>~~|~~|**FCHOICE_B**<br>~~ee~~<br>~~|~~|**DLPF_CFG**<br> ee<br>~~|~~<br>~~|~~<br>~~ee~~<br>|**Gyroscope**<br>~~eee~~<br>~~|~~<br>~~|~~<br>~~ft~~|**Gyroscope**<br>~~eee~~<br>~~|~~<br>~~|~~<br>~~ft~~|**Gyroscope**<br>~~eee~~<br>~~|~~<br>~~|~~<br>~~ft~~|**Temperature**<br>**Sensor**<br>~~eee~~<br>|
|---|---|---|---|---|---|---|
|<1><br>~~ee~~<br>~~|~~<br>~~es~~<br>~~es~~|<0><br>~~ee ~~<br>~~||~~<br>~~ee~~<br>||3-dB BW<br>(Hz)<br>~~eee~~<br>~~|~~<br>~~|~~<br>~~ee~~<br>|Noise BW<br>(Hz)<br>~~eee~~<br>~~ft~~<br>~~ee~~<br>|~~eee~~<br>~~ftft~~|3-dB BW (Hz)<br>~~eee~~<br>~~ft~~|
|X<br><br>~~es~~<br>~~es~~<br>~~es~~|1<br>~~|~~<br>~~ee~~<br>~~eee~~<br>|X<br>~~|~~<br>~~|~~<br>~~ee~~<br>~~ers~~<br>|8173<br>~~|~~<br>~~|~~<br>~~ee~~<br>~~es~~<br>|8595.1<br>~~ft~~<br>~~ee~~<br>~~es~~<br>|~~ftft~~|4000<br>~~ft~~|
|1<br>~~es ~~<br>~~es~~<br>~~es~~<br>~~es~~|0<br> ~~ee~~<br>~~eee~~<br>~~eee~~|X<br>~~ee~~<br>~~ers~~<br>~~ers~~|3281<br>~~ee~~<br>~~es~~<br>~~es~~|3451.0<br><br>~~ee~~<br>~~es~~<br>~~es~~|~~ft~~|4000<br>~~ft~~|
|0<br> <br>~~es ~~<br>~~es~~<br>~~es~~|0<br> ~~ee~~<br> ~~eee~~<br>~~eee~~|0<br>~~ee ~~<br>~~ers~~<br>~~ers~~|250<br> ~~ee~~<br>~~es~~<br>~~es~~|306.6<br>~~ee~~<br>~~es~~<br>~~es~~||4000|
|0<br> <br>~~es ~~<br>~~es~~<br>~~es~~|0<br> ~~eee ~~<br> ~~eee~~<br>~~eG~~|1<br> ~~ers ~~<br>~~ers~~<br>~~eG~~|176<br> ~~es~~<br>~~es~~<br>~~eG~~|177.0<br>~~es~~<br>~~es~~<br>~~eG~~|~~eG~~|188<br>~~eG~~|
|0<br> <br>~~es~~<br>~~es~~<br>~~es~~|0<br> ~~eee ~~<br>~~eG~~<br>~~ee~~|2<br> ~~ers ~~<br>~~eG~~<br>~~ee~~|92<br> ~~es~~<br>~~eG~~<br>~~es~~|108.6<br>~~es~~<br>~~eG~~|~~eG~~|98<br>~~eG~~|
|0<br>~~es~~<br>~~es~~<br>~~es~~|0<br>~~eG~~<br>~~ee~~<br>~~eee~~|3<br>~~eG~~<br>~~ee~~<br>~~ers~~|41<br>~~eG~~<br>~~es~~<br>~~es es~~|59.0<br>~~eG~~<br>~~es~~|~~eG~~|42<br>~~eG~~|
|0<br>~~es ~~<br>~~es~~<br>~~es~~|0<br> ~~ee~~<br>~~eee~~<br>~~eee~~|4<br>~~ee ~~<br>~~ers~~<br>~~ers~~|20<br> ~~es~~<br>~~es es~~<br>~~es es~~|30.5<br>~~es~~<br>~~es~~||20|
|0<br>~~es~~<br>~~es~~<br>~~es~~|0<br>~~eee ~~<br>~~eee~~<br>~~eG~~|5<br> ~~ers ~~<br>~~ers~~<br>~~eG~~|10<br> ~~es es~~<br>~~es es~~<br>~~eG~~|15.6<br>~~es~~<br>~~es~~<br>~~eG~~|~~eG~~|10<br>~~eG~~|
|0<br>~~es~~<br>~~es~~<br>~~es~~|0<br>~~eee ~~<br>~~eG~~<br>~~ee~~|6<br> ~~ers ~~<br>~~eG~~<br>~~ee~~|5<br> ~~es es~~<br>~~eG~~|8.0<br>~~es~~<br>~~eG~~|~~eG~~|5<br>~~eG~~|
|0<br>~~es~~<br>~~es~~|0<br>~~eG~~<br>~~ee~~|7<br>~~eG~~<br>~~ee~~|3281<br>~~eG~~|3451.0<br>~~eG~~|~~eG~~|4000<br>~~eG~~|
**Table 21. Gyroscope and Temperature Sensor (Filtered according to the value of** _**DLPF_CFG**_ **and** _**FCHOICE_B**_ **)**
## **9.12 REGISTER 27 – GYROSCOPE CONFIGURATION**
## **Register Name: GYRO CONFIG**
## **Register Type: USR**
## **Register Address: 27 (Decimal); 1B (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|XGYRO_STEN|X Gyro self-test.|
|**[6]**|YGYRO_STEN|Y Gyro self-test.|
|**[5]**|ZGYRO_STEN|Z Gyro self-test.|
|**[4:3]**|GYRO_FS_SEL[1:0]|Gyro Full Scale Select:<br>00 = ±250 dps<br>01= ±500 dps<br>10 = ± 1000 dps<br>11 = ±2000 dps|
|**[2]**|-|Reserved.|
|**[1:0]**|FCHOICE_B[1:0]|**NOTE:**Register is Fchoice_b(inverted version of Fchoice)|
Page 39 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## **9.13 REGISTER 28 – ACCELEROMETER CONFIGURATION**
**Register Name: ACCEL_CONFIG Register Type: USR**
## **Register Address: 28 (Decimal); 1C (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|AX_ST_EN|X Accel self-test.|
|**[6]**|AY_ST_EN|Y Accel self-test.|
|**[5]**|AZ_ST_EN|Z Accel self-test.|
|**[4:3]**|ACCEL_FS_SEL[1:0]|Accel Full Scale Select:<br>±2g (00),±4g (01),±8g (10),±16g (11)|
|**[2:0]**|-|Reserved.|
## **9.14 REGISTER 29 – ACCELEROMETER CONFIGURATION 2**
## **Register Name: ACCEL_CONFIG2**
## **Register Type: USR Register Address: 29 (Decimal); 1D (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:6]**|FIFO_SIZE[1:0]|Fifo size control:<br>0=512bytes,<br>1=1 KB,<br>2=2 KB,<br>3=4 KB<br>**NOTE:**After the fifo size has been changed,the fifo should be reset.|
|**[5:4]**|DEC2_CFG|Controls the number of samples averaged in the accel<br>decimator 2:<br>0 = average 4 samples<br>1 = average 8 samples<br>2 = average 16 samples<br>3 = average 32 samples|
|**[3]**|ACCEL_FCHOICE_B|Used to bypass DLPF as shown in Table 22<br>**NOTE:**This register contains accel_fchoice_b (the inverted version<br>of accel_fchoice as described in Table 22.|
|**[2:0]**|A_DLPF_CFG|Accelerometer low pass filter setting as shown in Table 22<br>below.|
|**ACCEL_FCHOICE_B**|**A_DLPF_CFG**|**Accelerometer**|
|---|---|---|
|||**3-dB BW (Hz)**|
|1|X|1046.0|
|0|0|218.1|
|0|1|218.1|
|0|2|99.0|
|0|3|44.8|
|0|4|21.2|
|0|5|10.2|
|0|6|5.1|
|0|7|420.0|
**Table 22. Accelerometer Data Rates and Bandwidths (Low Noise Mode)**
**Notes** :
1. The data rate out of the DLPF filter block can be further reduced by a factor of 1/(1+SMPLRT_DIV), where SMPLRT_DIV is an 8-bit integer.
2. Data should be sampled at or above sample rate; SMPLRT_DIV is only used for1 kHz internal sampling.
Page 40 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
In the low-power mode of operation, the accelerometer is duty-cycled. For each ODR, there are several bandwidth settings corresponding to different numbers of averages per measurement cycle of the Dec1 output.
|||~~a~~|~~ee~~||||
|---|---|---|---|---|---|---|
|**ACCEL_FCHOICE_B **<br>~~a~~||1<br>~~a~~<br>~~a~~<br>~~ae~~|0<br>~~a~~<br>~~ee~~<br>~~ee~~|0<br>~~a~~<br>~~ee~~|0<br>~~a~~<br>~~ee~~|0<br>~~a~~<br>~~ee~~|
|**A_DLPF_CFG**<br>~~a~~||x<br>~~a~~<br>~~a~~<br>~~ae~~<br>~~ae~~|7<br>~~ee~~<br>~~a~~<br>~~ee~~<br>~~ee~~|7<br>~~a~~<br>~~ee~~<br>~~ee~~|7<br>~~a~~<br>~~ee~~<br>~~ee~~|7<br>~~a~~<br>~~ee~~<br>~~ee~~|
|**DEC2_CFG**<br>~~a~~||x<br>~~ae~~<br>~~a~~<br>~~ae~~<br>~~ae~~|0<br>~~ee ~~<br>~~a~~<br>~~ee~~<br>~~ee~~|1<br> ~~ee~~<br>~~a~~<br>~~ee~~<br>~~es ee~~|2<br>~~ee~~<br>~~a~~<br>~~ee~~<br>~~ee~~|3<br>~~ee~~<br>~~a~~<br>~~ee~~<br>~~ee~~|
|**Averages**<br>~~a~~<br>~~a~~||1x<br>~~a~~<br>~~ae~~<br>~~a~~<br>~~ae~~|4x<br>~~a~~<br>~~ee~~<br>~~a~~<br>~~ee~~|8x<br>~~a~~<br>~~ee~~<br>~~a~~<br>~~es ee~~|16x<br>~~a~~<br>~~ee~~<br>~~a~~<br>~~ee~~|32x<br>~~a~~<br>~~ee~~<br>~~a~~<br>~~ee~~|
|**Ton(ms)**<br>~~Se~~<br>~~EE~~<br>~~—~~||1.084<br>~~ae ~~<br>~~Se~~|1.84<br> ~~ee ~~<br>~~Se~~|2.84<br> ~~es ee~~<br>~~Se~~|4.84<br>~~ee~~<br>~~Se~~|8.84<br>~~ee~~<br>~~Se~~|
|**Noise BW(Hz)**<br>~~EE~~<br>~~—~~||1100.0|441.6|235.4|121.3|61.5|
|**Noise (mg) TYP based on**<br>**150µg/**√**Hz**<br>~~EE~~<br>~~—~~<br>~~|~~<br>~~eees~~||8.3<br>~~|~~|5.3<br>~~|~~|3.8<br>~~|~~|2.8<br>~~|~~|2.0<br>~~|~~|
|**SMPLRT_DIV**<br>~~ee~~<br>~~es ee~~|**ODR(Hz)**<br>~~es~~<br>~~ee QC~~|**Current Consumption(µA) TYP**<br>~~QC~~|||||
|255<br>~~ee ~~<br>~~es ee~~<br>~~es ee~~|3.9<br> ~~es~~<br>~~ee QC~~<br>~~ee~~|8.4<br>~~QC~~<br>~~eG~~|9.4<br>~~QC~~<br>~~eG~~|10.8<br>~~QC~~|13.6<br>~~QC~~|19.2<br>~~QC~~|
|127<br>~~es ee~~<br>~~es ee~~<br>~~es~~|7.8<br>~~ee QC~~<br>~~ee~~<br>~~ee es~~|9.8<br>~~QC~~<br>~~eG~~<br>~~es~~|11.9<br>~~QC~~<br>~~eG~~<br>~~es es~~|14.7<br>~~QC~~<br>~~es~~|20.3<br>~~QC~~<br>~~ee~~|31.4<br>~~QC~~|
|63<br>~~es ee~~<br>~~es~~|15.6<br>~~ee~~<br>~~ee es~~|12.8<br>~~eG~~<br>~~es~~<br>~~rs~~|17.0<br>~~eG~~<br>~~es es~~|22.5<br>~~es~~|33.7<br>~~ee~~|55.9|
|31<br>~~es~~<br>~~es~~<br>~~es~~|31.3<br>~~ee es~~<br>~~es~~<br>|18.7<br>~~es ~~<br>~~es~~<br>~~rs~~<br>~~rr~~<br>|27.1<br> ~~es es~~<br>~~es~~<br>|38.2<br>~~es~~<br>~~es~~|60.4<br>~~ee~~<br>~~es~~|104.9<br>~~es~~|
|15<br>~~rs~~<br>~~es ee~~|62.5<br>~~rs~~<br>~~ee~~|30.4<br>~~rs~~<br>~~rs~~<br>~~rr~~<br>~~eG~~|47.2<br>~~rs~~<br>~~eG~~|69.4<br>~~rs~~|113.9<br>~~rs~~|202.8<br>~~rs~~|
|7<br>~~es ee~~|125.0<br>~~ee~~<br>~~ee~~|57.4<br>~~rr~~<br>~~eG~~|87.5<br>~~eG~~|132.0|220.9|N/A|
|3<br>~~es ee~~<br>~~es~~|250.0<br>~~ee ~~<br>~~es~~<br>~~ee~~<br>~~es~~|100.9<br>~~rr~~<br> ~~eG~~<br>~~es~~<br>~~ee~~|168.1<br>~~eG~~<br>~~es~~|257.0<br>~~es~~|N/A||
|1<br>~~ee~~|500.0<br>~~ee~~<br>~~ee~~<br>~~es~~|194.9<br>~~ee~~<br>~~ee~~|329.3<br>~~ee~~|N/A|||
**Table 23. Accelerometer Data Rates and Bandwidths (Low Power Mode)**
- Gyros ON: When at least one axis of the Gyro is ON, then the ODR is determined by the gyro_fchoice and dlpf_cfg.
- Gyro OFF and normal Accel mode: When all the axes of Gyro are turned off and in normal Accel mode, then the ODR is determined by accel_fchoice and dlpf_cfg.
- Low power Accel mode: In low power Accel mode, the ODR is determined by Accel_fchoice and dec2_cfg
## **9.15 REGISTER 30 – LOW POWER MODE CONFIGURATION**
## **Register Name: LP_MODE_CTRL**
## **Register Type: USR**
## **Register Address: 30 (Decimal); 1E (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|GYRO_CYCLE|Enablegyro dutycycling.|
|**[6:4]**|GYRO_AVGCFG[2:0]|Averagingfilter configuration forgyro dutycycling.|
|**[3:0]**|LPOSC_CLKSEL[3:0]|Reserved.|
To operate in gyroscope low-power mode or 6-axis low-power mode, GYRO_CYCLE should be set to ‘1.’ Gyroscope filter configuration is determined by G_AVGCFG[2:0] that sets the averaging filter configuration. It is not dependent on DLPF_CFG[2:0].
Table 24 shows some example configurations for gyroscope low power mode.
Page 41 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
|~~i~~|~~i~~|~~i~~|~~es es~~|~~es~~|~~eee~~|~~ee~~|~~es~~|||
|---|---|---|---|---|---|---|---|---|---|
|**FCHOICE_B **<br>~~i~~<br>~~i~~||0<br>~~i~~<br>~~a~~|0<br>~~es es~~<br>~~es~~|0<br>~~es~~<br>~~es ees~~|0<br>~~eee~~<br>~~ees ee~~|0<br>~~ee~~<br>~~ee~~|0<br>~~es~~<br>~~ee~~|0|0|
|**G_AVGCFG**<br>~~i ~~<br>~~i~~<br>~~SE~~||0<br> ~~i~~<br>~~a~~<br>~~SE~~|1<br>~~es es~~<br>~~es~~|2<br>~~es ~~<br>~~es ees~~|3<br> ~~eee~~<br>~~ees ee~~|4<br>~~ee~~<br>~~ee~~|5<br>~~es~~<br>~~ee~~|6|7|
|**Averages**<br>~~i ~~<br>~~SE~~<br>~~i~~||1x<br> ~~a~~<br>~~SE~~<br>~~ae es es~~|2x<br>~~es~~<br>~~es es~~|4x<br>~~es ees~~<br>~~es es ee~~|8x<br>~~ees ee~~<br>~~ee~~|16x<br>~~ee~~<br>~~ee~~|32x<br>~~ee~~|64x|128x|
|**Ton(ms)**<br>~~SE~~<br>~~i~~<br>~~i~~||1.73<br>~~SE~~<br>~~ae es es~~<br>~~ae es~~|2.23<br>~~es es~~<br>~~es es~~|3.23<br>~~es es ee~~<br>~~es~~|5.23<br>~~ee~~<br>~~ere~~|9.23<br>~~ee~~<br>~~ee~~|17.23|33.23|65.23|
|**Noise BW(Hz)**<br>~~i ~~<br>~~i~~||650.8<br> ~~ae es es~~<br>~~ae es~~|407.1<br>~~es es~~<br>~~es es~~|224.2<br>~~es es ee~~<br>~~es~~|117.4<br>~~ee~~<br>~~ere~~|60.2<br>~~ee~~<br>~~ee~~|30.6|15.6|8.0|
|**Noise (dps) TYP based on**<br>**0.006 dps/**√**Hz**<br>~~i ~~<br>~~eeeeeCn~~<br>~~rs~~||0.15<br> ~~ae es~~<br>~~eeeCn~~<br>|0.12<br>~~es es~~|0.09<br>~~es ~~|0.07<br> ~~ere~~|0.05<br>~~ee~~|0.03|0.02|0.02|
|**SMPLRT_DIV**<br>~~ee~~<br>~~rs~~|**ODR(Hz)**<br>~~eeeCn~~<br>~~es~~|**Current Consumption(mA) TYP**<br>~~eeeCn~~<br>~~Gr~~<br>~~QQ~~||||||||
|255<br>~~ee ~~<br>~~rs~~<br>~~rs~~|3.9<br> ~~eeeCn~~<br>~~es~~<br>~~rs~~|1.3<br>~~eeeCn~~<br>~~Gr~~<br>~~Gr~~|1.3<br>~~rs~~|1.3<br>~~QQ~~<br>~~rs~~|1.3<br>~~QQ~~<br>~~QQ~~|1.4<br>~~QQ~~<br>~~QQ~~|1.4<br>~~QQ~~|1.5|1.8|
|99<br><br>~~rs ~~<br>~~rs~~<br>~~re~~|10.0<br>~~Cn~~<br> ~~es~~<br>~~rs~~<br>~~es~~|1.3<br>~~Cn~~<br>~~Gr~~<br>~~Gr~~<br>~~rr~~|1.3<br>~~rs~~<br>~~rs~~|1.4<br>~~QQ~~<br>~~rs~~<br>~~QQ~~|1.4<br>~~QQ~~<br>~~QQ~~<br>~~QQ~~|1.5<br>~~QQ~~<br>~~QQ~~|1.6<br>~~QQ~~|1.9|2.5|
|64<br>~~rs~~<br>~~re~~<br>~~Re~~|15.4<br>~~rs~~<br>~~es~~<br>~~rs~~|1.4<br>~~Gr~~<br>~~rr~~<br>~~rs~~|1.4<br>~~rs~~<br>~~rs~~<br>~~Qs~~|1.4<br>~~rs~~<br>~~QQ~~<br>~~Qs~~|1.5<br>~~QQ~~<br>~~QQ~~<br>~~(~~|1.6<br>~~QQ~~|1.8<br>~~QQ~~|2.2|N/A|
|32<br>~~re~~<br>~~Re~~|30.3<br>~~es ~~<br>~~rs~~|1.4<br> ~~rr~~<br>~~rs~~|1.4<br>~~rs~~<br>~~Qs~~|1.5<br>~~QQ~~<br>~~Qs~~|1.6<br>~~QQ~~<br>~~(~~|1.8|2.2|N/A<br>~~Po~~||
|19<br>~~Re ~~<br>~~Po~~|50.0<br> ~~rs~~<br>~~Po~~|1.5<br>~~rs~~<br>~~Po~~<br>~~Gr~~|1.5<br>~~Qs~~<br>~~Po~~<br>~~ss~~|1.6<br>~~Qs~~<br>~~Po~~<br>~~ss~~|1.8<br>~~(~~<br>~~Po~~<br>~~ss~~|2.1<br>~~Po~~|2.8<br>~~Po~~|||
|9<br>~~Ge~~|100.0<br>~~Ge~~|1.6<br>~~Ge~~<br>~~Gr~~<br>~~ee~~|1.7<br>~~Ge~~<br>~~ss~~|1.9<br>~~Ge~~<br>~~ss~~|2.2<br>~~Ge~~<br>~~ss~~|3.0<br>~~Ge~~|N/A|||
|7<br>~~ees~~|125.0<br>~~ees~~<br>~~es~~|1.7<br>~~Gr~~<br>~~ees~~<br>~~ee~~<br>~~es~~|1.8<br>~~ss~~<br>~~ees~~|2.0<br>~~ss~~<br>~~ees~~|2.5<br>~~ss~~<br>~~ees~~|N/A||||
|4<br>~~ee~~|200.0<br>~~ee~~<br>~~es~~<br>~~ee ee~~|1.9<br>~~ee~~<br>~~ee~~<br>~~es~~<br>~~ee~~|2.1<br>~~ee~~|2.5<br>~~ee~~|N/A|||||
|3<br>~~ee~~|250.0<br>~~es~~<br>~~ee~~<br>~~ee ee~~<br>~~ee~~|2.1<br>~~es~~<br>~~ee~~<br>~~ee~~<br>~~ee~~|2.3<br>~~ee~~|2.7<br>~~ee~~||||||
|2<br>~~ee~~<br>~~ee~~|333.3<br>~~ee~~<br>~~ee ee~~<br>~~ee~~<br>~~ee~~<br>~~ee~~|2.3<br>~~ee~~<br>~~ee~~<br>~~ee~~<br>~~ee~~|2.6<br>~~ee~~<br>~~ee~~|N/A<br>~~ee~~||||||
|1<br>~~ee~~|500.0<br>~~ee~~<br>~~ee~~<br>~~ee~~|2.9<br>~~ee~~<br>~~ee~~|N/A|||||||
**Table 24. Example Configurations for Gyroscope Low Power Mode**
**9.16 REGISTER 32 – WAKE ON MOTION THRESHOLD**
**Register Name: ACCEL_WOM_X_THR Register Type: USR Register Address: 32 (Decimal); 20 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|WOM_X_Threshold|Accel WOM threshold for x-axis.|
## **9.17 REGISTER 33 – WAKE ON MOTION THRESHOLD**
**Register Name: ACCEL_WOM_Y_THR Register Type: USR Register Address: 33 (Decimal); 21 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|WOM_Y_Threshold|Accel WOM threshold fory-axis.|
**9.18 REGISTER 34 – WAKE ON MOTION THRESHOLD**
**Register Name: ACCEL_WOM_Z_THR Register Type: USR Register Address: 34 (Decimal); 22 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|WOM_Z_Threshold|Accel WOM threshold for z-axis.|
Page 42 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## **9.19 REGISTER 35 – FIFO ENABLE**
FIFO enable takes effect during the idle state of the sequence controller.
## **Register Name: FIFO_EN**
## **Register Type: USR**
## **Register Address: 35 (Decimal); 23 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|TEMP_OUT|1 – Write TEMP_OUT_H and TEMP_OUT_L to the FIFO at the sample<br>rate; If enabled, buffering of data occurs even if data path is in standby.<br>0 – Function is disabled.|
|**[6]**|GYRO_XOUT|1 – Write GYRO_XOUT_H and GYRO_XOUT_L to the FIFO at the sample<br>rate; If enabled, buffering of data occurs even if data path is in standby.<br>0 – Function is disabled.|
|**[5]**|GYRO_YOUT|1 – Write GYRO_YOUT_H and GYRO_YOUT_L to the FIFO at the sample<br>rate; If enabled, buffering of data occurs even if data path is in standby.<br>0 – Function is disabled.<br>**NOTE:**Enabling any one of the bits corresponding to the Gyros or Temp data<br>paths,data is buffered into the FIFO even though that datapath is not enabled.|
|**[4]**|GYRO_ZOUT|1 – Write GYRO_ZOUT_H and GYRO_ZOUT_L to the FIFO at the sample<br>rate; If enabled, buffering of data occurs even if data path is in standby.<br>0 – Function is disabled.|
|**[3]**|ACCEL_XYZ_OUT|1 – Write ACCEL_XOUT_H, ACCEL_XOUT_L, ACCEL_YOUT_H,<br>ACCEL_YOUT_L, ACCEL_ZOUT_H, and ACCEL_ZOUT_L to the FIFO at the<br>sample rate;<br>0 – Function is disabled.|
|**[2]**|-|Reserved.|
|**[1]**|-|Reserved.|
|**[0]**|-|Reserved.|
## **9.20 REGISTER 55 – INTERRUPT/BYPASS PIN CONFIGURATION**
## **Register Name: INT_PIN_CFG**
## **Register Type: USR Register Address: 55 (Decimal); 37 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|ACTL|1 – The logic level for INT pin is active low.<br>0 – The logic level for INTpin is active high.|
|**[6]**|OPEN|1 – INT pin is configured as open drain.<br>0 – INTpin is configured aspush-pull.|
|**[5]**|LATCH_INT_EN|1 – INT pin level held until interrupt status is cleared.<br>0 – INTpin indicates interruptpulse’s is width 50µs.|
|**[4]**|INT_ANYRD_2CLEAR|1 – Interrupt status is cleared if any read operation is performed.<br>0 – Interrupt status is cleared onlybyreadingINT_STATUS register.|
|**[3]**|ACTL_FSYNC|1 – The logic level for the FSYNC pin as an interrupt is active low.<br>0 – The logic level for the FSYNCpin as an interrupt is active high.|
|**[2]**|FSYNC_INT_MODE_EN|1 – This enables the FSYNC pin to be used as an interrupt. A transition to the active level<br>described by the ACTL_FSYNC bit will cause an interrupt. The status of the interrupt is<br>read in the I2C Master Status register PASS_THROUGH bit.<br>0 – This disables the FSYNCpin from causingan interrupt.|
|**[1]**|BYPASS_EN|When asserted,willgo into ‘bypass mode’ where the I2C master interface is disabled.|
|**[0]**|-|Reserved.|
Page 43 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **9.21 REGISTER 56 – INTERRUPT ENABLE**
**Register Name: INT_ENABLE**
**Register Type: USR**
**Register Address: 56 (Decimal); 38 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|WOM_X_INT_EN|1 – Enable wake on motion interrupt on accel X-axis|
|**[6]**|WOM_Y_INT_EN|1 – Enable wake on motion interrupt on accel Y-axis,|
|**[5]**|WOM_Z_INT_EN|1 – Enable wake on motion interrupt on accel Z-axis|
|**[4]**|FIFO_OVERFLOW_EN|1 – Enable interrupt for FIFO overflow to propagate to interrupt pin.<br>0 – Function is disabled.|
|**[3]**|-|Reserved|
|**[2]**|GDRIVE_RDY_EN|1 – Enable gyro drive rdy interrupt to propagate to interrupt pin.<br>0 – Function is disabled.|
|**[1]**|DMP_INT_EN|1 – Enable DMP interrupt to propagate to interrupt pin.<br>0 – Function is disabled.|
|**[0]**|RAW_RDY_EN|1 – Enable Raw Sensor Data Ready interrupt to propagate to interrupt pin.<br>0 – Function is disabled.|
## **9.22 REGISTER 57 – DMP INTERRUPT STATUS**
**Register Name: DMP_INT_STATUS Register Type: USR Register Address: 57 (Decimal); 39 (Hex) BIT NAME FUNCTION [6]** FIFO_WM_INT Reserved. **[5:0]** DMP_INT DMP Interrupt Status. ~~a~~
## **9.23 REGISTER 58 – INTERRUPT STATUS**
## **Register Name: INT_STATUS**
**Register Type: USR**
**Register Address: 58 (Decimal); 3A (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|WOM_X_INT|Wake on motion interrupt triggered on x-axis.|
|**[6]**|WOM_Y_INT|Wake on motion interrupt triggered ony-axis.|
|**[5]**|WOM_Z_INT|Wake on motion interrupt triggered on z-axis.|
|**[4]**|FIFO_OVERFLOW_INT|1 – FIFO Overflow interrupt occurred. Note that the oldest data is has been dropped from<br>the FIFO.|
|**[3]**|-|Reserved.|
|**[2]**|GDRIVE_RDY_INT|1 – Indicates that thegyro drive has been enabled and is ready.|
|**[1]**|DMP_INT|1 – The DMP hasgenerated an Interrupt.|
|**[0]**|RAW_DATA_RDY_INT|1 – Sensor Register Raw Data sensors are updated and Readyto be read.|
## **9.24 REGISTER 59 – ACCELEROMETER MEASUREMENTS**
**Register Name: ACCEL_XOUT_H Register Type: USR**
**Register Address: 59 (Decimal); 3B (Hex)**
**BIT NAME FUNCTION [7:0]** ACCEL_XOUT_H [15:8] High byte of accelerometer x-axis data. ~~ee~~
**9.25 REGISTER 60 – ACCELEROMETER MEASUREMENTS**
**Register Name: ACCEL_XOUT_L Register Type: USR**
**Register Address: 60 (Decimal); 3C (Hex)**
**BIT NAME FUNCTION** ~~ee~~ **[7:0]** ACCEL_XOUT_L [7:0] Low byte of accelerometer x-axis data.
Page 44 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
**9.26 REGISTER 61 – ACCELEROMETER MEASUREMENTS Register Name: ACCEL_YOUT_H Register Type: USR Register Address: 61 (Decimal); 3D (Hex) BIT NAME FUNCTION** ~~eT~~ **[7:0]** ACCEL_YOUT_H [15:8] High byte of accelerometer y-axis data. **9.27 REGISTER 62 – ACCELEROMETER MEASUREMENTS Register Name: ACCEL_YOUT_L Register Type: USR Register Address: 62 (Decimal); 3E (Hex) BIT NAME FUNCTION** ~~ee~~ **[7:0]** ACCEL_YOUT_L [7:0] Low byte of accelerometer y-axis data. **9.28 REGISTER 63 – ACCELEROMETER MEASUREMENTS Register Name: ACCEL_ZOUT_H Register Type: USR Register Address: 63 (Decimal); 3F (Hex) BIT NAME FUNCTION** ~~eT~~ **[7:0]** ACCEL_ZOUT_H [15:8] High byte of accelerometer z-axis data. **9.29 REGISTER 64 – ACCELEROMETER MEASUREMENTS Register Name: ACCEL_ZOUT_L Register Type: USR Register Address: 64 (Decimal); 40 (Hex) BIT NAME FUNCTION** ~~eT~~ **[7:0]** ACCEL_ZOUT_L [7:0] Low byte of accelerometer z-axis data. **9.30 REGISTER 65 – TEMPERATURE MEASUREMENT Register Name: TEMP_OUT_H Register Type: USR Register Address: 65 (Decimal); 41 (Hex) BIT NAME FUNCTION** ~~ee~~ **[7:0]** TEMP_OUT_H[15:8] High byte of the temperature sensor output. **9.31 REGISTER 66 – TEMPERATURE MEASUREMENT Register Name: TEMP_OUT_L Register Type: USR Register Address: 66 (Decimal); 42 (Hex) BIT NAME FUNCTION** ~~EEeee~~ **[7:0]** TEMP_OUT_L[7:0] Low byte of the temperature sensor output. **9.32 REGISTER 67 – GYROSCOPE MEASUREMENT Register Name: GYRO_XOUT_H Register Type: USR Register Address: 67 (Decimal); 43 (Hex) BIT NAME FUNCTION** ~~EEeee~~ **[7:0]** GYRO_XOUT_H[15:8] High byte of the x-axis gyroscope output.
Page 45 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **9.33 REGISTER 68 – GYROSCOPE MEASUREMENT**
**Register Name: GYRO_XOUT_L Register Type: USR Register Address: 68 (Decimal); 44 (Hex)**
**BIT NAME FUNCTION** ~~eT~~ **[7:0]** GYRO_XOUT_L[7:0] Low byte of the x-axis gyroscope output.
## **9.34 REGISTER 69 – GYROSCOPE MEASUREMENT**
**Register Name: GYRO_YOUT_H Register Type: USR Register Address: 69 (Decimal); 45 (Hex) BIT NAME FUNCTION** ~~ee~~ **[7:0]** GYRO_YOUT_H[15:8] High byte of the y-axis gyroscope output.
**9.35 REGISTER 70 – GYROSCOPE MEASUREMENT**
**Register Name: GYRO_YOUT_L Register Type: USR Register Address: 70 (Decimal); 46 (Hex) BIT NAME FUNCTION** ~~eT~~ **[7:0]** GYRO_YOUT_L[7:0] Low byte of the y-axis gyroscope output.
**9.36 REGISTER 71 – GYROSCOPE MEASUREMENT**
**Register Name: GYRO_ZOUT_H Register Type: USR Register Address: 71 (Decimal); 47 (Hex) BIT NAME FUNCTION** ~~eT~~ **[7:0]** GYRO_ZOUT_H[15:8] High byte of the z-axis gyroscope output.
## **9.37 REGISTER 72 – GYROSCOPE MEASUREMENT**
**Register Name: GYRO_ZOUT_L Register Type: USR Register Address: 72 (Decimal); 48 (Hex)**
**BIT NAME FUNCTION** ~~eT~~ **[7:0]** GYRO_ZOUT_L[7:0] Low byte of the z-axis gyroscope output.
## **9.38 REGISTER 104 – SIGNAL PATH RESET**
**Register Name: SIGNAL_PATH_RESET Register Type: USR/CFG Register Address: 104 (Decimal); 68 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:3]**|-|Reserved.|
|**[2]**|GYRO_RST|Reset gyro digital signal path.<br>**Note**: Sensor registers are not cleared. Use SIG_COND_RST to clear sensor registers.|
|**[1]**|ACCEL_RST|Reset accel digital signal path.<br>**Note**: Sensor registers are not cleared. Use SIG_COND_RST to clear sensor registers.|
|**[0]**|TEMP_RST|Reset temp digital signal path.<br>**Note**: Sensor registers are not cleared. Use SIG_COND_RST to clear sensor registers.|
Page 46 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## **9.39 REGISTER 105 – ACCELEROMETER INTELLIGENCE CONTROL**
## **Register Name: ACCEL_INTEL_CTRL Register Type: USR/CFG Register Address: 105 (Decimal); 69 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|ACCEL_INTEL_EN|Enable the WOM logic.|
|**[6]**|ACCEL_INTEL_MODE|This bit defines<br>1 = compare the current sample with the previous sample.<br>0 = initial sample is stored;all future samples are compared to the initial sample.|
|**[5:4]**|-|Reserved.|
|**[3:2]**|-|Reserved.|
|**1**|-|Reserved.|
|**0**|-|Reserved.|
## **9.40 REGISTER 106 – USER CONTROL**
## **Register Name: USER_CTRL Register Type: USR/CFG Register Address: 106 (Decimal); 6A (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|DMP_EN|1 – Enable DMP operation mode.<br>0 – Freeze DMP processing after DMP Done (finish) with current processing sample.<br>**NOTE:**DMP will run when enabled, even if all sensors are disabled, except when the sample rate is<br>set to 8 kHz.|
|**[6]**|FIFO_EN|1 – Enable FIFO operation mode.<br>0 – Disable FIFO access from serial interface. To disable FIFO writes by dma, use FIFO_EN<br>register. To disablepossible FIFO writes from dmp,disable the dmp.|
|**[5]**|-|Reserved.|
|**[4]**|I2C_IF_DIS|1 – Reset I2C Slave module.|
|**[3]**|DMP_RST|1 – Reset DMP module. Reset is asynchronous. This bit auto clears after one clock cycle.|
|**[2]**|FIFO_RST|1 – Reset FIFO module. Reset is asynchronous. This bit auto clears after one clock cycle.|
|**[1]**|-|Reserved.|
|**[0]**|SIG_COND_RST|1 – Reset all gyro digital signal path, accel digital signal path, and temp digital signal path.<br>This bit also clears all the sensor registers. SIG_COND_RST is apulse of one clk8M wide.|
Page 47 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## **9.41 REGISTER 107 – POWER MANAGEMENT 1**
**Register Name: PWR_MGMT_1 Register Type: USR/CFG Register Address: 107 (Decimal); 6B (Hex)**
|**BIT**|**NAME**|**FUNCTION**|**FUNCTION**|**FUNCTION**|**FUNCTION**|
|---|---|---|---|---|---|
|**[7]**|DEVICE_RESET|1 – Reset the internal registers and restores the default settings. The bit automatically clears<br>to 0 once the reset is done.||||
|**[6]**|SLEEP|1 – The chip is set to sleep mode.<br>**Note**: The default value is 1;the chipcomes upin Sleepmode||||
|**[5]**|ACCEL_CYCLE|When set to 1, and SLEEP and STANDBY are not set to 1, the chip will cycle between sleep<br>and taking a single accelerometer sample at a rate determined by SMPLRT_DIV<br>**Note**: When all accelerometer axes are disabled via PWR_MGMT_2 register bits and cycle is enabled, the<br>chip will wake up at the rate determined by the respective registers above, but will not take any<br>samples.||||
|**[4]**|GYRO_STANDBY|When set, the gyro drive and pll circuitry are enabled, but the sense paths are disabled. This<br>is a lowpower mode that allowsquick enablingof thegyros.||||
|**[3]**|TEMP_DIS|When set to 1,this bit disables the temperature sensor.||||
|**[2:0]**|CLKSEL[2:0]||**Code**|**Clock Source**||
||||0|Internal 20 MHz oscillator||
||||1|Auto selects the best available clock source – PLL if ready,else use the Internal oscillator||
||||2|Auto selects the best available clock source – PLL if ready,else use the Internal oscillator||
||||3|Auto selects the best available clock source – PLL if ready,else use the Internal oscillator||
||||4|Auto selects the best available clock source – PLL if ready,else use the Internal oscillator||
||||5|Auto selects the best available clock source – PLL if ready,else use the Internal oscillator||
||||6|Internal 20 MHz oscillator||
||||7|Stops the clock and keeps timing generator in reset||
## **9.42 REGISTER 108 – POWER MANAGEMENT 2**
**Register Name: PWR_MGMT_2 Register Type: USR/CFG Register Address: 108 (Decimal); 6C (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7]**|LP_DIS|Low power disable bit. When cleared the system will enter sleep when gyro is disabled<br>and accel is off while dutycycling.|
|**[6]**|DMP_LP_DIS|When cleared DMP will execute in low power accel mode.<br>When set DMP will not execute in lowpower accel mode.|
|**[5]**|DISABLE_XA|1 – X accelerometer is disabled.<br>0 – X accelerometer is on.|
|**[4]**|DISABLE_YA|1 – Y accelerometer is disabled.<br>0 – Y accelerometer is on.|
|**[3]**|DISABLE_ZA|1 – Z accelerometer is disabled.<br>0 – Z accelerometer is on.|
|**[2]**|DISABLE_XG|1 – X gyro is disabled.<br>0 – Xgyro is on.|
|**[1]**|DISABLE_YG|1 – Y gyro is disabled.<br>0 – Ygyro is on.|
|**[0]**|DISABLE_ZG|1 – Z gyro is disabled.<br>0 – Zgyro is on.|
## **9.43 REGISTER 114 – FIFO COUNT REGISTERS**
## **Register Name: FIFO_COUNTH**
**Register Type: USR/CFG Register Address: 114 (Decimal); 72 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:5]**|NOT IMPLEMENTED|Hard coded to ‘000’.|
|**[4:0]**|FIFO_COUNTH[12:8]|High Bits, count indicates the number of written bytes in the FIFO.<br>Readingthis byte latches the data for both FIFO_COUNTH,and FIFO_COUNTL.|
Page 48 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## **9.44 REGISTER 115 – FIFO COUNT REGISTERS**
**Register Name: FIFO_COUNTL Register Type: USR/CFG Register Address: 115 (Decimal); 73 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|FIFO_COUNTL[7:0]|Low Bits, count indicates the number of written bytes in the FIFO.<br>**NOTE:**Must read FIFO_COUNTH to latch new data for both FIFO_COUNTH and FIFO_COUNTL.|
## **9.45 REGISTER 116 – FIFO READ WRITE**
**Register Name: FIFO_R_W Register Type: USR/CFG Register Address: 116 (Decimal); 74 (Hex) BIT NAME FUNCTION [7:0]** FIFO_R_W[7:0] Read/Write command provides Read or Write operation for the FIFO. ~~EE eee~~
## **Description:**
This register is used to read and write data from the FIFO buffer.
Data is written to the FIFO in order of register number (from lowest to highest). If all the FIFO enable flags (see below) are enabled, the contents of registers 59 through 72 will be written in order at the Sample Rate.
The contents of the sensor data registers (Registers 59 to 72) are written into the FIFO buffer when their corresponding FIFO enable flags are set to 1 in FIFO_EN (Register 35).
If the FIFO buffer has overflowed, the status bit _FIFO_OFLOW_INT_ is automatically set to 1. This bit is located in INT_STATUS (Register 58). When the FIFO buffer has overflowed, the oldest data will be lost and new data will be written to the FIFO unless register 26 CONFIG, bit[6] FIFO_MODE = 1.
If the FIFO buffer is empty, reading register FIFO_DATA will return a unique value of 0xFF until new data is available. Normal data is precluded from ever indicating 0xFF, so 0xFF gives a trustworthy indication of FIFO empty.
## **9.46 REGISTER 117 – WHO AM I**
**Register Name: WHOAMI Register Type: USR/CFG Register Address: 117 (Decimal); 75 (Hex)**
**BIT NAME FUNCTION** ~~eee~~ **[7:0]** WHOAMI Register to indicate to user which device is being accessed. This register is used to verify the identity of the device. The contents of _WHOAMI_ is an 8-bit device ID.
## **9.47 REGISTER 119 – ACCELEROMETER OFFSET REGISTER**
**Register Name: XA_OFFS_H**
**Register Type: CFG**
**Register Address: 119 (Decimal); 77 (Hex)**
|**BIT**|**NAME**|**FUNCTION**|
|---|---|---|
|**[7:0]**|XA_OFFSH[14:7]|Upper bits of the X accelerometer offset cancellation. ±16g Offset cancellation in all Full-<br>Scale modes,15 bit 0.98-mgsteps.|
Page 49 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **9.48 REGISTER 120 – ACCELEROMETER OFFSET REGISTER**
**Register Name: XA_OFFS_L**
**Register Type: CFG Register Address: 120 (Decimal); 78 (Hex) BIT NAME FUNCTION** Lower bits of the X accelerometer offset cancellation. ±16g Offset cancellation in all Full- **[7:1]** XA_OFFSL[6:0] Scale modes, 15 bit 0.98-mg steps **[0]** - Reserved. ~~a~~ **9.49 REGISTER 122 – ACCELEROMETER OFFSET REGISTER Register Name: YA_OFFS_H Register Type: CFG**
**Register Address: 122 (Decimal); 7A (Hex)**
**BIT NAME FUNCTION** Upper bits of the Y accelerometer offset cancellation. ±16g Offset cancellation in all Full- **[7:0]** YA_OFFSH[14:7] ~~—_—_——~~ Scale modes, 15 bit 0.98-mg steps. **9.50 REGISTER 123 – ACCELEROMETER OFFSET REGISTER Register Name: YA_OFFS_L Register Type: CFG Register Address: 123 (Decimal); 7B (Hex)**
**BIT NAME FUNCTION** Lower bits of the Y accelerometer offset cancellation. ±16g Offset cancellation in all Full- **[7:1]** YA_OFFSL[6:0] Scale modes, 15 bit 0.98-mg steps. ~~ff~~ **[0]** - Reserved. **9.51 REGISTER 125 – ACCELEROMETER OFFSET REGISTER Register Name: ZA_OFFS_H**
**Register Type: CFG**
**Register Address: 125 (Decimal); 7D (Hex)**
**BIT NAME FUNCTION [7:0]** ZA_OFFSH[14:7] Upper bits of the Z accelerometer offset cancellation. ±16g Offset cancellation in all Full- ~~—_—___~~ Scale modes, 15 bit 0.98-mg steps.
## **9.52 REGISTER 126 – ACCELEROMETER OFFSET REGISTER**
**Register Name: ZA_OFFS_L Register Type: CFG Register Address: 126 (Decimal); 7E (Hex) BIT NAME FUNCTION** Lower bits of the Z accelerometer offset cancellation. ±16g Offset cancellation in all Full- **[7:1]** ZA_OFFSL[6:0] Scale modes, 15 bit 0.98-mg steps. ~~ff~~ **[0]** - Reserved.
Page 50 of 65
Document Number: DS-000169 Revision: 1.4
‘TDK InvenSense
_**ICM-20789**_
## _**I[[2]] C OPERATION AND COMMUNICATION**_
10 _**I[[2]] C OPERATION AND COMMUNICATION**_ All commands and memory locations of the ICM-20789 are mapped to a 16-bit address space which can be accessed via the I[2] C protocol. **ICM-20789 Bin. Dec. Hex.** I[2] C Address 110’0011 99 0x63 ~~_—~~
**Table 25. ICM-20789 I[2] C Device Address**
## **10.1 POWER-UP AND COMMUNICATION START**
Upon VDD reaching the power-up voltage level VPOR, the ICM-20789 enters idle state after a duration of tPU. In idle state, the ICM20789 is ready to receive commands from the master (microcontroller).
Each transmission sequence begins with START condition (S) and ends with an (optional) STOP condition (P) as described in the I[2] C- bus specification. Whenever the sensor is powered up, but not performing a measurement or communicating, it automatically enters idle state for energy saving.
## **10.2 MEASUREMENT COMMANDS**
The ICM-20789 provides the possibility to define the sensor behavior during measurement as well as the transmission sequence of measurement results. These characteristics are defined by the appropriate measurement command (see Table 26). Each measurement command triggers both a temperature _and_ a pressure measurement.
|**OPERATION MODE**|**TRANSMIT T FIRST**|**TRANSMIT P FIRST**|
|---|---|---|
|Low Power(LP)|0x609C|0x401A|
|Normal(N)|0x6825|0x48A3|
|Low Noise(LN)|0x70DF|0x5059|
|Ultra-Low Noise(ULN)|0x7866|0x58E0|
**Table 26. Measurement Commands**
## **10.3 STARTING A MEASUREMENT**
A measurement communication sequence consists of a START condition followed by the I[2] C header with the 7-bit I[2] C device address and a write bit (write W: ‘0’, 8-bit word including I[2] C header: 0xC6). The sensor indicates the proper reception of a byte by pulling the SDA pin low (ACK bit) after the falling edge of the 8th SCL clock. Then the sensor is ready to receive a 16-bit measurement command. Again, the ICM-20789 acknowledges the proper reception of each byte with ACK condition.
With the acknowledgement of the measurement command, the ICM-20789 starts measuring pressure and temperature.
## **10.4 SENSOR BEHAVIOR DURING MEASUREMENT**
In general, the sensor does not respond to any I[2] C activity during measurement, i.e. I[2] C read and write headers are not acknowledged (NACK).
## **10.5 READOUT OF MEASUREMENT RESULTS**
After a measurement command has been issued and the sensor has completed the measurement, the master can read the measurement results by sending a START condition followed by an I[2] C read header (8-bit word including I[2] C header: 0xC7). The sensor will acknowledge the reception of the read header and send the measured data in the specified order to the master. The MSB of the corresponding data is always transmitted first. Temperature data is transmitted in two 8-bit words and pressure data is transmitted in four 8-bit words. Regarding the pressure data, only the first three words MMSB, MLSB and LMSB contain information about the ADC pressure value. Therefore, for retrieving the ADC pressure value, LLSB must be disregarded:
**==> picture [162 x 10] intentionally omitted <==**
Two bytes of data are always followed by one byte CRC checksum, for calculation see the Checksum Calculation section. Each byte must be acknowledged by the microcontroller with an ACK condition for the sensor to continue sending data. If the ICM-20789 does not receive an ACK from the master after any byte of data, it will not continue sending data.
Page 51 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
Whether the sensor sends out pressure or temperature data first depends on the measurement command that was sent to the sensor to initiate the measurement. To save time, the I[2] C master can abort the read transfer with a NACK condition after any data byte if it is not interested in subsequent data, e.g. the CRC byte or the second measurement result.
## **10.6 SOFT RESET**
The ICM-20789 provides a soft reset mechanism that forces the system into a well-defined state without removing the power supply. If the system is in idle state (i.e. if no measurement is in progress) the soft reset command will be accepted by ICM-20789. This triggers the sensor to reset all internal state machines and reload calibration data from the memory.
|**Command**|**Hex Code**|**Binary Code**|
|---|---|---|
|Soft reset|0x805D|1000’0000’0101’1101|
**Table 27. Soft Reset Command**
## **10.7 READOUT OF ID REGISTER**
The ICM-20789 has an ID register which contains a specific product code. The readout of the ID register can be used to verify the presence of the sensor and proper communication. The command to read the ID register is shown in Table 28.
|**Command**|**Hex Code**|**Binary Code**|
|---|---|---|
|Read ID Register|0xEFC8|1110’1111’1100’1000|
**Table 28. Readout Command of ID Register**
It needs to be sent to the ICM-20789 after an I[2] C write header. After the ICM-20789 has acknowledged the proper reception of the command, the master can send an I[2] C read header and the ICM-20789 will submit the 16-bit ID followed by 8 bits of CRC. The structure of the ID is described in Table 29.
**Table 29. Structure of the 16-bit ID**
Bits 15:6 of the ID contain unspecified information (marked as “x”), which may vary from sensor to sensor, while bits 5:0 contain the ICM-20789-specific product code.
## **10.8 CHECKSUM CALCULATION**
The 8-bit CRC checksum transmitted after each data word is generated by a CRC algorithm with the properties displayed in Table 30. The CRC covers the contents of the two previously transmitted data bytes.
|**Property**|**Value**|
|---|---|
|Name|CRC-8|
|Width|8 bits|
|Polynomial|0x31(x8 + x5 + x4 + 1)|
|Initialization|0xFF|
|Reflect input|false|
|Reflect output|false|
|Final XOR|0x00|
|Examples|CRC(0x00) = 0xAC<br>CRC(0xBEEF)= 0x92|
**Table 30. ICM-20789 I[2] C CRC Properties**
## **10.9 CONVERSION OF SIGNAL OUTPUT**
Pressure measurement data is always transferred as 4 8-bit words; temperature measurement data is always transferred as two 8- bit words. Please see Readout of Measurement Results for more details.
Page 52 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
Temperature measurement values t_dout are linearized by the ICM-20789 and must be calculated to °C by the user via the following formula:
**==> picture [136 x 10] intentionally omitted <==**
For retrieving physical pressure values in Pa the following conversion formula has to be used:
**==> picture [83 x 10] intentionally omitted <==**
where _pdout_ is the sensor’s raw pressure output. The converted output is compensated for temperature effects via the temperature dependent functions _A_ , _B_ and _C_ . Besides the raw temperature output _t_dout_ , the calculation of _A_ , _B_ and _C_ requires to access calibration parameters OTP0, OTP1, OTP2, OTP3 stored in the OTP of the sensor.
Full sample code for calculating physical pressure values is given in the Sample Code section. The general workflow of the conversion is done by:
- 1) Import class `Invensense_pressure_conversion`
- 2) Read out values OTP0, …, OTP3 and save to _c1_ , …, _c4_
- 3) Create object _name_ for an individual sensor with parameter values _c1_ , …, _c4_
`name = Invensense_pressure_conversion ([c1,c2,c3,c4])`
4) Get raw pressure _p_dout_ and temperature _t_dout_ data from the sensor as described in chapter Readout of Measurement Results.
- 5) Call function `get_pressure: name.get_pressure(p_dout, t_dout)`
The Sample Code section gives an example of this workflow.
## **10.10 READOUT OF CALIBRATION PARAMETERS**
For converting raw pressure data to physical values, four calibration parameters must be retrieved from the OTP of the sensor.
Set up of OTP read:
- 1) Send I[2] C write header 0xC6
- 2) Send command 0xC595 (move pointer in address register)
- 3) Send address parameter together with its CRC 0x00669C
Steps 1) – 3) can be done on many platforms by a single I[2] C write of the value 0xC59500669C.
Read out parameters:
Repeat the following procedure 4 times:
- a. Send I[2] C write header 0xC6
- b. Send command 0xC7F7 (incremental readout of OTP)
- c. Send I[2] C read header 0xC7
- d. Read 3Byte (2Byte of data and 1Byte of CRC)
- e. Decode data as 16-bit big endian signed integer and store result into n-th calibration parameter cn.
Steps a) to d) can be done on many platforms by a single write 0xC7F7 to the chip address followed by a single read of 3 Byte from the chip slave device address.
Page 53 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **10.11 SAMPLE CODE: EXAMPLE C SYNTAX**
_`/* data structure to hold pressure sensor related parameters */ typedef struct inv_invpres { struct inv_invpres_serif serif; uint32_t min_delay_us; uint8_t pressure_en; uint8_t temperature_en; float sensor_constants[4]; // OTP values float p_Pa_calib[3]; float LUT_lower; float LUT_upper; float quadr_factor; float offst_factor; } inv_invpres_t; int inv_invpres_init(struct inv_invpres * s) { short otp[4]; read_otp_from_i2c(s, otp); init_base(s, otp); return 0; } int read_otp_from_i2c(struct inv_invpres * s, short *out) { unsigned char data_write[10]; unsigned char data_read[10] = {0}; int status; int i; // OTP Read mode data_write[0] = 0xC5; data_write[1] = 0x95; data_write[2] = 0x00; data_write[3] = 0x66; data_write[4] = 0x9C; status = inv_invpres_serif_write_reg(&s->serif, ICC_ADDR_PRS, data_write, 5); if (status) return status; // Read OTP values for (i = 0; i < 4; i++) { data_write[0] = 0xC7; data_write[1] = 0xF7; status = inv_invpres_serif_write_reg(&s->serif, ICC_ADDR_PRS, data_write, 2); if (status) return status; status = inv_invpres_serif_read_reg(&s->serif, ICC_ADDR_PRS, data_read, 3); if (status) return status; out[i] = data_read[0]<<8 | data_read[1]; } return 0; } void init_base(struct inv_invpres * s, short *otp) { int i; for(i = 0; i < 4; i++) s->sensor_constants[i] = (float)otp[i]; s->p_Pa_calib[0] = 45000.0; s->p_Pa_calib[1] = 80000.0;`_
Page 54 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
_`s->p_Pa_calib[2] = 105000.0; s->LUT_lower = 3.5 * (1<<20); s->LUT_upper = 11.5 * (1<<20); s->quadr_factor = 1 / 16777216.0; s->offst_factor = 2048.0;`_
_`} // p_LSB -- Raw pressure data from sensor // T_LSB -- Raw temperature data from sensor int inv_invpres_process_data(struct inv_invpres * s, int p_LSB, int T_LSB, * * float pressure, float temperature) { float t; float s1,s2,s3; float in[3]; float out[3]; float A,B,C; t = (float)(T_LSB - 32768); s1 = s->LUT_lower + (float)(s->sensor_constants[0] * t * t) * s->quadr_factor; s2 = s->offst_factor * s->sensor_constants[3] + (float)(s->sensor_constants[1] * t * t) * s->quadr_factor; s3 = s->LUT_upper + (float)(s->sensor_constants[2] * t * t) * s->quadr_factor; in[0] = s1; in[1] = s2; in[2] = s3; calculate_conversion_constants(s, s->p_Pa_calib, in, out); A = out[0]; B = out[1]; C = out[2]; *pressure = A + B / (C + p_LSB); *temperature = -45.f + 175.f/65536.f * T_LSB; return 0; } // p_Pa -- List of 3 values corresponding to applied pressure in Pa // p_LUT -- List of 3 values corresponding to the measured p_LUT values at the applied pressures. void calculate_conversion_constants(struct inv_invpres * s, float *p_Pa, float *p_LUT, float *out) { float A,B,C; C = (p_LUT[0] * p_LUT[1] * (p_Pa[0] - p_Pa[1]) + p_LUT[1] * p_LUT[2] * (p_Pa[1] - p_Pa[2]) + p_LUT[2] * p_LUT[0] * (p_Pa[2] - p_Pa[0])) / (p_LUT[2] * (p_Pa[0] - p_Pa[1]) + p_LUT[0] * (p_Pa[1] - p_Pa[2]) + p_LUT[1] * (p_Pa[2] - p_Pa[0])); A = (p_Pa[0] * p_LUT[0] - p_Pa[1] * p_LUT[1] - (p_Pa[1] - p_Pa[0]) * C) / (p_LUT[0] - p_LUT[1]); B = (p_Pa[0] - A) * (p_LUT[0] + C); out[0] = A; out[1] = B; out[2] = C; }`_
Page 55 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **10.12 SAMPLE CODE: CONVERSION FORMULA (EXAMPLE PYTHON SYNTAX)**
`class Invensense_pressur_Conversion:`
`""" Class for conversion of the pressure and temperature output of the Invensense sensor"""`
`def __init__(self, sensor_constants): """ Initialize customer formula`
`Arguments: sensor_constants -- list of 4 integers: [c1, c2, c3, c4] """ self.sensor_constants = sensor_constants`
`# configuration for Pressure Samples self.p_Pa_calib = [45000.0, 80000.0, 105000.0] self.LUT_lower = 3.5 * (2**20) self.LUT_upper = 11.5 * (2**20) self.quadr_factor = 1 / 16777216.0 self.offst_factor = 2048.0`
`def calculate_conversion_constants(self, p_Pa, p_LUT): """ calculate temperature dependent constants`
`Arguments: p_Pa -- List of 3 values corresponding to applied pressure in Pa p_LUT -- List of 3 values corresponding to the measured p_LUT values at the applied pressures. """ C = (p_LUT[0] * p_LUT[1] * (p_Pa[0] - p_Pa[1]) + p_LUT[1] * p_LUT[2] * (p_Pa[1] - p_Pa[2]) + p_LUT[2] * p_LUT[0] * (p_Pa[2] - p_Pa[0])) / \ (p_LUT[2] * (p_Pa[0] - p_Pa[1]) + p_LUT[0] * (p_Pa[1] - p_Pa[2]) + p_LUT[1] * (p_Pa[2] - p_Pa[0])) A = (p_Pa[0] * p_LUT[0] - p_Pa[1] * p_LUT[1] - (p_Pa[1] - p_Pa[0]) * C) / (p_LUT[0] - p_LUT[1]) B = (p_Pa[0] - A) * (p_LUT[0] + C) return [A, B, C] def get_pressure(self, p_LSB, T_LSB): """ Convert an output from a calibrated sensor to a pressure in Pa. Arguments: p_LSB -- Raw pressure data from sensor T_LSB -- Raw temperature data from sensor """ t = T_LSB - 32768.0 s1 = self.LUT_lower + float(self.sensor_constants[0] * t * t) * self.quadr_factor s2 = self.offst_factor * self.sensor_constants[3] + float(self.sensor_constants[1] * t * t) * self.quadr_factor s3 = self.LUT_upper + float(self.sensor_constants[2] * t * t) * self.quadr_factor A, B, C = self.calculate_conversion_constants(self.p_Pa_calib, [s1, s2, s3]) return A + B / (C + p_LSB) [end of the pseudocode]`
Page 56 of 65
Document Number: DS-000169 Revision: 1.4
as i DK InvenSense
_**ICM-20789**_
## **10.13 SAMPLE CODE: USING CONVERSION FORMULA (EXAMPLE PYTHON SYNTAX)**
`def read_otp_from_i2c():`
- `# TODO: implement read from I2C`
- `# refer to data sheet for I2C commands to read OTP`
- `return 1000, 2000, 3000, 4000`
`def read_raw_pressure_temp_from_i2c():`
- `# TODO: implement read from I2C`
- `# refer to data sheet for I2C commands to read pressure and temperature return 8000000, 32000`
`# Sample code to read`
`from Invensense_pressure_conversion import Invensense_pressure_conversion`
`# -- initialization`
`c1, c2, c3, c4 = read_otp_from_i2c() conversion = Invensense_pressure_conversion([c1, c2, c3, c4])`
`# -- read raw pressure and temp data, calculate pressure p, T = read_raw_pressure_temp_from_i2c() pressure = conversion.get_pressure(p, T) print 'Pressure: %f' % pressure`
`[end of the pseudocode]`
## **10.14 COMMUNICATION DATA SEQUENCES**
**Figure 15. Communication Sequence for starting a measurement and reading measurement results**
Page 57 of 65
Document Number: DS-000169 Revision: 1.4
‘TDI InvenSense
_**ICM-20789**_
## _**ASSEMBLY**_
This section provides general guidelines for assembling TDK-InvenSense Micro Electro-Mechanical Systems (MEMS) gyros packaged in LGA package.
## **11.1 ORIENTATION OF AXES**
The diagram below shows the orientation of the axes of sensitivity and the polarity of rotation. Note the pin 1 identifier (•) in Figure 16.
**==> picture [87 x 109] intentionally omitted <==**
**----- Start of picture text -----**<br>
+Z<br>+Z +Y<br>+Y<br>+X +X<br>ICM-20789<br>**----- End of picture text -----**<br>
**Figure 16. Orientation of Axes of Sensitivity and Polarity of Rotation**
## **11.2 IMPLEMENTATION AND USAGE RECOMMENDATIONS**
## **Soldering**
When soldering, use the standard soldering profile IPC/JEDEC J-STD-020 with peak temperatures of 260°C. ICM-20789 may exhibit a pressure offset after soldering, some settling time may be required depending on soldering properties, PCB properties, and ambient conditions.
The ICM-20789 is an open cavity package, it is mandatory to use no-clean solder paste and no board wash should be applied. The ICM-20789 should be limited to a single reflow and no rework is recommended.
## **Chemical Exposure and Sensor Protection**
The ICM-20789 is an open cavity package and therefore should not be exposed to particulates or liquids. If any type of protective coating must be applied to the circuit board, the sensor must be protected during the coating process.
Page 58 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## **11.3 PACKAGE DIMENSIONS**
24 Lead LGA (4 mm x 4 mm x 1.365 mm) NiPdAu Lead-frame finish
**Figure 17. Package Dimensions**
|~~ee~~<br>~~a~~|**DIMENSIONS IN MILLIMETERS**<br>~~Po~~<br>~~ee~~<br>~~ee~~|**DIMENSIONS IN MILLIMETERS**<br>~~Po~~<br>~~ee~~<br>~~ee~~|**DIMENSIONS IN MILLIMETERS**<br>~~Po~~<br>~~ee~~<br>~~ee~~|
|---|---|---|---|
|**SYMBOLS**<br>~~ee~~<br>~~a~~|**MIN**<br>~~Po~~<br>~~ee~~|**NOM**<br>~~Po~~<br>~~ee~~|**MAX**<br>~~Po~~<br>~~ee~~|
|**A**<br>~~ee ~~<br>~~a~~|1.265<br>~~Po~~<br> ~~ee~~|1.365<br>~~Po~~<br>~~ee~~|1.465<br>~~Po~~<br>~~ee~~|
|**A3**<br> <br>~~a~~<br>~~a~~|---<br> ~~ee~~|1.185 REF.<br>~~ee~~|---<br>~~ee~~|
|**b**<br>~~a~~<br>~~a~~|0.20|0.25|0.30|
|**c**<br>~~a~~<br>~~a~~|---|0.18 REF.|---|
|**D**<br>~~a~~|3.90|4.00|4.10|
|**E**<br>~~a~~|3.90|4.00|4.10|
|**e**<br>~~a~~<br>~~a~~|---|0.50|---|
|**L**<br>~~a~~|0.35|0.45|0.55|
|**L1**<br>~~a~~|0.025|0.075|0.125|
|**L3**|0.325|0.375|0.425|
**Table 31. Package Dimensions Table**
Figure 18 shows the recommended PCB land pattern for ICM-20789.
Page 59 of 65
Document Number: DS-000169 Revision: 1.4
TDK InvenSense
_**ICM-20789**_
**Figure 18. ICM-20789 recommended PCB land pattern**
Page 60 of 65
Document Number: DS-000169 Revision: 1.4
‘TDK InvenSense
_**ICM-20789**_
## _**PART NUMBER PACKAGE MARKING**_
**==> picture [495 x 238] intentionally omitted <==**
**----- Start of picture text -----**<br>
12 PART NUMBER PACKAGE MARKING<br>The part number package marking for ICM-20789 devices is summarized below:<br>PART NUMBER PART NUMBER PACKAGE MARKING<br>ICM-20789 IC2789<br>eG!<br>TOP VIEW<br>IC2789<br>Part Number<br>Lot Traceability Code X X X X X XXX<br> YYWW<br>Y Y = Year Code<br>W W = Work Week<br>**----- End of picture text -----**<br>
**Figure 19. Part Number Package Marking**
Page 61 of 65
Document Number: DS-000169 Revision: 1.4
‘TDK InvenSense
_**ICM-20789**_
## _**ORDERING GUIDE**_
**PART TEMP RANGE PACKAGE QUANTITY PACKAGING** ICM-20789† −40°C to +85°C 24-Pin LGA 3,000 13” Tape and Reel ~~a~~
†Denotes RoHS and Green-Compliant Package
Page 62 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
## _**REFERENCE**_
Please refer to “InvenSense MEMS Handling Application Note (AN-IVS-0002A-00)” for the following information:
- Manufacturing Recommendations
- Assembly Guidelines and Recommendations
- PCB Design Guidelines and Recommendations
- MEMS Handling Instructions
- ESD Considerations
- Reflow Specification
- Storage Specifications
- Package Marking Specification
- Tape & Reel Specification
- Reel & Pizza Box Label
- Packaging
- Representative Shipping Carton Label
- Compliance
- Environmental Compliance
- DRC Compliance
- Compliance Declaration Disclaimer
Page 63 of 65
Document Number: DS-000169 Revision: 1.4
‘TDK InvenSense
_**ICM-20789**_
## _**REVISION HISTORY**_
|**REVISION DATE**|**REVISION**|**DESCRIPTION**|
|---|---|---|
|06/05/17|1.0|Initial Release|
|08/28/2017|1.1|Updated part marking|
|10/04/17|1.2|Updated performance specifications, added handling instructions|
|10/31/17|1.3|Updated Ordering Guide, Clarified Pin Connections as NC, GND, or VDD|
|01/30/18|1.4|Updated Sample Code: Example C Syntax|
Page 64 of 65
Document Number: DS-000169 Revision: 1.4
_**ICM-20789**_
This information furnished by InvenSense, Inc. (“InvenSense”) is believed to be accurate and reliable. However, no responsibility is assumed by InvenSense for its use, or for any infringements of patents or other rights of third parties that may result from its use. Specifications are subject to change without notice. InvenSense reserves the right to make changes to this product, including its circuits and software, in order to improve its design and/or performance, without prior notice. InvenSense makes no warranties, neither expressed nor implied, regarding the information and specifications contained in this document. InvenSense assumes no responsibility for any claims or damages arising from information contained in this document, or from the use of products and services detailed therein. This includes, but is not limited to, claims or damages based on the infringement of patents, copyrights, mask work and/or other intellectual property rights.
Certain intellectual property owned by InvenSense and described in this document is patent protected. No license is granted by implication or otherwise under any patent or patent rights of InvenSense. This publication supersedes and replaces all information previously supplied. Trademarks that are registered trademarks are the property of their respective companies. InvenSense sensors should not be used or sold in the development, storage, production or utilization of any conventional or mass-destructive weapons or for any other weapons or life threatening applications, as well as in any other life critical applications such as medical equipment, transportation, aerospace and nuclear instruments, undersea equipment, power plant equipment, disaster prevention and crime prevention equipment.
©2017 InvenSense. All rights reserved. InvenSense, MotionTracking, MotionProcessing, MotionProcessor, MotionFusion, MotionApps, DMP, AAR, and the InvenSense logo are trademarks of InvenSense, Inc. The TDK logo is a trademark of TDK Corporation. Other company and product names may be trademarks of the respective companies with which they are associated.
©2017—2018 InvenSense. All rights reserved.
Page 65 of 65
Document Number: DS-000169 Revision: 1.4
Updated at April 17, 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 →