

The LSM6DSV32XTR is a high-performance 6-axis inertial sensor manufactured by STMicroelectronics. It integrates a 3-axis accelerometer and a 3-axis gyroscope into a single compact package, enabling precise motion tracking and orientation detection. This sensor is designed for applications requiring low power consumption, high sensitivity, and real-time motion analysis.








| Parameter | Value |
|---|---|
| Operating Voltage | 1.71 V to 3.6 V |
| Accelerometer Full-Scale Range | ±2 g, ±4 g, ±8 g, ±16 g |
| Gyroscope Full-Scale Range | ±125 dps, ±250 dps, ±500 dps, ±1000 dps, ±2000 dps |
| Output Data Rate (ODR) | Up to 6.6 kHz for both accelerometer and gyroscope |
| Interface | I²C, SPI |
| Power Consumption | 0.55 mA in high-performance mode (accelerometer + gyroscope) |
| Operating Temperature Range | -40 °C to +85 °C |
| Package | LGA-14 (2.5 mm x 3 mm x 0.74 mm) |
The LSM6DSV32XTR comes in a 14-pin LGA package. Below is the pin configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VDD | Power supply (1.71 V to 3.6 V) |
| 2 | VDDIO | I/O interface voltage supply |
| 3 | GND | Ground |
| 4 | SCL/SPC | I²C clock line / SPI serial port clock |
| 5 | SDA/SDI/SDO | I²C data line / SPI serial data input/output |
| 6 | CS | SPI chip select (active low) |
| 7 | INT1 | Interrupt 1 output |
| 8 | INT2 | Interrupt 2 output |
| 9-14 | NC | Not connected (leave floating or connect to GND for stability) |
Below is an example of how to initialize and read data from the LSM6DSV32XTR using an Arduino UNO:
#include <Wire.h>
// LSM6DSV32XTR I2C address
#define LSM6DSV32XTR_ADDR 0x6A
// Register addresses
#define WHO_AM_I 0x0F
#define CTRL1_XL 0x10
#define CTRL2_G 0x11
#define OUTX_L_XL 0x28
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication
// Check if the sensor is connected
Wire.beginTransmission(LSM6DSV32XTR_ADDR);
Wire.write(WHO_AM_I);
Wire.endTransmission();
Wire.requestFrom(LSM6DSV32XTR_ADDR, 1);
if (Wire.available()) {
byte whoAmI = Wire.read();
if (whoAmI == 0x6C) { // Expected WHO_AM_I response
Serial.println("LSM6DSV32XTR detected!");
} else {
Serial.println("Device not recognized.");
while (1);
}
}
// Configure accelerometer (±2 g, 1.66 kHz ODR)
Wire.beginTransmission(LSM6DSV32XTR_ADDR);
Wire.write(CTRL1_XL);
Wire.write(0x60); // 0x60 = 1.66 kHz ODR, ±2 g
Wire.endTransmission();
// Configure gyroscope (±250 dps, 1.66 kHz ODR)
Wire.beginTransmission(LSM6DSV32XTR_ADDR);
Wire.write(CTRL2_G);
Wire.write(0x60); // 0x60 = 1.66 kHz ODR, ±250 dps
Wire.endTransmission();
}
void loop() {
// Read accelerometer X-axis data
Wire.beginTransmission(LSM6DSV32XTR_ADDR);
Wire.write(OUTX_L_XL);
Wire.endTransmission();
Wire.requestFrom(LSM6DSV32XTR_ADDR, 2);
if (Wire.available() == 2) {
int16_t accelX = Wire.read() | (Wire.read() << 8);
Serial.print("Accel X: ");
Serial.println(accelX);
}
delay(500); // Delay for readability
}
Sensor Not Detected:
Incorrect or No Data Output:
High Power Consumption:
Q: Can the LSM6DSV32XTR operate in a low-power mode?
Q: What is the maximum output data rate?
Q: Is the sensor compatible with 5 V logic?
Q: How do I reset the sensor?