IIM42652
This module contains the I2C driver for IIM-42652 6-axis SmartIndustrial™ MotionTracking device that supports an extended operating temperature range. The IIM-42652 combines a 3-axis gyroscope (up to ±2000 degrees/sec), and a 3-axis accelerometer (up to ±16g) and features a 2K-byte FIFO that can lower the traffic on the serial bus interface and reduce power consumption by allowing the system processor to burst read sensor data and then go into a low-power mode.
class IIM42652
IIM42652(drv=I2C0, addr=0x69, clk=1000000)
Create an instance of a new IIM-42652 device controlled by I2C.
drvis the I2C drive to use. Default isI2C0;addris the I2C address of the device. Default is0x69;clkis the I2C clock speed to use. Default is1000000.
method soft_reset
soft_reset()
Send a soft reset command to the IIM-42652. This will set all the device registers to the default values.
method set_drive
set_drive(i2c_sr)
Set the desired slew rate for the IIM-42652's I2C. For additional information, see register DRIVE_CONFIG on [IIM-42652 datasheet][ds].
i2c_sris the desired I2C slew rate.
method setup
setup()
Automatically configure the device to work in I2C mode.
method get_temp
get_temp()
Returns the temperature value [°C] read form the temperature sensor onboard IIM-42652.
method get_accel_x
get_accel_x()
Returns the last read acceleration value on x axis.
method get_accel_y
get_accel_y()
Returns the last read acceleration value on y axis.
method get_accel_z
get_accel_z()
Returns the last read acceleration value on z axis.
method get_gyro_x
get_gyro_x()
Returns the last read gyroscope value on x axis.
method get_gyro_y
get_gyro_x()
Returns the last read gyroscope value on y axis.
method get_gyro_z
get_gyro_x()
Returns the last read gyroscope value on z axis.
method set_pwr_cfg
set_pwr_cfg(acc, gyro, idle=0, tmp=0)
Set the power configuration of the device. This is required to power up gyroscope and accelerometer. For additional information, see register PWR_MGMT0 on [IIM-42652 datasheet][ds].
-
accis the accelerometer power configuration. Reset value is0b00.accMode 0b00 Off 0b01 Off 0b10 Low Power 0b11 Low Noise -
gyrois the gyroscope power configuration. Reset value is0b00.gyroMode 0b00 Off 0b01 Off 0b10 Low Power 0b11 Low Noise -
idleset to1to keep the RC Oscillator always on. Default value is0, reset value is0. -
tmp_disset to1to disable the temperature sensor. Default value is0, reset value is0.
method set_accel_cfg
set_accel_cfg(odr, fs)
Set the accelerometer configuration for Output Data Rate and Full Scale. For additional information, see register ACCEL_CONFIG0 on [IIM-42652 datasheet][ds].
-
odris the Output Data Rate. Reset value is0b0110(32 kHz). -
fsis the Full Scale. Reset value is0b000(±16 g).
method set_gyro_cfg
set_gyro_cfg(odr, fs)
Set the gyroscope configuration for Output Data Rate and Full Scale. For additional information, see register GYRO_CONFIG0 on [IIM-42652 datasheet][ds].
-
odris the Output Data Rate. Reset value is0b0110(32 kHz). -
fsis the Full Scale. Reset value is0b000(±2000 degrees/sec).
method set_fifo_cfg
set_fifo_cfg(accel_en, gyro_en, tmp_en=False, tmst_en=False, hires_en=False, wm_gt_th=False, res_rd=False)
Set the fifo configuration to select data saved on the fifo. For additional information, see register FIFO_CONFIG1 on [IIM-42652 datasheet][ds].
-
accel_enif set toTrueallows accelerations data of the 3-axis to go to the fifo. -
gyro_enif set toTrueallows gyro data of the 3-axis to go to the fifo. -
tmp_enif set toTrueallows temperature data to go to the fifo. DefaultFalse. -
tmst_enif set toTrueallows time stamp data to go to the fifo. DefaultFalse. -
hires_enif set toTrueenable the high resolutions data on the fifo. DefaultFalse. -
wm_gt_thif set toTrueenables fifo watermark on every ODR if data on fifo are over watermark. DefaultFalse. -
res_rdif set toTrueallows partial read from the fifo. Reading again will resume from the last byte read. DefaultFalse
method fifo_cnt
fifo_cnt()
Get the current number of bytes stored on the fifo.
method set_fifo_mode
set_fifo_mode(mode)
Set the mode used by the fifo. For additional information, see register FIFO_CONFIG on [IIM-42652 datasheet][ds].
-
modeis the mode of the fifo. Reset value is0b00.modeMode 0b00 Bypass 0b01 Stream-to-FIFO 0b10 STOP-on-FULL 0b11 STOP-on-FULL
method handle_fifo
handle_fifo(buf)
Return a tuple with a packet of measures elaborated from the full fifo buffer. The first byte passed should be the header of the packet. The first value of the returned tuple is the number of bytes used to create the packet.
bufis the buffer to get the first packet from.
Return a tuple with the following fromat.
( n_bytes, header, measure_1, measure_2, ..., measure_n)
-
n_bytesnumber of bytes that contained the packet. -
headeris the header of the packet. -
measure_#are the measures, depending on the fifo configuration.
method set_fsync_cfg
set_fsync_cfg(pol, ui_clear_flag, ui)
Set the fsync configuration. For additional information, see register FSYNC_CONFIG on [IIM-42652 datasheet][ds].
-
polis the polarity of the fsync pulse. -
ui_clear_flagif set to1fysnc flag is cleared when ui sensor register is updated. -
uiselect the fysnc flag tag.
method get_fifo
get_fifo(n)
Get n bytes from the fifo.
nis the number of bytes to get from the fifo.
Returns a bytearray with n bytes.
method set_signal_path
set_signal_path(fifo_flush, tmst_strobe, abort_n_reset, dmp_mem_rst=False, dmp_init_en=False)
Set the signal path reset. For additional information, see register SIGNAL_PATH_RESET on [IIM-42652 datasheet][ds].
-
fifo_flushif set toTruethe fifo is flushed. -
tmst_strobeif set toTruetime stamp counter is latched into time stamp register. -
abort_n_resetif set toTruesignal path is reset an ODR restarted. -
dmp_mem_rstif set toTruethe DMP memory is reset. DefaultFalse. -
dmp_init_enif set toTruethe DMP memory is enabled. DefaultFalse.
method set_fifo_decimation
set_fifo_decimation(dec)
Set the decimation of data stored on the fifo. If decimation is 5 only one data over 5 will be stored on the fifo.
decis the decimation to set. Range 0-127.
method set_fifo_wm
set_fifo_wm(wm)
Set the fifo watermark. If fifo counter is higher than the watermark an interrupt can be generated.
wmis the watermark value to set.
method set_int_cfg
set_int_cfg(int_pin, mode, drive, polarity)
Set the interrupt pin configuration. For additional information, see register INT_CONFIG on [IIM-42652 datasheet][ds].
-
int_pinis the pin of IIM42652 to configure. -
modeis the mode of the interrupt.0for pulsed,1for latched. -
driveis the drive configuration.0open drain,1push pull. -
polarityis the polarity of the pin.0active low,1active high.
method set_int_sources
set_int_sources(int_pin, fifo_full, fifo_ths, ui_acg_rdy=False, ui_drdy=False, reset_done=False, pll_rdy=False, ui_fsync=False)
Set sources that can trigger an interrupt on a pin. For additional information, see register INT_SOURCE0 on [IIM-42652 datasheet][ds].
-
int_pinis the pin of IIM42652 to configure. -
fifo_fullif set toTrueinterrupt is triggered when fifo is full. -
fifo_thsif set toTrueinterrupt is triggered when fifo watermark is reached. DefaultFalse. -
ui_acg_rdyif set toTrueinterrupt is triggered if UI AGC is ready. DefaultFalse. -
ui_drdyif set toTrueinterrupt is triggered if UI data are ready. DefaultFalse. -
reset_doneif set toTrueinterrupt is triggered if reset is completed. DefaultFalse. -
pll_rdyif set toTrueinterrupt is triggered if PLL is ready. DefaultFalse. -
ui_fsyncif set toTrueinterrupt is triggered if UI fsync is triggered. DefaultFalse.
method get_int_status
get_int_status(get_list=False)
Returns the interrupt register status. The register tells what triggered the interrupt. For additional information, see register INT_STATUS on [IIM-42652 datasheet][ds].
If get_list is set to True, the register bits will be splitted into a list.
method set_int_clear_cfg
set_int_clear_cfg(fifo_full, fifo_ths, ui_drdy)
Set the method to clear interrupt.
| val | clear method |
|---|---|
| 0b00 | Status bit read |
| 0b01 | Status bit read |
| 0b10 | Sensor reg read |
| 0b11 | Both above methods |
For additional information, see register INT_CONFIG0 on [IIM-42652 datasheet][ds].
-
fifo_fullis the clear method of fifo full interrupt. -
fifo_thsis the clear method of fifo watermark threshold interrupt. -
ui_drdyis the clear method of ui data ready interrupt.
method enable_tilt_detection
enable_tilt_detection(dmp_odr=2, tilt_time=1, int_pin=1)
Enables the tilt-detection feature of the IIM-42652 device. This feature allows to trigger interrupt on the selected int_pin when the device is tilted over 35° for more than the selected tilt_time.
The interrupt will trigger each time that the 35° threshold is crossed for more than the selected time for each axis and in both directions. For example if we tilt the x from 0° to 40°, the device will trigger and it will trigger again if we go back to 0° from 40°.
-
dmp_odris the acquisition data rate used by the tilt detector. Possible values are0for 25 Hz and2for 50 Hz. Default value is2. -
tilt_timeis the time required to trigger the interrupt after the 35° threshold is crossed. Possible values are:tilt_timeRequired time [s] 00 12 24 36 Default value is
1. -
int_pinis the pin of IIM-42652 to configure.
method disable_tilt_detection
disable_tilt_detection()
Disables the tilt-detection feature of the IIM-42652 device.
method get_int_apex_status
get_int_apex_status(get_list=False)
Get the apex status of the IIM-42652 device. If the bit 3 is 1 then the interrupt was triggered by the tilt-detection feature.
If get_list is set to True, the register bits will be splitted into a list.
method enable_wake_on_motion
enable_wake_on_motion(xth=0, yth=0, zth=0, xint=True, yint=True, zint=True, wom_mode=1, int_pin=1)
Enable the wake-on-motion feature of the IIM-42652 device. This feature allows to trigger interrupt on the selected int_pin when the acceleration on one of the axes is greater than the acceleration threshold of the axis. The thresholds go from 0 to 1 in g units and they do not depend on the selected acceleration range.
xthis the threshold on the x axis.ythis the threshold on the y axis.zthis the threshold on the z axis.xintif set toFalsethe x axis will not trigger the interrupt. Ifxthis 0xintwill be set toFalseautomatically.yintif set toFalsethe y axis will not trigger the interrupt. Ifythis 0yintwill be set toFalseautomatically.zintif set toFalsethe z axis will not trigger the interrupt. Ifzthis 0zintwill be set toFalseautomatically.wom_modeis the mode used by the wake-on-motion to trigger the interrupt. If set to0static mode is used and acceleration is compared to the first sample acquired. If set to1differential mode is used and acceleration is compared to the last sample acquired. Default value is1.int_pinis the pin of IIM-42652 to configure.
method disable_wake_on_motion
disable_wake_on_motion()
Disable the wake-on-motion feature of the IIM-42652 device.
method enable_significant_motion_detection
enable_significant_motion_detection(xth=0, yth=0, zth=0, smd_timing=2, int_pin=1)
Enable the significant-motion-detection feature of the IIM-42652 device. This feature allows to trigger the interrupt on the selected int_pin when the acceleration on one or more of the axes crosses the threshold more than twice on the selected smd_timing. The thresholds go from 0 to 1 in g units and they do not depend on the selected acceleration range.
xthis the threshold on the x axis.ythis the threshold on the y axis.zthis the threshold on the z axis.smd_timingis the time window to get the significant motion. Possible values are:2for 1 second and3for 3 seconds.int_pinis the pin of IIM-42652 to configure.
method disable_significant_motion_detection
disable_significant_motion_detection()
Disable the significant-motion-detection feature of the IIM-42652 device.
method get_int_smd_wom_status
get_int_smd_wom_status(get_list=False)
Get the apex status of the IIM-42652 device. If get_list is set to True, the register bits will be splitted into a list.
Bits are:
| Bit_n | Function |
|---|---|
3 | Significant motion detection, clear on read |
2 | Wake in Motion, z axis, clear on read |
1 | Wake in Motion, y axis, clear on read |
0 | Wake in Motion, x axis, clear on read |