Skip to content

ISM330DHCX Module

This module contains the driver for STMicroelectronics ISM330DHCX 3-axis accelerometer and gyroscope.

In the ISM330DHCX, the sensing elements of the accelerometer and of the gyroscope are implemented on the same silicon die, thus guaranteeing superior stability and robustness. (datasheet).

class ISM330DHCX

class ISM330DHCX(spidrv, pin_cs, clk=5000000)

Class which provides a simple interface to ISM330DHCX features.

Creates an instance of ISM330DHCX class, using the specified SPI settings and initial device configuration

Arguments:

  • spidrv – the SPI driver to use (SPI0, …)
  • pin_cs – Chip select pin to access the ISM330DHCX chip
  • clk – Clock speed, default 500 kHz

Example:

from stm.ism330dhcx import ism330dhcx

...

accgyro = ism330dhcx.ISM330DHCX(SPI0, D10)
acc = accgyro.get_acc_data()
gyro = accgyro.get_gyro_data()
ISM330DHCX.reset

reset()

Reset the device using the internal register flag.

ISM330DHCX.enable_acc

enable_acc(odr=ISM330DHCX_ODR_417Hz, fs=0)

Sets the device’s configuration registers for accelerometer.

Parameters:

  • odr : sets the Output Data Rate of the device. Available values are:
Value Output Data Rate Constant Name
0x00 OFF ISM330DHCX_ODR_OFF
0x01 12.5 Hz ISM330DHCX_ODR_12Hz5
0x02 26 Hz ISM330DHCX_ODR_26Hz
0x03 52 Hz ISM330DHCX_ODR_52Hz
0x04 104 Hz ISM330DHCX_ODR_104Hz
0x05 208 Hz ISM330DHCX_ODR_208Hz
0x06 417 Hz ISM330DHCX_ODR_417Hz
0x07 833 Hz ISM330DHCX_ODR_833Hz
0x08 1.667 KHz ISM330DHCX_ODR_1667Hz
0x09 3.333 KHz ISM330DHCX_ODR_3333Hz
0x0A 6.667 KHz ISM330DHCX_ODR_6667Hz
0x0B 6.5 Hz ISM330DHCX_ODR_6Hz5
  • fs : sets the Device Full Scale. Available values are:
Value Full Scale Costant Name in mg/LSB
0x00 ±2g ISM330DHCX_ACC_SENS_FS_2G 0.061 mg/LSB
0x01 ±4g ISM330DHCX_ACC_SENS_FS_4G 0.122 mg/LSB
0x02 ±8g ISM330DHCX_ACC_SENS_FS_8G 0.244 mg/LSB
0x03 ±16g ISM330DHCX_ACC_SENS_FS_16G 0.488 mg/LSB

Returns True if configuration is successful, False otherwise.

ISM330DHCX.disable_acc

disable_acc()

Disables the accelerator sensor.

Returns True if configuration is successful, False otherwise.

ISM330DHCX.enable_gyro

enable_gyro(odr=ISM330DHCX_ODR_417Hz, fs=0)

Sets the device’s configuration registers for gyroscope.

Parameters:

  • odr : sets the Output Data Rate of the device. Available values are:
Value Output Data Rate Constant Name
0x00 OFF ISM330DHCX_ODR_OFF
0x01 12.5 Hz ISM330DHCX_ODR_12Hz5
0x02 26 Hz ISM330DHCX_ODR_26Hz
0x03 52 Hz ISM330DHCX_ODR_52Hz
0x04 104 Hz ISM330DHCX_ODR_104Hz
0x05 208 Hz ISM330DHCX_ODR_208Hz
0x06 417 Hz ISM330DHCX_ODR_417Hz
0x07 833 Hz ISM330DHCX_ODR_833Hz
0x08 1.667 KHz ISM330DHCX_ODR_1667Hz
0x09 3.333 KHz ISM330DHCX_ODR_3333Hz
0x0A 6.667 KHz ISM330DHCX_ODR_6667Hz
  • fs : sets the Device Full Scale. Available values are:
Value Full Scale Costant Name in mdps/LSB
0x00 ±125 dps ISM330DHCX_GYRO_SENS_FS_125DPS 4.375 mdps/LSB
0x01 ±250 dps ISM330DHCX_GYRO_SENS_FS_250DPS 8.750 mdps/LSB
0x02 ±500 dps ISM330DHCX_GYRO_SENS_FS_500DPS 17.500 mdps/LSB
0x03 ±1000 dps ISM330DHCX_GYRO_SENS_FS_1000DPS 35.000 mdps/LSB
0x04 ±2000 dps ISM330DHCX_GYRO_SENS_FS_2000DPS 70.000 mdps/LSB
0x05 ±4000 dps ISM330DHCX_GYRO_SENS_FS_4000DPS 140.000 mdps/LSB

Returns True if configuration is successful, False otherwise.

ISM330DHCX.disable_gyro

disable_gyro()

Disables the gyroscope sensor.

Returns True if configuration is successful, False otherwise.

ISM330DHCX.whoami

whoami()

Value of the ISM330DHCX_WHO_AM_I register (0x6B).

ISM330DHCX.get_acc_data

get_acc_data(ms2=True, raw=False)

Retrieves accelerometer data in one call.

Arguments:

  • ms2 – If ms2 flag is True, returns data converted in m/s^2; otherwise in mg (default True)
  • raw – If raw flag is True, returns raw register values (default False)

Returns acc_x, acc_y, acc_z.

ISM330DHCX.get_gyro_data

get_gyro_data(dps=True, raw=False)

Retrieves gyroscope data in one call.

Arguments:

  • dps – If dps flag is True, returns data converted in dps; otherwise in mdps (default True)
  • raw – If raw flag is True, returns raw register values (default False)

Returns gyro_x, gyro_y, gyro_z.

ISM330DHCX.get_temp

get_temp()

Retrieves temperature in one call; if raw flag is enabled, returns raw register values.

Returns temp.

ISM330DHCX.get_fast

get_fast()

Retrieves all data sensors in one call in fast way (c-code acquisition).

  • Temperature in °C
  • Acceleration in m/s^2
  • Angular Velocity in dps (degrees per second)

Returns temp, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z.

ISM330DHCX.set_event_interrupt

set_event_interrupt(pin_int, sensor, enable)

Enables the interrupt pins. When data from sensor selected will be ready, the related interrupt pin configured will be set to high.

Arguments:

  • pin_int – ID of the interrupt pin to be enabled/disabled. Available values are 1 o 2.
  • sensor – Data Ready flag selector. Available values are “acc” or “gyro”.
  • enable – If enable flag is True, interrupt pin will be enabled, otherwise will be disabled.

Returns True if configuration is successful, False otherwise.