
CIC QMA6100P Breakout - 3-Axis Accelerometer MEMS Sensor
Overview
Note: QMA6100P is pin to pin compatible with QMA7981, QMA7981 is EOL.
The QMA6100 is a 3-Axis Accelerometer. This surface-mount, small sized chip has integrated acceleration transducer with signal conditioning ASIC, sensing tilt, motion, shock and vibration, targeted for applications such as screen rotation, step counting, sleep monitor, gaming and personal navigation in mobile and wearable smart devices.
The QMA6100 is based on the state-of-the-art, high resolution single crystal silicon MEMS technology. Along with custom-designed 14-bit ADC ASIC, it offers the advantages of low noise, high accuracy, low power consumption, and offset trimming. The device supports digital interface I2C and SPI.


Features
- 3-Axis Accelerometer in a 2x2x0.95 mm3 Land Grid Array Package (LGA), guaranteed to operate over a temperature range of -40 °C to +85 °C
- 14-Bit ADC with low noise accelerometer sensor
- I2C Interface with SDR modes. Support SPI digital interface
- Wide range operation voltage (1.71V to 3.6V) and low power consumption (2-50μA low power conversion current)
- Integrated FIFO with depth of 64 frames
- Built–in motion algorithm
Specifications
- QMA6100 - 3-Axis Accelerometer Integrated 14-bit ADC & motion algorithm
- Headers for I2C/SPI Interface, Default I2C interface
- Headers for Interrupt, Address and so on.
- Qwiic connector x 2, easy to debug & use
- Dimension: 28 x 18 x 5 mm
Hardware

Pin | Description | Note |
---|---|---|
VDD | Power supply voltage: 2.4-3.5V | |
GND | Ground | |
SCL/SCK | I2C interface Clock bus or SPI interface Clock bus | Had external pull-up resistor 4K7 |
SDA/SDO | I2C interface Data bus or SPI Data out | Had external pull-up resistor 4K7 |
SDI | SPI Data In | |
CSB | SPI Chip Select | |
INT1 | Interrupt digital output 1 (totem pole or open-drain) Active low | |
INT2 | Interrupt digital output 2 (totem pole or open-drain) Active low |
Default I2C interface 7 bit device address: 0x12
User Guide
It is the best choice to develop embedded drivers with embedded rust. Because the driver can be used with MCU like ESP32, also used with ARM64 Linux Application, for example raspberry pi directly.
You can download the qma6100p rust driver with git, also add your rust project with cargo - cargo add qma6100p
.
The examples as below use the first one.
git clone https://github.com/xpulabs/qma6100p-rs/
Examples
Simple Read MPU-6050 Acc & Gypro Data
This example will simply read qma6100p Accelerator & Gypro Sensor Data & Temperature
use linux_embedded_hal::I2cdev;
use qma6100p::*;
use qma6100p::Qma6100p;
fn main() {
let dev = I2cdev::new("/dev/i2c-3").unwrap();
let mut ic = Qma6100p::new(dev, 0x12);
let chip_id = ic.id().unwrap();
println!("Qma6100p chip id: 0x{:02x}", chip_id);
ic.soft_reset().unwrap();
std::thread::sleep(std::time::Duration::from_millis(50));
ic.set_range(Range::RANGE_2G).unwrap();
ic.enable_accel(true).unwrap();
std::thread::sleep(std::time::Duration::from_millis(50));
ic.calibrate_offset().unwrap();
loop {
ic.get_accel_data().unwrap();
ic.offset_values().unwrap();
println!("X: {:.02}, Y: {:.02}, Z: {:.02}", ic.output_data.x_data, ic.output_data.y_data, ic.output_data.z_data);
// println!("X: {:.02}, Y: {:.02}, Z: {:.02}", ic.raw_data.x_raw, ic.raw_data.y_raw, ic.raw_data.z_raw);
std::thread::sleep(std::time::Duration::from_millis(200));
}
}
/dev/i2c-3
is a i2c controller of rpi.- The QMA6100P's I2C Device address is 0x12. So we use
new
function to create a instance.Qma6100p::new(i2c)
id
read the chip IDsoft_reset
function will reset the chip with softwareenable_accel
function will enable acceleratorcalibrate_offset
function will calibrate the acceleratorget_accel_data
function will get the accelerator sensor data
Use the command as below to build and run the app.
cargo build --target aarch64-unknown-linux-gnu -- example linux-qma6100p
scp -r ./target/aarch64-unknown-linux-gnu/debug/example/linux-qma6100p rpi@192.168.6.77:
After login the RPI with SSH, we can execute the app directly.
sudo ./linux-qma6100p
The terminal will print the accelerator values.
Buy it Now
Resources
Documents
Codes
3D Drawing
TBD
FAQ
TBD