Lamp-Da 0.1
A compact lantern project
Loading...
Searching...
No Matches
LSM6DS3.h
1/******************************************************************************
2 SparkFunLSM6DS3.h
3 LSM6DS3 Arduino and Teensy Driver
4
5 Marshall Taylor @ SparkFun Electronics
6 May 20, 2015
7 https://github.com/sparkfun/LSM6DS3_Breakout
8 https://github.com/sparkfun/SparkFun_LSM6DS3_Arduino_Library
9
10 Development environment specifics:
11 Arduino IDE 1.6.4
12 Teensy loader 1.23
13
14 This code is released under the [MIT
15License](http://opensource.org/licenses/MIT).
16
17 Please review the LICENSE.md file included with this example. If you have
18any questions or concerns with licensing, please contact
19techsupport@sparkfun.com.
20
21 Distributed as-is; no warranty is given.
22******************************************************************************/
23
30#ifndef __LSM6DS3IMU_H__
31#define __LSM6DS3IMU_H__
32
33#include "stdint.h"
34
35#define I2C_MODE 0
36#define SPI_MODE 1
37
38// Return values
39typedef enum
40{
41 IMU_SUCCESS,
42 IMU_HW_ERROR,
43 IMU_NOT_SUPPORTED,
44 IMU_GENERIC_ERROR,
45 IMU_OUT_OF_BOUNDS,
46 IMU_ALL_ONES_WARNING,
47 //...
48} status_t;
49
50// This is the core operational class of the driver.
51// LSM6DS3Core contains only read and write operations towards the IMU.
52// To use the higher level functions, use the class LSM6DS3 which inherits
53// this class.
54
56{
57public:
58 LSM6DS3Core(uint8_t);
59 LSM6DS3Core(uint8_t, uint8_t);
60 ~LSM6DS3Core() = default;
61
62 status_t beginCore(void);
63
64 // The following utilities read and write to the IMU
65
66 // ReadRegisterRegion takes a uint8 array address as input and reads
67 // a chunk of memory into that array.
68 status_t readRegisterRegion(uint8_t*, uint8_t, uint8_t);
69
70 // readRegister reads one 8-bit register
71 status_t readRegister(uint8_t*, uint8_t);
72
73 // Reads two 8-bit regs, LSByte then MSByte order, and concatenates them.
74 // Acts as a 16-bit read operation
75 status_t readRegisterInt16(int16_t*, uint8_t offset);
76
77 // Writes an 8-bit byte;
78 status_t writeRegister(uint8_t, uint8_t);
79
80 // Change to embedded page
81 status_t embeddedPage(void);
82
83 // Change to base page
84 status_t basePage(void);
85
86private:
87 // Communication stuff
88 uint8_t I2CAddress;
89};
90
91// This struct holds the settings the driver uses to do calculations
93{
94public:
95 // Gyro settings
96 uint8_t gyroEnabled;
97 uint16_t gyroRange;
98 uint16_t gyroSampleRate;
99 uint16_t gyroBandWidth;
100
101 uint8_t gyroFifoEnabled;
102 uint8_t gyroFifoDecimation;
103
104 // Accelerometer settings
105 uint8_t accelEnabled;
106 uint8_t accelODROff;
107 uint16_t accelRange;
108 uint16_t accelSampleRate;
109 uint16_t accelBandWidth;
110
111 uint8_t accelFifoEnabled;
112 uint8_t accelFifoDecimation;
113
114 // Temperature settings
115 uint8_t tempEnabled;
116
117 // Non-basic mode settings
118 uint8_t commMode;
119
120 // FIFO control data
121 uint16_t fifoThreshold;
122 int16_t fifoSampleRate;
123 uint8_t fifoModeWord;
124
125 uint16_t tempSensitivity;
126};
127
128// This is the highest level class of the driver.
129//
130// class LSM6DS3 inherits the core and makes use of the beginCore()
131// method through it's own begin() method. It also contains the
132// settings struct to hold user settings.
133
134class LSM6DS3 : public LSM6DS3Core
135{
136public:
137 // IMU settings
138 SensorSettings settings;
139
140 // Error checking
141 uint16_t allOnesCounter;
142 uint16_t nonSuccessCounter;
143
144 // Constructor generates default SensorSettings.
145 //(over-ride after construction if desired)
146 LSM6DS3(uint8_t busType = I2C_MODE, uint8_t inputArg = 0x6A);
147 ~LSM6DS3() = default;
148
149 // Call to apply SensorSettings
150 status_t begin(void);
151
152 // Returns the raw bits from the sensor cast as 16-bit signed integers
153 int16_t readRawAccelX(void);
154 int16_t readRawAccelY(void);
155 int16_t readRawAccelZ(void);
156 int16_t readRawGyroX(void);
157 int16_t readRawGyroY(void);
158 int16_t readRawGyroZ(void);
159
160 // Returns the values as floats. Inside, this calls readRaw___();
161 float readFloatAccelX(void);
162 float readFloatAccelY(void);
163 float readFloatAccelZ(void);
164 float readFloatGyroX(void);
165 float readFloatGyroY(void);
166 float readFloatGyroZ(void);
167
168 // Temperature related methods
169 int16_t readRawTemp(void);
170 float readTempC(void);
171 float readTempF(void);
172
173 // FIFO stuff
174 void fifoBegin(void);
175 void fifoClear(void);
176 int16_t fifoRead(void);
177 uint16_t fifoGetStatus(void);
178 void fifoEnd(void);
179
180 enum InterruptType
181 {
182 None, // no interrupt
183 Fall, // raised during a free fall event
184 BigMotion, // raised with a >6g acceleration
185 Step, // raised on a step event
186 AngleChange, // raised on portrait to landscape (or inverse) rotation
187 };
188 bool enable_interrupt1(const InterruptType interr);
189
190 float calcGyro(int16_t);
191 float calcAccel(int16_t);
192
193protected:
194 bool enable_free_fall_detection();
195 bool enable_big_motion_detection();
196
197private:
198};
199
200/****************** Device ID *********************/
201#define LSM6DS3_ACC_GYRO_WHO_AM_I 0X69
202#define LSM6DS3_C_ACC_GYRO_WHO_AM_I 0x6A
203
204/************** Device Register *******************/
205#define LSM6DS3_ACC_GYRO_TEST_PAGE 0X00
206#define LSM6DS3_ACC_GYRO_RAM_ACCESS 0X01
207#define LSM6DS3_ACC_GYRO_SENSOR_SYNC_TIME 0X04
208#define LSM6DS3_ACC_GYRO_SENSOR_SYNC_EN 0X05
209#define LSM6DS3_ACC_GYRO_FIFO_CTRL1 0X06
210#define LSM6DS3_ACC_GYRO_FIFO_CTRL2 0X07
211#define LSM6DS3_ACC_GYRO_FIFO_CTRL3 0X08
212#define LSM6DS3_ACC_GYRO_FIFO_CTRL4 0X09
213#define LSM6DS3_ACC_GYRO_FIFO_CTRL5 0X0A
214#define LSM6DS3_ACC_GYRO_ORIENT_CFG_G 0X0B
215#define LSM6DS3_ACC_GYRO_REFERENCE_G 0X0C
216// Each bit in this register enables a signal to be carried through INT1. The pad’s output will supply the OR
217// combination of the selected signals.
218#define LSM6DS3_ACC_GYRO_INT1_CTRL 0X0D
219// Each bit in this register enables a signal to be carried through INT2. The pad’s output will supply the OR
220// combination of the selected signals.
221#define LSM6DS3_ACC_GYRO_INT2_CTRL 0X0E
222#define LSM6DS3_ACC_GYRO_WHO_AM_I_REG 0X0F
223#define LSM6DS3_ACC_GYRO_CTRL1_XL 0X10
224#define LSM6DS3_ACC_GYRO_CTRL2_G 0X11
225#define LSM6DS3_ACC_GYRO_CTRL3_C 0X12
226#define LSM6DS3_ACC_GYRO_CTRL4_C 0X13
227#define LSM6DS3_ACC_GYRO_CTRL5_C 0X14
228#define LSM6DS3_ACC_GYRO_CTRL6_C 0X15
229#define LSM6DS3_ACC_GYRO_CTRL7_G 0X16
230#define LSM6DS3_ACC_GYRO_CTRL8_XL 0X17
231#define LSM6DS3_ACC_GYRO_CTRL9_XL 0X18
232#define LSM6DS3_ACC_GYRO_CTRL10_C 0X19
233#define LSM6DS3_ACC_GYRO_MASTER_CONFIG 0X1A
234#define LSM6DS3_ACC_GYRO_WAKE_UP_SRC 0X1B
235#define LSM6DS3_ACC_GYRO_TAP_SRC 0X1C
236#define LSM6DS3_ACC_GYRO_D6D_SRC 0X1D
237#define LSM6DS3_ACC_GYRO_STATUS_REG 0X1E
238#define LSM6DS3_ACC_GYRO_OUT_TEMP_L 0X20
239#define LSM6DS3_ACC_GYRO_OUT_TEMP_H 0X21
240#define LSM6DS3_ACC_GYRO_OUTX_L_G 0X22
241#define LSM6DS3_ACC_GYRO_OUTX_H_G 0X23
242#define LSM6DS3_ACC_GYRO_OUTY_L_G 0X24
243#define LSM6DS3_ACC_GYRO_OUTY_H_G 0X25
244#define LSM6DS3_ACC_GYRO_OUTZ_L_G 0X26
245#define LSM6DS3_ACC_GYRO_OUTZ_H_G 0X27
246#define LSM6DS3_ACC_GYRO_OUTX_L_XL 0X28
247#define LSM6DS3_ACC_GYRO_OUTX_H_XL 0X29
248#define LSM6DS3_ACC_GYRO_OUTY_L_XL 0X2A
249#define LSM6DS3_ACC_GYRO_OUTY_H_XL 0X2B
250#define LSM6DS3_ACC_GYRO_OUTZ_L_XL 0X2C
251#define LSM6DS3_ACC_GYRO_OUTZ_H_XL 0X2D
252#define LSM6DS3_ACC_GYRO_SENSORHUB1_REG 0X2E
253#define LSM6DS3_ACC_GYRO_SENSORHUB2_REG 0X2F
254#define LSM6DS3_ACC_GYRO_SENSORHUB3_REG 0X30
255#define LSM6DS3_ACC_GYRO_SENSORHUB4_REG 0X31
256#define LSM6DS3_ACC_GYRO_SENSORHUB5_REG 0X32
257#define LSM6DS3_ACC_GYRO_SENSORHUB6_REG 0X33
258#define LSM6DS3_ACC_GYRO_SENSORHUB7_REG 0X34
259#define LSM6DS3_ACC_GYRO_SENSORHUB8_REG 0X35
260#define LSM6DS3_ACC_GYRO_SENSORHUB9_REG 0X36
261#define LSM6DS3_ACC_GYRO_SENSORHUB10_REG 0X37
262#define LSM6DS3_ACC_GYRO_SENSORHUB11_REG 0X38
263#define LSM6DS3_ACC_GYRO_SENSORHUB12_REG 0X39
264#define LSM6DS3_ACC_GYRO_FIFO_STATUS1 0X3A
265#define LSM6DS3_ACC_GYRO_FIFO_STATUS2 0X3B
266#define LSM6DS3_ACC_GYRO_FIFO_STATUS3 0X3C
267#define LSM6DS3_ACC_GYRO_FIFO_STATUS4 0X3D
268#define LSM6DS3_ACC_GYRO_FIFO_DATA_OUT_L 0X3E
269#define LSM6DS3_ACC_GYRO_FIFO_DATA_OUT_H 0X3F
270#define LSM6DS3_ACC_GYRO_TIMESTAMP0_REG 0X40
271#define LSM6DS3_ACC_GYRO_TIMESTAMP1_REG 0X41
272#define LSM6DS3_ACC_GYRO_TIMESTAMP2_REG 0X42
273#define LSM6DS3_ACC_GYRO_STEP_COUNTER_L 0X4B
274#define LSM6DS3_ACC_GYRO_STEP_COUNTER_H 0X4C
275// Significant motion, tilt, step detector, hard/soft-iron and sensor hub interrupt source register (r).
276#define LSM6DS3_ACC_GYRO_FUNC_SRC 0X53
277// Timestamp, pedometer, tilt, filtering, and tap recognition functions configuration register (r/w).
278#define LSM6DS3_ACC_GYRO_TAP_CFG 0X58
279// Portrait/landscape position and tap function threshold register (r/w).
280#define LSM6DS3_ACC_GYRO_TAP_THS_6D 0X59
281// Tap recognition function setting register (r/w).
282#define LSM6DS3_ACC_GYRO_INT_DUR2 0X5A
283// Single and double-tap function threshold register (r/w)
284#define LSM6DS3_ACC_GYRO_WAKE_UP_THS 0X5B
285// Free-fall, wakeup, timestamp and sleep mode functions duration setting register (r/w).
286#define LSM6DS3_ACC_GYRO_WAKE_UP_DUR 0X5C
287// Free-fall function duration setting register (r/w).
288#define LSM6DS3_ACC_GYRO_FREE_FALL 0X5D
289// Functions routing on INT1 register (r/w)
290#define LSM6DS3_ACC_GYRO_MD1_CFG 0X5E
291// Functions routing on INT2 register (r/w).
292#define LSM6DS3_ACC_GYRO_MD2_CFG 0X5F
293
294/************** Access Device RAM *******************/
295#define LSM6DS3_ACC_GYRO_ADDR0_TO_RW_RAM 0x62
296#define LSM6DS3_ACC_GYRO_ADDR1_TO_RW_RAM 0x63
297#define LSM6DS3_ACC_GYRO_DATA_TO_WR_RAM 0x64
298#define LSM6DS3_ACC_GYRO_DATA_RD_FROM_RAM 0x65
299
300#define LSM6DS3_ACC_GYRO_RAM_SIZE 4096
301
302/************** Embedded functions register mapping *******************/
303#define LSM6DS3_ACC_GYRO_SLV0_ADD 0x02
304#define LSM6DS3_ACC_GYRO_SLV0_SUBADD 0x03
305#define LSM6DS3_ACC_GYRO_SLAVE0_CONFIG 0x04
306#define LSM6DS3_ACC_GYRO_SLV1_ADD 0x05
307#define LSM6DS3_ACC_GYRO_SLV1_SUBADD 0x06
308#define LSM6DS3_ACC_GYRO_SLAVE1_CONFIG 0x07
309#define LSM6DS3_ACC_GYRO_SLV2_ADD 0x08
310#define LSM6DS3_ACC_GYRO_SLV2_SUBADD 0x09
311#define LSM6DS3_ACC_GYRO_SLAVE2_CONFIG 0x0A
312#define LSM6DS3_ACC_GYRO_SLV3_ADD 0x0B
313#define LSM6DS3_ACC_GYRO_SLV3_SUBADD 0x0C
314#define LSM6DS3_ACC_GYRO_SLAVE3_CONFIG 0x0D
315#define LSM6DS3_ACC_GYRO_DATAWRITE_SRC_MODE_SUB_SLV0 0x0E
316#define LSM6DS3_ACC_GYRO_CONFIG_PEDO_THS_MIN 0x0F
317#define LSM6DS3_ACC_GYRO_CONFIG_TILT_IIR 0x10
318#define LSM6DS3_ACC_GYRO_CONFIG_TILT_ACOS 0x11
319#define LSM6DS3_ACC_GYRO_CONFIG_TILT_WTIME 0x12
320#define LSM6DS3_ACC_GYRO_SM_STEP_THS 0x13
321#define LSM6DS3_ACC_GYRO_MAG_SI_XX 0x24
322#define LSM6DS3_ACC_GYRO_MAG_SI_XY 0x25
323#define LSM6DS3_ACC_GYRO_MAG_SI_XZ 0x26
324#define LSM6DS3_ACC_GYRO_MAG_SI_YX 0x27
325#define LSM6DS3_ACC_GYRO_MAG_SI_YY 0x28
326#define LSM6DS3_ACC_GYRO_MAG_SI_YZ 0x29
327#define LSM6DS3_ACC_GYRO_MAG_SI_ZX 0x2A
328#define LSM6DS3_ACC_GYRO_MAG_SI_ZY 0x2B
329#define LSM6DS3_ACC_GYRO_MAG_SI_ZZ 0x2C
330#define LSM6DS3_ACC_GYRO_MAG_OFFX_L 0x2D
331#define LSM6DS3_ACC_GYRO_MAG_OFFX_H 0x2E
332#define LSM6DS3_ACC_GYRO_MAG_OFFY_L 0x2F
333#define LSM6DS3_ACC_GYRO_MAG_OFFY_H 0x30
334#define LSM6DS3_ACC_GYRO_MAG_OFFZ_L 0x31
335#define LSM6DS3_ACC_GYRO_MAG_OFFZ_H 0x32
336
337/*******************************************************************************
338 Register : TEST_PAGE
339 Address : 0X00
340 Bit Group Name: FLASH_PAGE
341 Permission : RW
342*******************************************************************************/
343#define FLASH_PAGE 0x40
344
345/*******************************************************************************
346 Register : RAM_ACCESS
347 Address : 0X01
348 Bit Group Name: PROG_RAM1
349 Permission : RW
350*******************************************************************************/
351typedef enum
352{
353 LSM6DS3_ACC_GYRO_PROG_RAM1_DISABLED = 0x00,
354 LSM6DS3_ACC_GYRO_PROG_RAM1_ENABLED = 0x01,
355} LSM6DS3_ACC_GYRO_PROG_RAM1_t;
356
357/*******************************************************************************
358 Register : RAM_ACCESS
359 Address : 0X01
360 Bit Group Name: CUSTOMROM1
361 Permission : RW
362*******************************************************************************/
363typedef enum
364{
365 LSM6DS3_ACC_GYRO_CUSTOMROM1_DISABLED = 0x00,
366 LSM6DS3_ACC_GYRO_CUSTOMROM1_ENABLED = 0x04,
367} LSM6DS3_ACC_GYRO_CUSTOMROM1_t;
368
369/*******************************************************************************
370 Register : RAM_ACCESS
371 Address : 0X01
372 Bit Group Name: RAM_PAGE
373 Permission : RW
374*******************************************************************************/
375typedef enum
376{
377 LSM6DS3_ACC_GYRO_RAM_PAGE_DISABLED = 0x00,
378 LSM6DS3_ACC_GYRO_RAM_PAGE_ENABLED = 0x80,
379} LSM6DS3_ACC_GYRO_RAM_PAGE_t;
380
381/*******************************************************************************
382 Register : SENSOR_SYNC_TIME
383 Address : 0X04
384 Bit Group Name: TPH
385 Permission : RW
386*******************************************************************************/
387#define LSM6DS3_ACC_GYRO_TPH_MASK 0xFF
388#define LSM6DS3_ACC_GYRO_TPH_POSITION 0
389
390/*******************************************************************************
391 Register : SENSOR_SYNC_EN
392 Address : 0X05
393 Bit Group Name: SYNC_EN
394 Permission : RW
395*******************************************************************************/
396typedef enum
397{
398 LSM6DS3_ACC_GYRO_SYNC_EN_DISABLED = 0x00,
399 LSM6DS3_ACC_GYRO_SYNC_EN_ENABLED = 0x01,
400} LSM6DS3_ACC_GYRO_SYNC_EN_t;
401
402/*******************************************************************************
403 Register : SENSOR_SYNC_EN
404 Address : 0X05
405 Bit Group Name: HP_RST
406 Permission : RW
407*******************************************************************************/
408typedef enum
409{
410 LSM6DS3_ACC_GYRO_HP_RST_RST_OFF = 0x00,
411 LSM6DS3_ACC_GYRO_HP_RST_RST_ON = 0x02,
412} LSM6DS3_ACC_GYRO_HP_RST_t;
413
414/*******************************************************************************
415 Register : FIFO_CTRL1
416 Address : 0X06
417 Bit Group Name: WTM_FIFO
418 Permission : RW
419*******************************************************************************/
420#define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL1_MASK 0xFF
421#define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL1_POSITION 0
422#define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL2_MASK 0x0F
423#define LSM6DS3_ACC_GYRO_WTM_FIFO_CTRL2_POSITION 0
424
425/*******************************************************************************
426 Register : FIFO_CTRL2
427 Address : 0X07
428 Bit Group Name: TIM_PEDO_FIFO_DRDY
429 Permission : RW
430*******************************************************************************/
431typedef enum
432{
433 LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_DRDY_DISABLED = 0x00,
434 LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_DRDY_ENABLED = 0x40,
435} LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_DRDY_t;
436
437/*******************************************************************************
438 Register : FIFO_CTRL2
439 Address : 0X07
440 Bit Group Name: TIM_PEDO_FIFO_EN
441 Permission : RW
442*******************************************************************************/
443typedef enum
444{
445 LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_EN_DISABLED = 0x00,
446 LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_EN_ENABLED = 0x80,
447} LSM6DS3_ACC_GYRO_TIM_PEDO_FIFO_EN_t;
448
449/*******************************************************************************
450 Register : FIFO_CTRL3
451 Address : 0X08
452 Bit Group Name: DEC_FIFO_XL
453 Permission : RW
454*******************************************************************************/
455typedef enum
456{
457 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DATA_NOT_IN_FIFO = 0x00,
458 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_NO_DECIMATION = 0x01,
459 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_2 = 0x02,
460 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_3 = 0x03,
461 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_4 = 0x04,
462 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_8 = 0x05,
463 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_16 = 0x06,
464 LSM6DS3_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_32 = 0x07,
465} LSM6DS3_ACC_GYRO_DEC_FIFO_XL_t;
466
467/*******************************************************************************
468 Register : FIFO_CTRL3
469 Address : 0X08
470 Bit Group Name: DEC_FIFO_G
471 Permission : RW
472*******************************************************************************/
473typedef enum
474{
475 LSM6DS3_ACC_GYRO_DEC_FIFO_G_DATA_NOT_IN_FIFO = 0x00,
476 LSM6DS3_ACC_GYRO_DEC_FIFO_G_NO_DECIMATION = 0x08,
477 LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_2 = 0x10,
478 LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_3 = 0x18,
479 LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_4 = 0x20,
480 LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_8 = 0x28,
481 LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_16 = 0x30,
482 LSM6DS3_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_32 = 0x38,
483} LSM6DS3_ACC_GYRO_DEC_FIFO_G_t;
484
485/*******************************************************************************
486 Register : FIFO_CTRL4
487 Address : 0X09
488 Bit Group Name: DEC_FIFO_SLV0
489 Permission : RW
490*******************************************************************************/
491typedef enum
492{
493 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DATA_NOT_IN_FIFO = 0x00,
494 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_NO_DECIMATION = 0x01,
495 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_2 = 0x02,
496 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_3 = 0x03,
497 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_4 = 0x04,
498 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_8 = 0x05,
499 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_16 = 0x06,
500 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_DECIMATION_BY_32 = 0x07,
501} LSM6DS3_ACC_GYRO_DEC_FIFO_SLV0_t;
502
503/*******************************************************************************
504 Register : FIFO_CTRL4
505 Address : 0X09
506 Bit Group Name: DEC_FIFO_SLV1
507 Permission : RW
508*******************************************************************************/
509typedef enum
510{
511 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DATA_NOT_IN_FIFO = 0x00,
512 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_NO_DECIMATION = 0x08,
513 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_2 = 0x10,
514 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_3 = 0x18,
515 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_4 = 0x20,
516 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_8 = 0x28,
517 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_16 = 0x30,
518 LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_DECIMATION_BY_32 = 0x38,
519} LSM6DS3_ACC_GYRO_DEC_FIFO_SLV1_t;
520
521/*******************************************************************************
522 Register : FIFO_CTRL4
523 Address : 0X09
524 Bit Group Name: HI_DATA_ONLY
525 Permission : RW
526*******************************************************************************/
527typedef enum
528{
529 LSM6DS3_ACC_GYRO_HI_DATA_ONLY_DISABLED = 0x00,
530 LSM6DS3_ACC_GYRO_HI_DATA_ONLY_ENABLED = 0x40,
531} LSM6DS3_ACC_GYRO_HI_DATA_ONLY_t;
532
533/*******************************************************************************
534 Register : FIFO_CTRL5
535 Address : 0X0A
536 Bit Group Name: FIFO_MODE
537 Permission : RW
538*******************************************************************************/
539typedef enum
540{
541 LSM6DS3_ACC_GYRO_FIFO_MODE_BYPASS = 0x00,
542 LSM6DS3_ACC_GYRO_FIFO_MODE_FIFO = 0x01,
543 LSM6DS3_ACC_GYRO_FIFO_MODE_STF = 0x03,
544 LSM6DS3_ACC_GYRO_FIFO_MODE_BTS = 0x04,
545 LSM6DS3_ACC_GYRO_FIFO_MODE_DYN_STREAM = 0x06,
546} LSM6DS3_ACC_GYRO_FIFO_MODE_t;
547
548/*******************************************************************************
549 Register : FIFO_CTRL5
550 Address : 0X0A
551 Bit Group Name: ODR_FIFO
552 Permission : RW
553*******************************************************************************/
554typedef enum
555{
556 LSM6DS3_ACC_GYRO_ODR_FIFO_DISABLED = 0x00,
557 LSM6DS3_ACC_GYRO_ODR_FIFO_10Hz = 0x08,
558 LSM6DS3_ACC_GYRO_ODR_FIFO_25Hz = 0x10,
559 LSM6DS3_ACC_GYRO_ODR_FIFO_50Hz = 0x18,
560 LSM6DS3_ACC_GYRO_ODR_FIFO_100Hz = 0x20,
561 LSM6DS3_ACC_GYRO_ODR_FIFO_200Hz = 0x28,
562 LSM6DS3_ACC_GYRO_ODR_FIFO_400Hz = 0x30,
563 LSM6DS3_ACC_GYRO_ODR_FIFO_800Hz = 0x38,
564 LSM6DS3_ACC_GYRO_ODR_FIFO_1600Hz = 0x40,
565 LSM6DS3_ACC_GYRO_ODR_FIFO_3300Hz = 0x48,
566 LSM6DS3_ACC_GYRO_ODR_FIFO_6600Hz = 0x50,
567} LSM6DS3_ACC_GYRO_ODR_FIFO_t;
568
569/*******************************************************************************
570 Register : ORIENT_CFG_G
571 Address : 0X0B
572 Bit Group Name: ORIENT
573 Permission : RW
574*******************************************************************************/
575typedef enum
576{
577 LSM6DS3_ACC_GYRO_ORIENT_XYZ = 0x00,
578 LSM6DS3_ACC_GYRO_ORIENT_XZY = 0x01,
579 LSM6DS3_ACC_GYRO_ORIENT_YXZ = 0x02,
580 LSM6DS3_ACC_GYRO_ORIENT_YZX = 0x03,
581 LSM6DS3_ACC_GYRO_ORIENT_ZXY = 0x04,
582 LSM6DS3_ACC_GYRO_ORIENT_ZYX = 0x05,
583} LSM6DS3_ACC_GYRO_ORIENT_t;
584
585/*******************************************************************************
586 Register : ORIENT_CFG_G
587 Address : 0X0B
588 Bit Group Name: SIGN_Z_G
589 Permission : RW
590*******************************************************************************/
591typedef enum
592{
593 LSM6DS3_ACC_GYRO_SIGN_Z_G_POSITIVE = 0x00,
594 LSM6DS3_ACC_GYRO_SIGN_Z_G_NEGATIVE = 0x08,
595} LSM6DS3_ACC_GYRO_SIGN_Z_G_t;
596
597/*******************************************************************************
598 Register : ORIENT_CFG_G
599 Address : 0X0B
600 Bit Group Name: SIGN_Y_G
601 Permission : RW
602*******************************************************************************/
603typedef enum
604{
605 LSM6DS3_ACC_GYRO_SIGN_Y_G_POSITIVE = 0x00,
606 LSM6DS3_ACC_GYRO_SIGN_Y_G_NEGATIVE = 0x10,
607} LSM6DS3_ACC_GYRO_SIGN_Y_G_t;
608
609/*******************************************************************************
610 Register : ORIENT_CFG_G
611 Address : 0X0B
612 Bit Group Name: SIGN_X_G
613 Permission : RW
614*******************************************************************************/
615typedef enum
616{
617 LSM6DS3_ACC_GYRO_SIGN_X_G_POSITIVE = 0x00,
618 LSM6DS3_ACC_GYRO_SIGN_X_G_NEGATIVE = 0x20,
619} LSM6DS3_ACC_GYRO_SIGN_X_G_t;
620
621/*******************************************************************************
622 Register : REFERENCE_G
623 Address : 0X0C
624 Bit Group Name: REF_G
625 Permission : RW
626*******************************************************************************/
627#define LSM6DS3_ACC_GYRO_REF_G_MASK 0xFF
628#define LSM6DS3_ACC_GYRO_REF_G_POSITION 0
629
630/*******************************************************************************
631 Register : INT1_CTRL
632 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
633 Bit Group Name: INT1_DRDY_XL
634 Permission : RW
635 Comment : Accelerometer Data Ready on INT1 pad. Default value: 0
636*******************************************************************************/
637typedef enum
638{
639 LSM6DS3_ACC_GYRO_INT1_DRDY_XL_DISABLED = 0x00,
640 LSM6DS3_ACC_GYRO_INT1_DRDY_XL_ENABLED = 0x01,
641} LSM6DS3_ACC_GYRO_INT1_DRDY_XL_t;
642
643/*******************************************************************************
644 Register : INT1_CTRL
645 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
646 Bit Group Name: INT1_DRDY_G
647 Permission : RW
648 Comment : Gyroscope Data Ready on INT1 pad. Default value: 0
649*******************************************************************************/
650typedef enum
651{
652 LSM6DS3_ACC_GYRO_INT1_DRDY_G_DISABLED = 0x00,
653 LSM6DS3_ACC_GYRO_INT1_DRDY_G_ENABLED = 0x02,
654} LSM6DS3_ACC_GYRO_INT1_DRDY_G_t;
655
656/*******************************************************************************
657 Register : INT1_CTRL
658 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
659 Bit Group Name: INT1_BOOT
660 Permission : RW
661 Comment : Boot status available on INT1 pad. Default value: 0
662*******************************************************************************/
663typedef enum
664{
665 LSM6DS3_ACC_GYRO_INT1_BOOT_DISABLED = 0x00,
666 LSM6DS3_ACC_GYRO_INT1_BOOT_ENABLED = 0x04,
667} LSM6DS3_ACC_GYRO_INT1_BOOT_t;
668
669/*******************************************************************************
670 Register : INT1_CTRL
671 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
672 Bit Group Name: INT1_FTH
673 Permission : RW
674 Comment : FIFO threshold interrupt on INT1 pad. Default value: 0
675*******************************************************************************/
676typedef enum
677{
678 LSM6DS3_ACC_GYRO_INT1_FTH_DISABLED = 0x00,
679 LSM6DS3_ACC_GYRO_INT1_FTH_ENABLED = 0x08,
680} LSM6DS3_ACC_GYRO_INT1_FTH_t;
681
682/*******************************************************************************
683 Register : INT1_CTRL
684 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
685 Bit Group Name: INT1_OVR
686 Permission : RW
687 Comment : FIFO overrun interrupt on INT1 pad. Default value: 0
688*******************************************************************************/
689typedef enum
690{
691 LSM6DS3_ACC_GYRO_INT1_OVR_DISABLED = 0x00,
692 LSM6DS3_ACC_GYRO_INT1_OVR_ENABLED = 0x10,
693} LSM6DS3_ACC_GYRO_INT1_OVR_t;
694
695/*******************************************************************************
696 Register : INT1_CTRL
697 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
698 Bit Group Name: INT1_FSS5
699 Permission : RW
700 Comment : FIFO full flag interrupt enable on INT1 pad. Default value: 0
701*******************************************************************************/
702typedef enum
703{
704 LSM6DS3_ACC_GYRO_INT1_FULL_FLAG_DISABLED = 0x00,
705 LSM6DS3_ACC_GYRO_INT1_FULL_FLAG_ENABLED = 0x20,
706} LSM6DS3_ACC_GYRO_INT1_FULL_FLAG_t;
707
708/*******************************************************************************
709 Register : INT1_CTRL
710 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
711 Bit Group Name: INT1_SIGN_MOT
712 Permission : RW
713 Comment : Significant motion interrupt enable on INT1 pad. Default value: 0
714*******************************************************************************/
715typedef enum
716{
717 LSM6DS3_ACC_GYRO_INT1_SIGN_MOT_DISABLED = 0x00,
718 LSM6DS3_ACC_GYRO_INT1_SIGN_MOT_ENABLED = 0x40,
719} LSM6DS3_ACC_GYRO_INT1_SIGN_MOT_t;
720
721/*******************************************************************************
722 Register : INT1_CTRL
723 Address : LSM6DS3_ACC_GYRO_INT1_CTRL
724 Bit Group Name: INT1_PEDO
725 Permission : RW
726 Comment : Pedometer step recognition interrupt enable on INT1 pad. Default value: 0
727*******************************************************************************/
728typedef enum
729{
730 LSM6DS3_ACC_GYRO_INT1_PEDO_DISABLED = 0x00,
731 LSM6DS3_ACC_GYRO_INT1_PEDO_ENABLED = 0x80,
732} LSM6DS3_ACC_GYRO_INT1_PEDO_t;
733
734/*******************************************************************************
735 Register : INT2_CTRL
736 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
737 Bit Group Name: INT2_DRDY_XL
738 Permission : RW
739 Comment : Accelerometer Data Ready on INT2 pad. Default value: 0
740*******************************************************************************/
741typedef enum
742{
743 LSM6DS3_ACC_GYRO_INT2_DRDY_XL_DISABLED = 0x00,
744 LSM6DS3_ACC_GYRO_INT2_DRDY_XL_ENABLED = 0x01,
745} LSM6DS3_ACC_GYRO_INT2_DRDY_XL_t;
746
747/*******************************************************************************
748 Register : INT2_CTRL
749 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
750 Bit Group Name: INT2_DRDY_G
751 Permission : RW
752 Comment : Gyroscope Data Ready on INT2 pad. Default value: 0
753*******************************************************************************/
754typedef enum
755{
756 LSM6DS3_ACC_GYRO_INT2_DRDY_G_DISABLED = 0x00,
757 LSM6DS3_ACC_GYRO_INT2_DRDY_G_ENABLED = 0x02,
758} LSM6DS3_ACC_GYRO_INT2_DRDY_G_t;
759
760/*******************************************************************************
761 Register : INT2_CTRL
762 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
763 Bit Group Name: INT2_DRDY_TEMP
764 Permission : RW
765 Comment : Temperature Data Ready in INT2 pad. Default value: 0
766*******************************************************************************/
767typedef enum
768{
769 LSM6DS3_ACC_GYRO_INT2_DRDY_TEMP_DISABLED = 0x00,
770 LSM6DS3_ACC_GYRO_INT2_DRDY_TEMP_ENABLED = 0x04,
771} LSM6DS3_ACC_GYRO_INT2_DRDY_TEMP_t;
772
773/*******************************************************************************
774 Register : INT2_CTRL
775 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
776 Bit Group Name: INT2_FTH
777 Permission : RW
778 Comment : FIFO threshold interrupt on INT2 pad. Default value: 0
779*******************************************************************************/
780typedef enum
781{
782 LSM6DS3_ACC_GYRO_INT2_FTH_DISABLED = 0x00,
783 LSM6DS3_ACC_GYRO_INT2_FTH_ENABLED = 0x08,
784} LSM6DS3_ACC_GYRO_INT2_FTH_t;
785
786/*******************************************************************************
787 Register : INT2_CTRL
788 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
789 Bit Group Name: INT2_FIFO_OVR
790 Permission : RW
791 Comment : FIFO overrun interrupt on INT2 pad. Default value: 0
792*******************************************************************************/
793typedef enum
794{
795 LSM6DS3_ACC_GYRO_INT2_OVR_DISABLED = 0x00,
796 LSM6DS3_ACC_GYRO_INT2_OVR_ENABLED = 0x10,
797} LSM6DS3_ACC_GYRO_INT2_OVR_t;
798
799/*******************************************************************************
800 Register : INT2_CTRL
801 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
802 Bit Group Name: INT2_ FULL_FLAG
803 Permission : RW
804 Comment : FIFO full flag interrupt enable on INT2 pad. Default value: 0
805*******************************************************************************/
806typedef enum
807{
808 LSM6DS3_ACC_GYRO_INT2_FULL_FLAG_DISABLED = 0x00,
809 LSM6DS3_ACC_GYRO_INT2_FULL_FLAG_ENABLED = 0x20,
810} LSM6DS3_ACC_GYRO_INT2_FULL_FLAG_t;
811
812/*******************************************************************************
813 Register : INT2_CTRL
814 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
815 Bit Group Name: INT2_SIGN_MOT
816 Permission : RW
817 Comment : Step counter overflow interrupt enable on INT2 pad. Default value: 0
818*******************************************************************************/
819typedef enum
820{
821 LSM6DS3_ACC_GYRO_INT2_STEP_COUNT_OV_DISABLED = 0x00,
822 LSM6DS3_ACC_GYRO_INT2_STEP_COUNT_OV_ENABLED = 0x40,
823} LSM6DS3_ACC_GYRO_INT2_STEP_COUNT_OV_t;
824
825/*******************************************************************************
826 Register : INT2_CTRL
827 Address : LSM6DS3_ACC_GYRO_INT2_CTRL
828 Bit Group Name: INT2_STEP_DELTA
829 Permission : RW
830 Comment : Pedometer step recognition interrupt on delta time(1) enable on INT2 pad. Default value: 0
831*******************************************************************************/
832typedef enum
833{
834 LSM6DS3_ACC_GYRO_INT2_STEP_DELTA_DISABLED = 0x00,
835 LSM6DS3_ACC_GYRO_INT2_STEP_DELTA_ENABLED = 0x80,
836} LSM6DS3_ACC_GYRO_INT2_STEP_DELTA_t;
837
838/*******************************************************************************
839 Register : WHO_AM_I
840 Address : 0X0F
841 Bit Group Name: WHO_AM_I_BIT
842 Permission : RO
843*******************************************************************************/
844#define LSM6DS3_ACC_GYRO_WHO_AM_I_BIT_MASK 0xFF
845#define LSM6DS3_ACC_GYRO_WHO_AM_I_BIT_POSITION 0
846
847/*******************************************************************************
848 Register : CTRL1_XL
849 Address : LSM6DS3_ACC_GYRO_CTRL1_XL
850 Bit Group Name: BW_XL
851 Permission : RW
852 Comment : Anti-aliasing filter bandwidth selection. Default value: 00.
853 00: 400 Hz; 01: 200 Hz; 10: 100 Hz; 11: 50 Hz
854*******************************************************************************/
855typedef enum
856{
857 LSM6DS3_ACC_GYRO_BW_XL_400Hz = 0x00,
858 LSM6DS3_ACC_GYRO_BW_XL_200Hz = 0x01,
859 LSM6DS3_ACC_GYRO_BW_XL_100Hz = 0x02,
860 LSM6DS3_ACC_GYRO_BW_XL_50Hz = 0x03,
861} LSM6DS3_ACC_GYRO_BW_XL_t;
862
863/*******************************************************************************
864 Register : CTRL1_XL
865 Address : LSM6DS3_ACC_GYRO_CTRL1_XL
866 Bit Group Name: FS_XL
867 Permission : RW
868 Comment : Accelerometer full-scale selection. Default value: 00.
869 (00: ±2 g; 01: ±16 g; 10: ±4 g; 11: ±8 g)
870*******************************************************************************/
871typedef enum
872{
873 LSM6DS3_ACC_GYRO_FS_XL_2g = 0x00,
874 LSM6DS3_ACC_GYRO_FS_XL_16g = 0x04,
875 LSM6DS3_ACC_GYRO_FS_XL_4g = 0x08,
876 LSM6DS3_ACC_GYRO_FS_XL_8g = 0x0C,
877} LSM6DS3_ACC_GYRO_FS_XL_t;
878
879/*******************************************************************************
880 Register : CTRL1_XL
881 Address : LSM6DS3_ACC_GYRO_CTRL1_XL
882 Bit Group Name: ODR_XL
883 Permission : RW
884 Comment : Output data rate and power mode selection. Default value: 0000
885*******************************************************************************/
886typedef enum
887{
888 LSM6DS3_ACC_GYRO_ODR_XL_POWER_DOWN = 0x00,
889 LSM6DS3_ACC_GYRO_ODR_XL_13Hz = 0x10,
890 LSM6DS3_ACC_GYRO_ODR_XL_26Hz = 0x20,
891 LSM6DS3_ACC_GYRO_ODR_XL_52Hz = 0x30,
892 LSM6DS3_ACC_GYRO_ODR_XL_104Hz = 0x40,
893 LSM6DS3_ACC_GYRO_ODR_XL_208Hz = 0x50,
894 LSM6DS3_ACC_GYRO_ODR_XL_416Hz = 0x60,
895 LSM6DS3_ACC_GYRO_ODR_XL_833Hz = 0x70,
896 LSM6DS3_ACC_GYRO_ODR_XL_1660Hz = 0x80,
897 LSM6DS3_ACC_GYRO_ODR_XL_3330Hz = 0x90,
898 LSM6DS3_ACC_GYRO_ODR_XL_6660Hz = 0xA0,
899} LSM6DS3_ACC_GYRO_ODR_XL_t;
900
901/*******************************************************************************
902 Register : CTRL2_G
903 Address : 0X11
904 Bit Group Name: FS_125
905 Permission : RW
906 Comment : Gyroscope full-scale at 125 dps. Default value: 0
907*******************************************************************************/
908typedef enum
909{
910 LSM6DS3_ACC_GYRO_FS_125_DISABLED = 0x00,
911 LSM6DS3_ACC_GYRO_FS_125_ENABLED = 0x02,
912} LSM6DS3_ACC_GYRO_FS_125_t;
913
914/*******************************************************************************
915 Register : CTRL2_G
916 Address : 0X11
917 Bit Group Name: FS_G
918 Permission : RW
919 Comment : Gyroscope full-scale selection. Default value: 00
920*******************************************************************************/
921typedef enum
922{
923 LSM6DS3_ACC_GYRO_FS_G_245dps = 0x00,
924 LSM6DS3_ACC_GYRO_FS_G_500dps = 0x04,
925 LSM6DS3_ACC_GYRO_FS_G_1000dps = 0x08,
926 LSM6DS3_ACC_GYRO_FS_G_2000dps = 0x0C,
927} LSM6DS3_ACC_GYRO_FS_G_t;
928
929/*******************************************************************************
930 Register : CTRL2_G
931 Address : 0X11
932 Bit Group Name: ODR_G
933 Permission : RW
934 Comment : Gyroscope output data rate selection. Default value: 0000
935*******************************************************************************/
936typedef enum
937{
938 LSM6DS3_ACC_GYRO_ODR_G_POWER_DOWN = 0x00,
939 LSM6DS3_ACC_GYRO_ODR_G_13Hz = 0x10,
940 LSM6DS3_ACC_GYRO_ODR_G_26Hz = 0x20,
941 LSM6DS3_ACC_GYRO_ODR_G_52Hz = 0x30,
942 LSM6DS3_ACC_GYRO_ODR_G_104Hz = 0x40,
943 LSM6DS3_ACC_GYRO_ODR_G_208Hz = 0x50,
944 LSM6DS3_ACC_GYRO_ODR_G_416Hz = 0x60,
945 LSM6DS3_ACC_GYRO_ODR_G_833Hz = 0x70,
946 LSM6DS3_ACC_GYRO_ODR_G_1660Hz = 0x80,
947} LSM6DS3_ACC_GYRO_ODR_G_t;
948
949/*******************************************************************************
950 Register : CTRL3_C
951 Address : LSM6DS3_ACC_GYRO_CTRL3_C
952 Bit Group Name: SW_RESET
953 Permission : RW
954 Comment : Software reset. Default value: 0
955*******************************************************************************/
956typedef enum
957{
958 LSM6DS3_ACC_GYRO_SW_RESET_NORMAL_MODE = 0x00,
959 LSM6DS3_ACC_GYRO_SW_RESET_RESET_DEVICE = 0x01,
960} LSM6DS3_ACC_GYRO_SW_RESET_t;
961
962/*******************************************************************************
963 Register : CTRL3_C
964 Address : LSM6DS3_ACC_GYRO_CTRL3_C
965 Bit Group Name: BLE
966 Permission : RW
967 Comment : Big/Little Endian Data selection. Default value 0
968*******************************************************************************/
969typedef enum
970{
971 LSM6DS3_ACC_GYRO_BLE_LSB = 0x00,
972 LSM6DS3_ACC_GYRO_BLE_MSB = 0x02,
973} LSM6DS3_ACC_GYRO_BLE_t;
974
975/*******************************************************************************
976 Register : CTRL3_C
977 Address : LSM6DS3_ACC_GYRO_CTRL3_C
978 Bit Group Name: IF_INC
979 Permission : RW
980 Comment : Register address automatically incremented during a multiple byte access with a serial interface
981(I2C or SPI). Default value: 1
982*******************************************************************************/
983typedef enum
984{
985 LSM6DS3_ACC_GYRO_IF_INC_DISABLED = 0x00,
986 LSM6DS3_ACC_GYRO_IF_INC_ENABLED = 0x04,
987} LSM6DS3_ACC_GYRO_IF_INC_t;
988
989/*******************************************************************************
990 Register : CTRL3_C
991 Address : LSM6DS3_ACC_GYRO_CTRL3_C
992 Bit Group Name: SIM
993 Permission : RW
994 Comment : SPI Serial Interface Mode selection. Default value: 0
995*******************************************************************************/
996typedef enum
997{
998 LSM6DS3_ACC_GYRO_SIM_4_WIRE = 0x00,
999 LSM6DS3_ACC_GYRO_SIM_3_WIRE = 0x08,
1000} LSM6DS3_ACC_GYRO_SIM_t;
1001
1002/*******************************************************************************
1003 Register : CTRL3_C
1004 Address : LSM6DS3_ACC_GYRO_CTRL3_C
1005 Bit Group Name: PP_OD
1006 Permission : RW
1007 Comment : Push-pull/open-drain selection on INT1 and INT2 pads. Default value: 0
1008*******************************************************************************/
1009typedef enum
1010{
1011 LSM6DS3_ACC_GYRO_PP_OD_PUSH_PULL = 0x00,
1012 LSM6DS3_ACC_GYRO_PP_OD_OPEN_DRAIN = 0x10,
1013} LSM6DS3_ACC_GYRO_PP_OD_t;
1014
1015/*******************************************************************************
1016 Register : CTRL3_C
1017 Address : LSM6DS3_ACC_GYRO_CTRL3_C
1018 Bit Group Name: INT_ACT_LEVEL
1019 Permission : RW
1020 Comment : Interrupt activation level. Default value: 0
1021*******************************************************************************/
1022typedef enum
1023{
1024 LSM6DS3_ACC_GYRO_INT_ACT_LEVEL_ACTIVE_HI = 0x00,
1025 LSM6DS3_ACC_GYRO_INT_ACT_LEVEL_ACTIVE_LO = 0x20,
1026} LSM6DS3_ACC_GYRO_INT_ACT_LEVEL_t;
1027
1028/*******************************************************************************
1029 Register : CTRL3_C
1030 Address : LSM6DS3_ACC_GYRO_CTRL3_C
1031 Bit Group Name: BDU
1032 Permission : RW
1033 Comment : Block Data Update. Default value:
1034*******************************************************************************/
1035typedef enum
1036{
1037 LSM6DS3_ACC_GYRO_BDU_CONTINUOS = 0x00,
1038 LSM6DS3_ACC_GYRO_BDU_BLOCK_UPDATE = 0x40,
1039} LSM6DS3_ACC_GYRO_BDU_t;
1040
1041/*******************************************************************************
1042 Register : CTRL3_C
1043 Address : LSM6DS3_ACC_GYRO_CTRL3_C
1044 Bit Group Name: BOOT
1045 Permission : RW
1046 Comment : Reboot memory content. Default value: 0
1047*******************************************************************************/
1048typedef enum
1049{
1050 LSM6DS3_ACC_GYRO_BOOT_NORMAL_MODE = 0x00,
1051 LSM6DS3_ACC_GYRO_BOOT_REBOOT_MODE = 0x80,
1052} LSM6DS3_ACC_GYRO_BOOT_t;
1053
1054/*******************************************************************************
1055 Register : CTRL4_C
1056 Address : LSM6DS3_ACC_GYRO_CTRL4_C
1057 Bit Group Name: STOP_ON_FTH
1058 Permission : RW
1059 Comment : Enable FIFO threshold level use. Default value: 0
1060*******************************************************************************/
1061typedef enum
1062{
1063 LSM6DS3_ACC_GYRO_STOP_ON_FTH_DISABLED = 0x00,
1064 LSM6DS3_ACC_GYRO_STOP_ON_FTH_ENABLED = 0x01,
1065} LSM6DS3_ACC_GYRO_STOP_ON_FTH_t;
1066
1067/*******************************************************************************
1068 Register : CTRL4_C
1069 Address : LSM6DS3_ACC_GYRO_CTRL4_C
1070 Bit Group Name: I2C_DISABLE
1071 Permission : RW
1072 Comment : Disable I2C interface. Default value: 0
1073*******************************************************************************/
1074typedef enum
1075{
1076 LSM6DS3_ACC_GYRO_I2C_DISABLE_I2C_AND_SPI = 0x00,
1077 LSM6DS3_ACC_GYRO_I2C_DISABLE_SPI_ONLY = 0x04,
1078} LSM6DS3_ACC_GYRO_I2C_DISABLE_t;
1079
1080/*******************************************************************************
1081 Register : CTRL4_C
1082 Address : LSM6DS3_ACC_GYRO_CTRL4_C
1083 Bit Group Name: DRDY_MSK
1084 Permission : RW
1085 Comment : Data-ready mask enable. If enabled, when switching from Power-Down to an active mode, the
1086accelerometer and gyroscope data-ready signals are masked until the settling of the sensor filters is completed. Default
1087value: 0
1088*******************************************************************************/
1089typedef enum
1090{
1091 LSM6DS3_ACC_GYRO_DRDY_MSK_DISABLED = 0x00,
1092 LSM6DS3_ACC_GYRO_DRDY_MSK_ENABLED = 0x08,
1093} LSM6DS3_ACC_GYRO_DRDY_MSK_t;
1094
1095/*******************************************************************************
1096 Register : CTRL4_C
1097 Address : LSM6DS3_ACC_GYRO_CTRL4_C
1098 Bit Group Name: FIFO_TEMP_EN
1099 Permission : RW
1100 Comment : Enable temperature data as 4th FIFO data set(3). Default: 0
1101*******************************************************************************/
1102typedef enum
1103{
1104 LSM6DS3_ACC_GYRO_FIFO_TEMP_EN_DISABLED = 0x00,
1105 LSM6DS3_ACC_GYRO_FIFO_TEMP_EN_ENABLED = 0x10,
1106} LSM6DS3_ACC_GYRO_FIFO_TEMP_EN_t;
1107
1108/*******************************************************************************
1109 Register : CTRL4_C
1110 Address : LSM6DS3_ACC_GYRO_CTRL4_C
1111 Bit Group Name: INT2_ON_INT1
1112 Permission : RW
1113 Comment : All interrupt signals available on INT1 pad enable. Default value: 0
1114*******************************************************************************/
1115typedef enum
1116{
1117 LSM6DS3_ACC_GYRO_INT2_ON_INT1_DISABLED = 0x00,
1118 LSM6DS3_ACC_GYRO_INT2_ON_INT1_ENABLED = 0x20,
1119} LSM6DS3_ACC_GYRO_INT2_ON_INT1_t;
1120
1121/*******************************************************************************
1122 Register : CTRL4_C
1123 Address : LSM6DS3_ACC_GYRO_CTRL4_C
1124 Bit Group Name: SLEEP_G
1125 Permission : RW
1126 Comment : Gyroscope sleep mode enable. Default value: 0
1127*******************************************************************************/
1128typedef enum
1129{
1130 LSM6DS3_ACC_GYRO_SLEEP_G_DISABLED = 0x00,
1131 LSM6DS3_ACC_GYRO_SLEEP_G_ENABLED = 0x40,
1132} LSM6DS3_ACC_GYRO_SLEEP_G_t;
1133
1134/*******************************************************************************
1135 Register : CTRL4_C
1136 Address : LSM6DS3_ACC_GYRO_CTRL4_C
1137 Bit Group Name: BW_SCAL_ODR
1138 Permission : RW
1139 Comment : Accelerometer bandwidth selection. Default value: 0
1140 0: bandwidth determined by ODR selection, refer to Table 48;
1141 1: bandwidth determined by setting BW_XL[1:0] in CTRL1_XL (10h) regist
1142*******************************************************************************/
1143typedef enum
1144{
1145 LSM6DS3_ACC_GYRO_BW_SCAL_ODR_DISABLED = 0x00,
1146 LSM6DS3_ACC_GYRO_BW_SCAL_ODR_ENABLED = 0x80,
1147} LSM6DS3_ACC_GYRO_BW_SCAL_ODR_t;
1148
1149/*******************************************************************************
1150 Register : CTRL5_C
1151 Address : LSM6DS3_ACC_GYRO_CTRL5_C
1152 Bit Group Name: ST_XL
1153 Permission : RW
1154 Comment : Linear acceleration sensor self-test enable. Default value: 00
1155*******************************************************************************/
1156typedef enum
1157{
1158 LSM6DS3_ACC_GYRO_ST_XL_NORMAL_MODE = 0x00,
1159 LSM6DS3_ACC_GYRO_ST_XL_POS_SIGN_TEST = 0x01,
1160 LSM6DS3_ACC_GYRO_ST_XL_NEG_SIGN_TEST = 0x02,
1161 LSM6DS3_ACC_GYRO_ST_XL_NA = 0x03,
1162} LSM6DS3_ACC_GYRO_ST_XL_t;
1163
1164/*******************************************************************************
1165 Register : CTRL5_C
1166 Address : LSM6DS3_ACC_GYRO_CTRL5_C
1167 Bit Group Name: ST_G
1168 Permission : RW
1169 Comment : Angular rate sensor self-test enable. Default value: 00
1170*******************************************************************************/
1171typedef enum
1172{
1173 LSM6DS3_ACC_GYRO_ST_G_NORMAL_MODE = 0x00,
1174 LSM6DS3_ACC_GYRO_ST_G_POS_SIGN_TEST = 0x04,
1175 LSM6DS3_ACC_GYRO_ST_G_NA = 0x08,
1176 LSM6DS3_ACC_GYRO_ST_G_NEG_SIGN_TEST = 0x0C,
1177} LSM6DS3_ACC_GYRO_ST_G_t;
1178
1179/*******************************************************************************
1180 Register : CTRL5_C
1181 Address : LSM6DS3_ACC_GYRO_CTRL5_C
1182 Bit Group Name: ROUNDING
1183 Permission : RW
1184 Comment : Circular burst-mode (rounding) read from output registers. Default: 000
1185*******************************************************************************/
1186typedef enum
1187{
1188 LSM6DS3_ACC_GYRO_ROUNDING_NONE = 0x00,
1189 LSM6DS3_ACC_GYRO_ROUNDING_ACCEL = 0x20,
1190 LSM6DS3_ACC_GYRO_ROUNDING_GYRO = 0x40,
1191 LSM6DS3_ACC_GYRO_ROUNDING_GYRO_ACCEL = 0x60,
1192 // Registers from SENSORHUB1_REG (2Eh) to SENSORHUB6_REG (33h) only
1193 LSM6DS3_ACC_GYRO_ROUNDING_REG_SENSORHUB = 0x80,
1194 // Accelerometer + registers from SENSORHUB1_REG (2Eh) to SENSORHUB6_REG (33h)
1195 LSM6DS3_ACC_GYRO_ROUNDING_ACCEL_REG_SENSORHUB = 0xA0,
1196 // Gyroscope + accelerometer + registers from SENSORHUB1_REG (2Eh) to SENSORHUB6_REG (33h) and registers from
1197 // SENSORHUB7_REG (34h) to SENSORHUB12_REG(39h)
1198 LSM6DS3_ACC_GYRO_ROUNDING_GYRO_REG_SENSORHUB = 0xC0,
1199 // Gyroscope + accelerometer + registers from SENSORHUB1_REG (2Eh) to SENSORHUB6_REG (33h)
1200 LSM6DS3_ACC_GYRO_ROUNDING_ACCEL_GYRO_REG_SENSORHUB = 0xE0,
1201} LSM6DS3_ACC_GYRO_ROUNDING_t;
1202
1203/*******************************************************************************
1204 Register : CTRL6_C
1205 Address : LSM6DS3_ACC_GYRO_CTRL6_C
1206 Bit Group Name: XL_HM_MODE
1207 Permission : RW
1208 Comment : High-performance operating mode disable for accelerometer(1). Default value: 0
1209*******************************************************************************/
1210typedef enum
1211{
1212 LSM6DS3_ACC_GYRO_XL_HM_MODE_DISABLED = 0x00,
1213 LSM6DS3_ACC_GYRO_XL_HM_MODE_ENABLED = 0x10,
1214} LSM6DS3_ACC_GYRO_XL_HM_MODE_t;
1215
1216/*******************************************************************************
1217 Register : CTRL6_C
1218 Address : LSM6DS3_ACC_GYRO_CTRL6_C
1219 Bit Group Name: LVL2_EN
1220 Permission : RW
1221 Comment : Gyroscope level-sensitive latched enable. Default value: 0
1222*******************************************************************************/
1223typedef enum
1224{
1225 LSM6DS3_ACC_GYRO_LVL2_EN_DISABLED = 0x00,
1226 LSM6DS3_ACC_GYRO_LVL2_EN_ENABLED = 0x20,
1227} LSM6DS3_ACC_GYRO_LVL2_EN_t;
1228
1229/*******************************************************************************
1230 Register : CTRL6_C
1231 Address : LSM6DS3_ACC_GYRO_CTRL6_C
1232 Bit Group Name: LVL_EN
1233 Permission : RW
1234 Comment : Gyroscope data level-sensitive trigger enable. Default value: 0
1235*******************************************************************************/
1236typedef enum
1237{
1238 LSM6DS3_ACC_GYRO_LVL_EN_DISABLED = 0x00,
1239 LSM6DS3_ACC_GYRO_LVL_EN_ENABLED = 0x40,
1240} LSM6DS3_ACC_GYRO_LVL_EN_t;
1241
1242/*******************************************************************************
1243 Register : CTRL6_C
1244 Address : LSM6DS3_ACC_GYRO_CTRL6_C
1245 Bit Group Name: TRIG_EN
1246 Permission : RW
1247 Comment : Gyroscope data edge-sensitive trigger enable. Default value: 0
1248*******************************************************************************/
1249typedef enum
1250{
1251 LSM6DS3_ACC_GYRO_TRIG_EN_DISABLED = 0x00,
1252 LSM6DS3_ACC_GYRO_TRIG_EN_ENABLED = 0x80,
1253} LSM6DS3_ACC_GYRO_TRIG_EN_t;
1254
1255/*******************************************************************************
1256 Register : CTRL7_G
1257 Address : LSM6DS3_ACC_GYRO_CTRL7_G
1258 Bit Group Name: ROUNDING_STATUS
1259 Permission : RW
1260 Comment : Source register rounding function enable on STATUS_REG (1Eh), FUNC_SRC (53h) and WAKE_UP_SRC (1Bh)
1261registers. Default value: 0
1262*******************************************************************************/
1263typedef enum
1264{
1265 LSM6DS3_ACC_GYRO_ROUNDING_STATUS_DISABLED = 0x00,
1266 LSM6DS3_ACC_GYRO_ROUNDING_STATUS_ENABLED = 0x04,
1267} LSM6DS3_ACC_GYRO_ROUNDING_STATUS_t;
1268
1269/*******************************************************************************
1270 Register : CTRL7_G
1271 Address : LSM6DS3_ACC_GYRO_CTRL7_G
1272 Bit Group Name: HP_G_RST
1273 Permission : RW
1274 Comment : Gyro digital HP filter reset. Default: 0
1275*******************************************************************************/
1276typedef enum
1277{
1278 LSM6DS3_ACC_GYRO_HP_G_RST_DISABLED = 0x00,
1279 LSM6DS3_ACC_GYRO_HP_G_RST_ENABLED = 0x08,
1280} LSM6DS3_ACC_GYRO_HP_G_RST_t;
1281
1282/*******************************************************************************
1283 Register : CTRL7_G
1284 Address : LSM6DS3_ACC_GYRO_CTRL7_G
1285 Bit Group Name: HPCF_G
1286 Permission : RW
1287 Comment : Gyroscope high-pass filter cutoff frequency selection. Default value: 00.
1288*******************************************************************************/
1289typedef enum
1290{
1291 LSM6DS3_ACC_GYRO_HPCF_G_0_0081HZ = 0x00,
1292 LSM6DS3_ACC_GYRO_HPCF_G_0_0324HZ = 0x10,
1293 LSM6DS3_ACC_GYRO_HPCF_G_2_0700HZ = 0x20,
1294 LSM6DS3_ACC_GYRO_HPCF_G_16_320HZ = 0x30,
1295} LSM6DS3_ACC_GYRO_HPCF_G_t;
1296
1297/*******************************************************************************
1298 Register : CTRL7_G
1299 Address : LSM6DS3_ACC_GYRO_CTRL7_G
1300 Bit Group Name: HP_G_EN
1301 Permission : RW
1302 Comment : Gyroscope digital high-pass filter enable. The filter is enabled only if the gyro is in HP mode.
1303Default value: 0
1304*******************************************************************************/
1305typedef enum
1306{
1307 LSM6DS3_ACC_GYRO_HPG_EN_DISABLED = 0x00,
1308 LSM6DS3_ACC_GYRO_HPG_EN_ENABLED = 0x40,
1309} LSM6DS3_ACC_GYRO_HPG_EN_t;
1310
1311/*******************************************************************************
1312 Register : CTRL7_G
1313 Address : LSM6DS3_ACC_GYRO_CTRL7_G
1314 Bit Group Name: G_HM_MODE
1315 Permission : RW
1316 Comment : High-performance operating mode disable for gyroscope. Default: 0
1317*******************************************************************************/
1318typedef enum
1319{
1320 LSM6DS3_ACC_GYRO_G_HM_MODE_DISABLED = 0x00,
1321 LSM6DS3_ACC_GYRO_G_HM_MODE_ENABLED = 0x80,
1322} LSM6DS3_ACC_GYRO_G_HM_MODE_t;
1323
1324/*******************************************************************************
1325 Register : CTRL8_XL
1326 Address : LSM6DS3_ACC_GYRO_CTRL8_XL
1327 Bit Group Name: LOW_PASS_ON_6D
1328 Permission : RW
1329 Comment : Low-pass filter on 6D function selection.
1330*******************************************************************************/
1331typedef enum
1332{
1333 LSM6DS3_ACC_GYRO_LOW_PASS_ON_6D_OFF = 0x00,
1334 LSM6DS3_ACC_GYRO_LOW_PASS_ON_6D_ON = 0x01,
1335} LSM6DS3_ACC_GYRO_LOW_PASS_ON_6D_t;
1336
1337/*******************************************************************************
1338 Register : CTRL8_XL
1339 Address : LSM6DS3_ACC_GYRO_CTRL8_XL
1340 Bit Group Name: HP_SLOPE_XL_EN
1341 Permission : RW
1342 Comment : Accelerometer slope filter / high-pass filter selection
1343*******************************************************************************/
1344typedef enum
1345{
1346 LSM6DS3_ACC_GYRO_HP_SLOPE_XL_EN_DISABLED = 0x00,
1347 LSM6DS3_ACC_GYRO_HP_SLOPE_XL_EN_ENABLED = 0x04,
1348} LSM6DS3_ACC_GYRO_HP_SLOPE_XL_EN_t;
1349
1350/*******************************************************************************
1351 Register : CTRL8_XL
1352 Address : LSM6DS3_ACC_GYRO_CTRL8_XL
1353 Bit Group Name: HPCF_XL
1354 Permission : RW
1355 Comment : Accelerometer slope filter and high-pass filter configuration and cutoff setting. Refer to Table 68.
1356It is also used to select the cutoff frequency of the LPF2 filter, as shown in Table 69. This low-pass filter can also
1357be used in the 6D/4D functionality by setting the LOW_PASS_ON_6D bit of CTRL8_XL (17h) to 1.
1358*******************************************************************************/
1359typedef enum
1360{
1361 // ODR_XL/4
1362 LSM6DS3_ACC_GYRO_HPCF_XL_SLOPE = 0x00,
1363 // ODR_XL/100
1364 LSM6DS3_ACC_GYRO_HPCF_XL_GP_100 = 0x20,
1365 // ODR_XL/9
1366 LSM6DS3_ACC_GYRO_HPCF_XL_GP_9 = 0x40,
1367 // ODR_XL/400
1368 LSM6DS3_ACC_GYRO_HPCF_XL_GP_400 = 0x60,
1369} LSM6DS3_ACC_GYRO_HPCF_XL_t;
1370
1371/*******************************************************************************
1372 Register : CTRL8_XL
1373 Address : LSM6DS3_ACC_GYRO_CTRL8_XL
1374 Bit Group Name: LPF2_XL_EN
1375 Permission : RW
1376 Comment : Accelerometer low-pass filter LPF2 selection. Refer to Figure 6.
1377*******************************************************************************/
1378typedef enum
1379{
1380 LSM6DS3_ACC_GYRO_LPF2_XL_EN_DISABLED = 0x00,
1381 LSM6DS3_ACC_GYRO_LPF2_XL_EN_ENABLED = 0x80,
1382} LSM6DS3_ACC_GYRO_LPF2_XL_EN_t;
1383
1384/*******************************************************************************
1385 Register : CTRL9_XL
1386 Address : LSM6DS3_ACC_GYRO_CTRL9_XL
1387 Bit Group Name: SOFT_EN
1388 Permission : RW
1389 Comment : Enable soft-iron correction algorithm for magnetometer(1). Default value: 0
1390*******************************************************************************/
1391typedef enum
1392{
1393 LSM6DS3_ACC_GYRO_SOFT_EN_DISABLED = 0x00,
1394 LSM6DS3_ACC_GYRO_SOFT_EN_ENABLED = 0x04,
1395} LSM6DS3_ACC_GYRO_SOFT_EN_t;
1396
1397/*******************************************************************************
1398 Register : CTRL9_XL
1399 Address : LSM6DS3_ACC_GYRO_CTRL9_XL
1400 Bit Group Name: XEN_XL
1401 Permission : RW
1402 Comment : Accelerometer X-axis output enable. Default value: 1
1403*******************************************************************************/
1404typedef enum
1405{
1406 LSM6DS3_ACC_GYRO_XEN_XL_DISABLED = 0x00,
1407 LSM6DS3_ACC_GYRO_XEN_XL_ENABLED = 0x08,
1408} LSM6DS3_ACC_GYRO_XEN_XL_t;
1409
1410/*******************************************************************************
1411 Register : CTRL9_XL
1412 Address : LSM6DS3_ACC_GYRO_CTRL9_XL
1413 Bit Group Name: YEN_XL
1414 Permission : RW
1415 Comment : Accelerometer Y-axis output enable. Default value: 1
1416*******************************************************************************/
1417typedef enum
1418{
1419 LSM6DS3_ACC_GYRO_YEN_XL_DISABLED = 0x00,
1420 LSM6DS3_ACC_GYRO_YEN_XL_ENABLED = 0x10,
1421} LSM6DS3_ACC_GYRO_YEN_XL_t;
1422
1423/*******************************************************************************
1424 Register : CTRL9_XL
1425 Address : LSM6DS3_ACC_GYRO_CTRL9_XL
1426 Bit Group Name: ZEN_XL
1427 Permission : RW
1428 Comment : Accelerometer Z-axis output enable. Default value: 1
1429*******************************************************************************/
1430typedef enum
1431{
1432 LSM6DS3_ACC_GYRO_ZEN_XL_DISABLED = 0x00,
1433 LSM6DS3_ACC_GYRO_ZEN_XL_ENABLED = 0x20,
1434} LSM6DS3_ACC_GYRO_ZEN_XL_t;
1435
1436/*******************************************************************************
1437 Register : CTRL10_C
1438 Address : LSM6DS3_ACC_GYRO_CTRL10_C
1439 Bit Group Name: SIGN_MOTION_EN
1440 Permission : RW
1441 Comment : Enable significant motion function. Default value: 0
1442*******************************************************************************/
1443typedef enum
1444{
1445 LSM6DS3_ACC_GYRO_SIGN_MOTION_EN_DISABLED = 0x00,
1446 LSM6DS3_ACC_GYRO_SIGN_MOTION_EN_ENABLED = 0x01,
1447} LSM6DS3_ACC_GYRO_SIGN_MOTION_EN_t;
1448
1449/*******************************************************************************
1450 Register : CTRL10_C
1451 Address : LSM6DS3_ACC_GYRO_CTRL10_C
1452 Bit Group Name: PEDO_RST_STEP
1453 Permission : RW
1454 Comment : Reset pedometer step counter. Default value:
1455*******************************************************************************/
1456typedef enum
1457{
1458 LSM6DS3_ACC_GYRO_PEDO_RST_STEP_DISABLED = 0x00,
1459 LSM6DS3_ACC_GYRO_PEDO_RST_STEP_ENABLED = 0x02,
1460} LSM6DS3_ACC_GYRO_PEDO_RST_STEP_t;
1461
1462/*******************************************************************************
1463 Register : CTRL10_C
1464 Address : LSM6DS3_ACC_GYRO_CTRL10_C
1465 Bit Group Name: FUNC_EN
1466 Permission : RW
1467 Comment : Enable embedded functionalities (pedometer, tilt, significant motion, sensor hub and ironing) and
1468accelerometer HP and LPF2 filters (refer to Figure 6). Default value: 0
1469*******************************************************************************/
1470typedef enum
1471{
1472 LSM6DS3_ACC_GYRO_FUNC_EN_DISABLED = 0x00,
1473 LSM6DS3_ACC_GYRO_FUNC_EN_ENABLED = 0x04,
1474} LSM6DS3_ACC_GYRO_FUNC_EN_t;
1475
1476/*******************************************************************************
1477 Register : CTRL10_C
1478 Address : LSM6DS3_ACC_GYRO_CTRL10_C
1479 Bit Group Name: XEN_G
1480 Permission : RW
1481 Comment : Gyroscope pitch axis (X) output enable. Default value: 1
1482*******************************************************************************/
1483typedef enum
1484{
1485 LSM6DS3_ACC_GYRO_XEN_G_DISABLED = 0x00,
1486 LSM6DS3_ACC_GYRO_XEN_G_ENABLED = 0x08,
1487} LSM6DS3_ACC_GYRO_XEN_G_t;
1488
1489/*******************************************************************************
1490 Register : CTRL10_C
1491 Address : LSM6DS3_ACC_GYRO_CTRL10_C
1492 Bit Group Name: YEN_G
1493 Permission : RW
1494 Comment : Gyroscope roll axis (Y) output enable. Default value: 1
1495*******************************************************************************/
1496typedef enum
1497{
1498 LSM6DS3_ACC_GYRO_YEN_G_DISABLED = 0x00,
1499 LSM6DS3_ACC_GYRO_YEN_G_ENABLED = 0x10,
1500} LSM6DS3_ACC_GYRO_YEN_G_t;
1501
1502/*******************************************************************************
1503 Register : CTRL10_C
1504 Address : LSM6DS3_ACC_GYRO_CTRL10_C
1505 Bit Group Name: ZEN_G
1506 Permission : RW
1507 Comment : Gyroscope yaw axis (Z) output enable. Default value: 1
1508*******************************************************************************/
1509typedef enum
1510{
1511 LSM6DS3_ACC_GYRO_ZEN_G_DISABLED = 0x00,
1512 LSM6DS3_ACC_GYRO_ZEN_G_ENABLED = 0x20,
1513} LSM6DS3_ACC_GYRO_ZEN_G_t;
1514
1515/*******************************************************************************
1516 Register : MASTER_CONFIG
1517 Address : LSM6DS3_ACC_GYRO_MASTER_CONFIG
1518 Bit Group Name: MASTER_ON
1519 Permission : RW
1520 Comment : Sensor hub I2C master enable. Default: 0
1521 (0: master I2C of sensor hub disabled; 1: master I2C of sensor hub enabled)
1522*******************************************************************************/
1523typedef enum
1524{
1525 LSM6DS3_ACC_GYRO_MASTER_ON_DISABLED = 0x00,
1526 LSM6DS3_ACC_GYRO_MASTER_ON_ENABLED = 0x01,
1527} LSM6DS3_ACC_GYRO_MASTER_ON_t;
1528
1529/*******************************************************************************
1530 Register : MASTER_CONFIG
1531 Address : LSM6DS3_ACC_GYRO_MASTER_CONFIG
1532 Bit Group Name: IRON_EN
1533 Permission : RW
1534 Comment : Enable hard-iron correction algorithm for magnetometer. Default value: 0
1535*******************************************************************************/
1536typedef enum
1537{
1538 LSM6DS3_ACC_GYRO_IRON_EN_DISABLED = 0x00,
1539 LSM6DS3_ACC_GYRO_IRON_EN_ENABLED = 0x02,
1540} LSM6DS3_ACC_GYRO_IRON_EN_t;
1541
1542/*******************************************************************************
1543 Register : MASTER_CONFIG
1544 Address : LSM6DS3_ACC_GYRO_MASTER_CONFIG
1545 Bit Group Name: PASS_THRU_MODE
1546 Permission : RW
1547 Comment : I2C interface pass-through. Default value: 0
1548*******************************************************************************/
1549typedef enum
1550{
1551 LSM6DS3_ACC_GYRO_PASS_THRU_MODE_DISABLED = 0x00,
1552 LSM6DS3_ACC_GYRO_PASS_THRU_MODE_ENABLED = 0x04,
1553} LSM6DS3_ACC_GYRO_PASS_THRU_MODE_t;
1554
1555/*******************************************************************************
1556 Register : MASTER_CONFIG
1557 Address : LSM6DS3_ACC_GYRO_MASTER_CONFIG
1558 Bit Group Name: PULL_UP_EN
1559 Permission : RW
1560 Comment : Auxiliary I2C pull-up. Default value: 0
1561*******************************************************************************/
1562typedef enum
1563{
1564 LSM6DS3_ACC_GYRO_PULL_UP_EN_DISABLED = 0x00,
1565 LSM6DS3_ACC_GYRO_PULL_UP_EN_ENABLED = 0x08,
1566} LSM6DS3_ACC_GYRO_PULL_UP_EN_t;
1567
1568/*******************************************************************************
1569 Register : MASTER_CONFIG
1570 Address : LSM6DS3_ACC_GYRO_MASTER_CONFIG
1571 Bit Group Name: START_CONFIG
1572 Permission : RW
1573 Comment : Sensor Hub trigger signal selection. Default valu
1574*******************************************************************************/
1575typedef enum
1576{
1577 LSM6DS3_ACC_GYRO_START_CONFIG_XL_G_DRDY = 0x00,
1578 LSM6DS3_ACC_GYRO_START_CONFIG_EXT_INT2 = 0x10,
1579} LSM6DS3_ACC_GYRO_START_CONFIG_t;
1580
1581/*******************************************************************************
1582 Register : MASTER_CONFIG
1583 Address : LSM6DS3_ACC_GYRO_MASTER_CONFIG
1584 Bit Group Name: DATA_VAL_SEL_FIFO
1585 Permission : RW
1586 Comment : Selection of FIFO data-valid signal. Default value: 0
1587*******************************************************************************/
1588typedef enum
1589{
1590 LSM6DS3_ACC_GYRO_DATA_VAL_SEL_FIFO_XL_G_DRDY = 0x00,
1591 LSM6DS3_ACC_GYRO_DATA_VAL_SEL_FIFO_SHUB_DRDY = 0x40,
1592} LSM6DS3_ACC_GYRO_DATA_VAL_SEL_FIFO_t;
1593
1594/*******************************************************************************
1595 Register : MASTER_CONFIG
1596 Address : LSM6DS3_ACC_GYRO_MASTER_CONFIG
1597 Bit Group Name: DRDY_ON_INT1
1598 Permission : RW
1599 Comment : Manage the Master DRDY signal on INT1 pad. Default: 0
1600*******************************************************************************/
1601typedef enum
1602{
1603 LSM6DS3_ACC_GYRO_DRDY_ON_INT1_DISABLED = 0x00,
1604 LSM6DS3_ACC_GYRO_DRDY_ON_INT1_ENABLED = 0x80,
1605} LSM6DS3_ACC_GYRO_DRDY_ON_INT1_t;
1606
1607/*******************************************************************************
1608 Register : WAKE_UP_SRC
1609 Address : LSM6DS3_ACC_GYRO_WAKE_UP_SRC
1610 Bit Group Name: Z_WU
1611 Permission : RO
1612 Comment : Wakeup event detection status on Z-axis. Default value: 0
1613*******************************************************************************/
1614typedef enum
1615{
1616 LSM6DS3_ACC_GYRO_Z_WU_NOT_DETECTED = 0x00,
1617 LSM6DS3_ACC_GYRO_Z_WU_DETECTED = 0x01,
1618} LSM6DS3_ACC_GYRO_Z_WU_t;
1619
1620/*******************************************************************************
1621 Register : WAKE_UP_SRC
1622 Address : LSM6DS3_ACC_GYRO_WAKE_UP_SRC
1623 Bit Group Name: Y_WU
1624 Permission : RO
1625 Comment : Wakeup event detection status on Y-axis. Default value: 0
1626*******************************************************************************/
1627typedef enum
1628{
1629 LSM6DS3_ACC_GYRO_Y_WU_NOT_DETECTED = 0x00,
1630 LSM6DS3_ACC_GYRO_Y_WU_DETECTED = 0x02,
1631} LSM6DS3_ACC_GYRO_Y_WU_t;
1632
1633/*******************************************************************************
1634 Register : WAKE_UP_SRC
1635 Address : LSM6DS3_ACC_GYRO_WAKE_UP_SRC
1636 Bit Group Name: X_WU
1637 Permission : RO
1638 Comment : Wakeup event detection status on X-axis. Default value: 0
1639*******************************************************************************/
1640typedef enum
1641{
1642 LSM6DS3_ACC_GYRO_X_WU_NOT_DETECTED = 0x00,
1643 LSM6DS3_ACC_GYRO_X_WU_DETECTED = 0x04,
1644} LSM6DS3_ACC_GYRO_X_WU_t;
1645
1646/*******************************************************************************
1647 Register : WAKE_UP_SRC
1648 Address : LSM6DS3_ACC_GYRO_WAKE_UP_SRC
1649 Bit Group Name: WU_EV_STATUS
1650 Permission : RO
1651 Comment : Wakeup event detection status. Default value: 0
1652*******************************************************************************/
1653typedef enum
1654{
1655 LSM6DS3_ACC_GYRO_WU_EV_STATUS_NOT_DETECTED = 0x00,
1656 LSM6DS3_ACC_GYRO_WU_EV_STATUS_DETECTED = 0x08,
1657} LSM6DS3_ACC_GYRO_WU_EV_STATUS_t;
1658
1659/*******************************************************************************
1660 Register : WAKE_UP_SRC
1661 Address : LSM6DS3_ACC_GYRO_WAKE_UP_SRC
1662 Bit Group Name: SLEEP_EV_STATUS
1663 Permission : RO
1664 Comment : Sleep event status. Default value: 0
1665*******************************************************************************/
1666typedef enum
1667{
1668 LSM6DS3_ACC_GYRO_SLEEP_EV_STATUS_NOT_DETECTED = 0x00,
1669 LSM6DS3_ACC_GYRO_SLEEP_EV_STATUS_DETECTED = 0x10,
1670} LSM6DS3_ACC_GYRO_SLEEP_EV_STATUS_t;
1671
1672/*******************************************************************************
1673 Register : WAKE_UP_SRC
1674 Address : LSM6DS3_ACC_GYRO_WAKE_UP_SRC
1675 Bit Group Name: FF_EV_STATUS
1676 Permission : RO
1677 Comment : Free-fall event detection status. Default: 0
1678*******************************************************************************/
1679typedef enum
1680{
1681 LSM6DS3_ACC_GYRO_FF_EV_STATUS_NOT_DETECTED = 0x00,
1682 LSM6DS3_ACC_GYRO_FF_EV_STATUS_DETECTED = 0x20,
1683} LSM6DS3_ACC_GYRO_FF_EV_STATUS_t;
1684
1685/*******************************************************************************
1686 Register : TAP_SRC
1687 Address : LSM6DS3_ACC_GYRO_TAP_SRC
1688 Bit Group Name: Z_TAP
1689 Permission : RO
1690 Comment : Tap event detection status on Z-axis. Default value: 0
1691*******************************************************************************/
1692typedef enum
1693{
1694 LSM6DS3_ACC_GYRO_Z_TAP_NOT_DETECTED = 0x00,
1695 LSM6DS3_ACC_GYRO_Z_TAP_DETECTED = 0x01,
1696} LSM6DS3_ACC_GYRO_Z_TAP_t;
1697
1698/*******************************************************************************
1699 Register : TAP_SRC
1700 Address : LSM6DS3_ACC_GYRO_TAP_SRC
1701 Bit Group Name: Y_TAP
1702 Permission : RO
1703 Comment : Tap event detection status on Y-axis. Default value: 0
1704*******************************************************************************/
1705typedef enum
1706{
1707 LSM6DS3_ACC_GYRO_Y_TAP_NOT_DETECTED = 0x00,
1708 LSM6DS3_ACC_GYRO_Y_TAP_DETECTED = 0x02,
1709} LSM6DS3_ACC_GYRO_Y_TAP_t;
1710
1711/*******************************************************************************
1712 Register : TAP_SRC
1713 Address : LSM6DS3_ACC_GYRO_TAP_SRC
1714 Bit Group Name: X_TAP
1715 Permission : RO
1716 Comment : Tap event detection status on X-axis. Default value: 0
1717*******************************************************************************/
1718typedef enum
1719{
1720 LSM6DS3_ACC_GYRO_X_TAP_NOT_DETECTED = 0x00,
1721 LSM6DS3_ACC_GYRO_X_TAP_DETECTED = 0x04,
1722} LSM6DS3_ACC_GYRO_X_TAP_t;
1723
1724/*******************************************************************************
1725 Register : TAP_SRC
1726 Address : LSM6DS3_ACC_GYRO_TAP_SRC
1727 Bit Group Name: TAP_SIGN
1728 Permission : RO
1729 Comment : Sign of acceleration detected by tap event. Default: 0
1730*******************************************************************************/
1731typedef enum
1732{
1733 LSM6DS3_ACC_GYRO_TAP_SIGN_POS_SIGN = 0x00,
1734 LSM6DS3_ACC_GYRO_TAP_SIGN_NEG_SIGN = 0x08,
1735} LSM6DS3_ACC_GYRO_TAP_SIGN_t;
1736
1737/*******************************************************************************
1738 Register : TAP_SRC
1739 Address : LSM6DS3_ACC_GYRO_TAP_SRC
1740 Bit Group Name: DOUBLE_TAP_EV_STATUS
1741 Permission : RO
1742 Comment : Double-tap event detection status. Default value: 0
1743*******************************************************************************/
1744typedef enum
1745{
1746 LSM6DS3_ACC_GYRO_DOUBLE_TAP_EV_STATUS_NOT_DETECTED = 0x00,
1747 LSM6DS3_ACC_GYRO_DOUBLE_TAP_EV_STATUS_DETECTED = 0x10,
1748} LSM6DS3_ACC_GYRO_DOUBLE_TAP_EV_STATUS_t;
1749
1750/*******************************************************************************
1751 Register : TAP_SRC
1752 Address : LSM6DS3_ACC_GYRO_TAP_SRC
1753 Bit Group Name: SINGLE_TAP_EV_STATUS
1754 Permission : RO
1755 Comment : Single-tap event status. Default value: 0
1756*******************************************************************************/
1757typedef enum
1758{
1759 LSM6DS3_ACC_GYRO_SINGLE_TAP_EV_STATUS_NOT_DETECTED = 0x00,
1760 LSM6DS3_ACC_GYRO_SINGLE_TAP_EV_STATUS_DETECTED = 0x20,
1761} LSM6DS3_ACC_GYRO_SINGLE_TAP_EV_STATUS_t;
1762
1763/*******************************************************************************
1764 Register : TAP_SRC
1765 Address : LSM6DS3_ACC_GYRO_TAP_SRC
1766 Bit Group Name: TAP_EV_STATUS
1767 Permission : RO
1768 Comment : Tap event detection status. Default: 0
1769*******************************************************************************/
1770typedef enum
1771{
1772 LSM6DS3_ACC_GYRO_TAP_EV_STATUS_NOT_DETECTED = 0x00,
1773 LSM6DS3_ACC_GYRO_TAP_EV_STATUS_DETECTED = 0x40,
1774} LSM6DS3_ACC_GYRO_TAP_EV_STATUS_t;
1775
1776/*******************************************************************************
1777 Register : D6D_SRC
1778 Address : LSM6DS3_ACC_GYRO_D6D_SRC
1779 Bit Group Name: DSD_XL
1780 Permission : RO
1781 Comment : X-axis low event (under threshold). Default value:
1782*******************************************************************************/
1783typedef enum
1784{
1785 LSM6DS3_ACC_GYRO_DSD_XL_NOT_DETECTED = 0x00,
1786 LSM6DS3_ACC_GYRO_DSD_XL_DETECTED = 0x01,
1787} LSM6DS3_ACC_GYRO_DSD_XL_t;
1788
1789/*******************************************************************************
1790 Register : D6D_SRC
1791 Address : LSM6DS3_ACC_GYRO_D6D_SRC
1792 Bit Group Name: DSD_XH
1793 Permission : RO
1794 Comment : X-axis high event (over threshold). Default value: 0
1795*******************************************************************************/
1796typedef enum
1797{
1798 LSM6DS3_ACC_GYRO_DSD_XH_NOT_DETECTED = 0x00,
1799 LSM6DS3_ACC_GYRO_DSD_XH_DETECTED = 0x02,
1800} LSM6DS3_ACC_GYRO_DSD_XH_t;
1801
1802/*******************************************************************************
1803 Register : D6D_SRC
1804 Address : LSM6DS3_ACC_GYRO_D6D_SRC
1805 Bit Group Name: DSD_YL
1806 Permission : RO
1807 Comment : Y-axis low event (under threshold). Default value: 0
1808*******************************************************************************/
1809typedef enum
1810{
1811 LSM6DS3_ACC_GYRO_DSD_YL_NOT_DETECTED = 0x00,
1812 LSM6DS3_ACC_GYRO_DSD_YL_DETECTED = 0x04,
1813} LSM6DS3_ACC_GYRO_DSD_YL_t;
1814
1815/*******************************************************************************
1816 Register : D6D_SRC
1817 Address : LSM6DS3_ACC_GYRO_D6D_SRC
1818 Bit Group Name: DSD_YH
1819 Permission : RO
1820 Comment : Y-axis high event (over threshold). Default value: 0
1821*******************************************************************************/
1822typedef enum
1823{
1824 LSM6DS3_ACC_GYRO_DSD_YH_NOT_DETECTED = 0x00,
1825 LSM6DS3_ACC_GYRO_DSD_YH_DETECTED = 0x08,
1826} LSM6DS3_ACC_GYRO_DSD_YH_t;
1827
1828/*******************************************************************************
1829 Register : D6D_SRC
1830 Address : LSM6DS3_ACC_GYRO_D6D_SRC
1831 Bit Group Name: DSD_ZL
1832 Permission : RO
1833 Comment : Z-axis low event (under threshold). Default value: 0
1834*******************************************************************************/
1835typedef enum
1836{
1837 LSM6DS3_ACC_GYRO_DSD_ZL_NOT_DETECTED = 0x00,
1838 LSM6DS3_ACC_GYRO_DSD_ZL_DETECTED = 0x10,
1839} LSM6DS3_ACC_GYRO_DSD_ZL_t;
1840
1841/*******************************************************************************
1842 Register : D6D_SRC
1843 Address : LSM6DS3_ACC_GYRO_D6D_SRC
1844 Bit Group Name: DSD_ZH
1845 Permission : RO
1846 Comment : Z-axis high event (over threshold). Default value: 0
1847*******************************************************************************/
1848typedef enum
1849{
1850 LSM6DS3_ACC_GYRO_DSD_ZH_NOT_DETECTED = 0x00,
1851 LSM6DS3_ACC_GYRO_DSD_ZH_DETECTED = 0x20,
1852} LSM6DS3_ACC_GYRO_DSD_ZH_t;
1853
1854/*******************************************************************************
1855 Register : D6D_SRC
1856 Address : LSM6DS3_ACC_GYRO_D6D_SRC
1857 Bit Group Name: D6D_EV_STATUS
1858 Permission : RO
1859 Comment : Interrupt active for change position portrait, landscape, face-up, face-down. Default value: 0
1860*******************************************************************************/
1861typedef enum
1862{
1863 LSM6DS3_ACC_GYRO_D6D_EV_STATUS_NOT_DETECTED = 0x00,
1864 LSM6DS3_ACC_GYRO_D6D_EV_STATUS_DETECTED = 0x40,
1865} LSM6DS3_ACC_GYRO_D6D_EV_STATUS_t;
1866
1867/*******************************************************************************
1868 Register : STATUS_REG
1869 Address : LSM6DS3_ACC_GYRO_STATUS_REG
1870 Bit Group Name: XLDA
1871 Permission : RO
1872 Comment : Accelerometer new data available. Default value: 0
1873*******************************************************************************/
1874typedef enum
1875{
1876 LSM6DS3_ACC_GYRO_XLDA_NO_DATA_AVAIL = 0x00,
1877 LSM6DS3_ACC_GYRO_XLDA_DATA_AVAIL = 0x01,
1878} LSM6DS3_ACC_GYRO_XLDA_t;
1879
1880/*******************************************************************************
1881 Register : STATUS_REG
1882 Address : LSM6DS3_ACC_GYRO_STATUS_REG
1883 Bit Group Name: GDA
1884 Permission : RO
1885 Comment : Gyroscope new data available. Default value: 0
1886*******************************************************************************/
1887typedef enum
1888{
1889 LSM6DS3_ACC_GYRO_GDA_NO_DATA_AVAIL = 0x00,
1890 LSM6DS3_ACC_GYRO_GDA_DATA_AVAIL = 0x02,
1891} LSM6DS3_ACC_GYRO_GDA_t;
1892
1893/*******************************************************************************
1894 Register : STATUS_REG
1895 Address : LSM6DS3_ACC_GYRO_STATUS_REG
1896 Bit Group Name: EV_BOOT
1897 Permission : RO
1898 Comment : Temperature new data available. Default: 0
1899*******************************************************************************/
1900typedef enum
1901{
1902 LSM6DS3_ACC_GYRO_TDA_NO_DATA_AVAIL = 0x00,
1903 LSM6DS3_ACC_GYRO_TDA_DATA_AVAIL = 0x04,
1904} LSM6DS3_ACC_GYRO_TDA_t;
1905
1906/*******************************************************************************
1907 Register : FIFO_STATUS1
1908 Address : LSM6DS3_ACC_GYRO_FIFO_STATUS1
1909 Bit Group Name: DIFF_FIFO
1910 Permission : RO
1911 Comment : Number of unread words (16-bit axes) stored in FIFO
1912*******************************************************************************/
1913#define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS1_MASK 0xFF
1914#define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS1_POSITION 0
1915
1916/*******************************************************************************
1917 Register : FIFO_STATUS2
1918 Address : LSM6DS3_ACC_GYRO_FIFO_STATUS1
1919 Bit Group Name: DIFF_FIFO
1920 Permission : RO
1921 Comment : Number of unread words (16-bit axes) stored in FIFO
1922*******************************************************************************/
1923#define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS2_MASK 0xF
1924#define LSM6DS3_ACC_GYRO_DIFF_FIFO_STATUS2_POSITION 0
1925
1926/*******************************************************************************
1927 Register : FIFO_STATUS2
1928 Address : LSM6DS3_ACC_GYRO_FIFO_STATUS2
1929 Bit Group Name: FIFO_EMPTY
1930 Permission : RO
1931 Comment : FIFO empty bit. Default value: 0
1932*******************************************************************************/
1933typedef enum
1934{
1935 LSM6DS3_ACC_GYRO_FIFO_EMPTY_FIFO_NOT_EMPTY = 0x00,
1936 LSM6DS3_ACC_GYRO_FIFO_EMPTY_FIFO_EMPTY = 0x10,
1937} LSM6DS3_ACC_GYRO_FIFO_EMPTY_t;
1938
1939/*******************************************************************************
1940 Register : FIFO_STATUS2
1941 Address : LSM6DS3_ACC_GYRO_FIFO_STATUS2
1942 Bit Group Name: FIFO_FULL
1943 Permission : RO
1944 Comment : FIFO full status. Default value: 0
1945*******************************************************************************/
1946typedef enum
1947{
1948 LSM6DS3_ACC_GYRO_FIFO_FULL_FIFO_NOT_FULL = 0x00,
1949 LSM6DS3_ACC_GYRO_FIFO_FULL_FIFO_FULL = 0x20,
1950} LSM6DS3_ACC_GYRO_FIFO_FULL_t;
1951
1952/*******************************************************************************
1953 Register : FIFO_STATUS2
1954 Address : LSM6DS3_ACC_GYRO_FIFO_STATUS2
1955 Bit Group Name: OVERRUN
1956 Permission : RO
1957 Comment : IFO overrun status. Default value: 0
1958*******************************************************************************/
1959typedef enum
1960{
1961 LSM6DS3_ACC_GYRO_OVERRUN_NO_OVERRUN = 0x00,
1962 LSM6DS3_ACC_GYRO_OVERRUN_OVERRUN = 0x40,
1963} LSM6DS3_ACC_GYRO_OVERRUN_t;
1964
1965/*******************************************************************************
1966 Register : FIFO_STATUS2
1967 Address : LSM6DS3_ACC_GYRO_FIFO_STATUS2
1968 Bit Group Name: WTM
1969 Permission : RO
1970 Comment : FIFO watermark status. Default value: 0
1971*******************************************************************************/
1972typedef enum
1973{
1974 LSM6DS3_ACC_GYRO_WTM_BELOW_WTM = 0x00,
1975 LSM6DS3_ACC_GYRO_WTM_ABOVE_OR_EQUAL_WTM = 0x80,
1976} LSM6DS3_ACC_GYRO_WTM_t;
1977
1978/*******************************************************************************
1979 Register : FIFO_STATUS3
1980 Address : LSM6DS3_ACC_GYRO_FIFO_STATUS3
1981 Bit Group Name: FIFO_PATTERN
1982 Permission : RO
1983*******************************************************************************/
1984#define LSM6DS3_ACC_GYRO_FIFO_STATUS3_PATTERN_MASK 0xFF
1985#define LSM6DS3_ACC_GYRO_FIFO_STATUS3_PATTERN_POSITION 0
1986#define LSM6DS3_ACC_GYRO_FIFO_STATUS4_PATTERN_MASK 0x03
1987#define LSM6DS3_ACC_GYRO_FIFO_STATUS4_PATTERN_POSITION 0
1988
1989/*******************************************************************************
1990 Register : FUNC_SRC
1991 Address : LSM6DS3_ACC_GYRO_FUNC_SRC
1992 Bit Group Name: SENS_HUB_END
1993 Permission : RO
1994 Comment : Sensor hub communication status. Default value: 0
1995*******************************************************************************/
1996typedef enum
1997{
1998 LSM6DS3_ACC_GYRO_SENS_HUB_END_STILL_ONGOING = 0x00,
1999 LSM6DS3_ACC_GYRO_SENS_HUB_END_OP_COMPLETED = 0x01,
2000} LSM6DS3_ACC_GYRO_SENS_HUB_END_t;
2001
2002/*******************************************************************************
2003 Register : FUNC_SRC
2004 Address : LSM6DS3_ACC_GYRO_FUNC_SRC
2005 Bit Group Name: SOFT_IRON_END
2006 Permission : RO
2007 Comment : Hard/soft-iron calculation status. Default value: 0
2008*******************************************************************************/
2009typedef enum
2010{
2011 LSM6DS3_ACC_GYRO_SOFT_IRON_END_NOT_COMPLETED = 0x00,
2012 LSM6DS3_ACC_GYRO_SOFT_IRON_END_COMPLETED = 0x02,
2013} LSM6DS3_ACC_GYRO_SOFT_IRON_END_t;
2014
2015/*******************************************************************************
2016 Register : FUNC_SRC
2017 Address : LSM6DS3_ACC_GYRO_FUNC_SRC
2018 Bit Group Name: STEP_OVERFLOW
2019 Permission : RO
2020 Comment : Step counter overflow status. Default valu
2021*******************************************************************************/
2022typedef enum
2023{
2024 LSM6DS3_ACC_GYRO_STEP_NOT_OVERFLOWED = 0x00,
2025 LSM6DS3_ACC_GYRO_STEP_OVERFLOWED = 0x08,
2026} LSM6DS3_ACC_GYRO_STEP_OVERFLOW_t;
2027
2028/*******************************************************************************
2029 Register : FUNC_SRC
2030 Address : LSM6DS3_ACC_GYRO_FUNC_SRC
2031 Bit Group Name: STEP_DETECTED
2032 Permission : RO
2033 Comment : Step detector event detection status. Default value: 0
2034*******************************************************************************/
2035typedef enum
2036{
2037 LSM6DS3_ACC_GYRO_STEP_NOT_DETECTED = 0x00,
2038 LSM6DS3_ACC_GYRO_STEP_DETECTED = 0x10,
2039} LSM6DS3_ACC_GYRO_STEP_DETECTED_t;
2040
2041/*******************************************************************************
2042 Register : FUNC_SRC
2043 Address : LSM6DS3_ACC_GYRO_FUNC_SRC
2044 Bit Group Name: TILT_IA
2045 Permission : RO
2046 Comment : Tilt event detection status. Default value: 0
2047*******************************************************************************/
2048typedef enum
2049{
2050 LSM6DS3_ACC_GYRO_TILT_IA_NOT_DETECTED = 0x00,
2051 LSM6DS3_ACC_GYRO_TILT_IA_DETECTED = 0x20,
2052} LSM6DS3_ACC_GYRO_TILT_IA_t;
2053
2054/*******************************************************************************
2055 Register : FUNC_SRC
2056 Address : LSM6DS3_ACC_GYRO_FUNC_SRC
2057 Bit Group Name: SIGN_MOTION_IA
2058 Permission : RO
2059 Comment : Significant motion event detection status. Default value: 0
2060*******************************************************************************/
2061typedef enum
2062{
2063 LSM6DS3_ACC_GYRO_SIGN_MOTION_IA_NOT_DETECTED = 0x00,
2064 LSM6DS3_ACC_GYRO_SIGN_MOTION_IA_DETECTED = 0x40,
2065} LSM6DS3_ACC_GYRO_SIGN_MOTION_IA_t;
2066
2067/*******************************************************************************
2068 Register : FUNC_SRC
2069 Address : LSM6DS3_ACC_GYRO_FUNC_SRC
2070 Bit Group Name: STEP_COUNT_DELTA_IA
2071 Permission : RO
2072 Comment : Pedometer step recognition on delta time status. Default value: 0
2073 (0: no step recognized during delta time; 1: at least one step recognized during delta time)
2074*******************************************************************************/
2075typedef enum
2076{
2077 LSM6DS3_ACC_GYRO_STEP_COUNT_DELTA_IA_STATUS_NOT_DETECTED = 0x00,
2078 LSM6DS3_ACC_GYRO_STEP_COUNT_DELTA_IA_STATUS_DETECTED = 0x80,
2079} LSM6DS3_ACC_GYRO_STEP_COUNT_DELTA_IA_STATUS_t;
2080
2081/*******************************************************************************
2082 Register : TAP_CFG
2083 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2084 Bit Group Name: LIR
2085 Permission : RW
2086 Comment : Latched Interrupt. Default value: 0
2087*******************************************************************************/
2088typedef enum
2089{
2090 LSM6DS3_ACC_GYRO_LIR_DISABLED = 0x00,
2091 LSM6DS3_ACC_GYRO_LIR_ENABLED = 0x01,
2092} LSM6DS3_ACC_GYRO_LIR_t;
2093
2094/*******************************************************************************
2095 Register : TAP_CFG
2096 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2097 Bit Group Name: TAP_Z_EN
2098 Permission : RW
2099 Comment : Enable Z direction in tap recognition. Default value: 0
2100*******************************************************************************/
2101typedef enum
2102{
2103 LSM6DS3_ACC_GYRO_TAP_Z_EN_DISABLED = 0x00,
2104 LSM6DS3_ACC_GYRO_TAP_Z_EN_ENABLED = 0x02,
2105} LSM6DS3_ACC_GYRO_TAP_Z_EN_t;
2106
2107/*******************************************************************************
2108 Register : TAP_CFG
2109 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2110 Bit Group Name: TAP_Y_EN
2111 Permission : RW
2112 Comment : Enable Y direction in tap recognition. Default value: 0
2113*******************************************************************************/
2114typedef enum
2115{
2116 LSM6DS3_ACC_GYRO_TAP_Y_EN_DISABLED = 0x00,
2117 LSM6DS3_ACC_GYRO_TAP_Y_EN_ENABLED = 0x04,
2118} LSM6DS3_ACC_GYRO_TAP_Y_EN_t;
2119
2120/*******************************************************************************
2121 Register : TAP_CFG
2122 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2123 Bit Group Name: TAP_X_EN
2124 Permission : RW
2125 Comment : Enable X direction in tap recognition. Default value: 0
2126*******************************************************************************/
2127typedef enum
2128{
2129 LSM6DS3_ACC_GYRO_TAP_X_EN_DISABLED = 0x00,
2130 LSM6DS3_ACC_GYRO_TAP_X_EN_ENABLED = 0x08,
2131} LSM6DS3_ACC_GYRO_TAP_X_EN_t;
2132
2133/*******************************************************************************
2134 Register : TAP_CFG
2135 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2136 Bit Group Name: SLOPE_FDS
2137 Permission : RW
2138 Comment : Enable accelerometer HP and LPF2 filters (refer to Figure 6). Default value: 0
2139*******************************************************************************/
2140typedef enum
2141{
2142 LSM6DS3_ACC_GYRO_SLOPE_FDS_DISABLED = 0x00,
2143 LSM6DS3_ACC_GYRO_SLOPE_FDS_ENABLED = 1 << 4,
2144} LSM6DS3_ACC_GYRO_SLOPE_FDS_t;
2145
2146/*******************************************************************************
2147 Register : TAP_CFG
2148 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2149 Bit Group Name: TILT_EN
2150 Permission : RW
2151 Comment : Tilt calculation enable. Default value: 0
2152*******************************************************************************/
2153typedef enum
2154{
2155 LSM6DS3_ACC_GYRO_TILT_EN_DISABLED = 0x00,
2156 LSM6DS3_ACC_GYRO_TILT_EN_ENABLED = 0x20,
2157} LSM6DS3_ACC_GYRO_TILT_EN_t;
2158
2159/*******************************************************************************
2160 Register : TAP_CFG
2161 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2162 Bit Group Name: PEDO_EN
2163 Permission : RW
2164 Comment : Pedometer algorithm enable. Default value: 0
2165*******************************************************************************/
2166typedef enum
2167{
2168 LSM6DS3_ACC_GYRO_PEDO_EN_DISABLED = 0x00,
2169 LSM6DS3_ACC_GYRO_PEDO_EN_ENABLED = 0x40,
2170} LSM6DS3_ACC_GYRO_PEDO_EN_t;
2171
2172/*******************************************************************************
2173 Register : TAP_CFG
2174 Address : LSM6DS3_ACC_GYRO_TAP_CFG
2175 Bit Group Name: TIMER_EN
2176 Permission : RW
2177 Comment : Timestamp count enable, output data are collected in TIMESTAMP0_REG (40h), TIMESTAMP1_REG (41h),
2178TIMESTAMP2_REG (42h) register. Default: 0
2179*******************************************************************************/
2180typedef enum
2181{
2182 LSM6DS3_ACC_GYRO_TIMER_EN_DISABLED = 0x00,
2183 LSM6DS3_ACC_GYRO_TIMER_EN_ENABLED = 0x80,
2184} LSM6DS3_ACC_GYRO_TIMER_EN_t;
2185
2186/*******************************************************************************
2187 Register : TAP_THS_6D
2188 Address : LSM6DS3_ACC_GYRO_TAP_THS_6D
2189 Bit Group Name: TAP_THS
2190 Permission : RW
2191 Comment : Threshold for tap recognition. Default value: 00000
2192*******************************************************************************/
2193#define LSM6DS3_ACC_GYRO_TAP_THS_MASK 0x1F
2194#define LSM6DS3_ACC_GYRO_TAP_THS_POSITION 0
2195
2196/*******************************************************************************
2197 Register : TAP_THS_6D
2198 Address : LSM6DS3_ACC_GYRO_TAP_THS_6D
2199 Bit Group Name: SIXD_THS
2200 Permission : RW
2201 Comment : Threshold for D6D function. Default value: 00
2202*******************************************************************************/
2203typedef enum
2204{
2205 LSM6DS3_ACC_GYRO_SIXD_THS_80_degree = 0x00,
2206 LSM6DS3_ACC_GYRO_SIXD_THS_70_degree = 0x20,
2207 LSM6DS3_ACC_GYRO_SIXD_THS_60_degree = 0x40,
2208 LSM6DS3_ACC_GYRO_SIXD_THS_50_degree = 0x60,
2209} LSM6DS3_ACC_GYRO_SIXD_THS_t;
2210
2211/*******************************************************************************
2212 Register : TAP_THS_6D
2213 Address : LSM6DS3_ACC_GYRO_TAP_THS_6D
2214 Bit Group Name: D4D_EN
2215 Permission : RW
2216 Comment : 4D orientation detection enable. Z-axis position detection is disabled
2217*******************************************************************************/
2218typedef enum
2219{
2220 LSM6DS3_ACC_GYRO_D4D_DISABLED_degree = 0x00,
2221 LSM6DS3_ACC_GYRO_D4D_ENABLED_degree = 0x80,
2222} LSM6DS3_ACC_GYRO_D4D_EN_t;
2223
2224/*******************************************************************************
2225 Register : INT_DUR2
2226 Address : LSM6DS3_ACC_GYRO_INT_DUR2
2227 Bit Group Name: SHOCK
2228 Permission : RW
2229 Comment : Maximum duration of overthreshold event. Default value: 00
2230 Maximum duration is the maximum time of an overthreshold signal detection to be recognized as a tap event. The
2231default value of these bits is 00b which corresponds to 4*ODR_XL time. If the SHOCK[1:0] bits are set to a different
2232value, 1LSB corresponds to 8*ODR_XL time.
2233*******************************************************************************/
2234#define LSM6DS3_ACC_GYRO_SHOCK_MASK 0x03
2235#define LSM6DS3_ACC_GYRO_SHOCK_POSITION 0
2236
2237/*******************************************************************************
2238 Register : INT_DUR2
2239 Address : LSM6DS3_ACC_GYRO_INT_DUR2
2240 Bit Group Name: QUIET
2241 Permission : RW
2242 Comment : Expected quiet time after a tap detection. Default value: 00
2243 Quiet time is the time after the first detected tap in which there must not be any overthreshold event. The default
2244value of these bits is 00b which corresponds to 2*ODR_XL time. If the QUIET[1:0] bits are set to a different value, 1LSB
2245corresponds to 4*ODR_XL time.
2246*******************************************************************************/
2247#define LSM6DS3_ACC_GYRO_QUIET_MASK 0x0C
2248#define LSM6DS3_ACC_GYRO_QUIET_POSITION 2
2249
2250/*******************************************************************************
2251 Register : INT_DUR2
2252 Address : LSM6DS3_ACC_GYRO_INT_DUR2
2253 Bit Group Name: DUR
2254 Permission : RW
2255 Comment : Duration of maximum time gap for double tap recognition. Default: 0000
2256 When double tap recognition is enabled, this register expresses the maximum time between two consecutive detected
2257taps to determine a double tap event. The default value of these bits is 0000b which corresponds to 16*ODR_XL time. If
2258the DUR[3:0] bits are set to a different value, 1LSB corresponds to 32*ODR_XL time.
2259*******************************************************************************/
2260#define LSM6DS3_ACC_GYRO_DUR_MASK 0xF0
2261#define LSM6DS3_ACC_GYRO_DUR_POSITION 4
2262
2263/*******************************************************************************
2264 Register : WAKE_UP_THS
2265 Address : LSM6DS3_ACC_GYRO_WAKE_UP_THS
2266 Bit Group Name: WK_THS
2267 Permission : RW
2268 Comment : Threshold for wakeup. Default value: 000000
2269*******************************************************************************/
2270#define LSM6DS3_ACC_GYRO_WK_THS_MASK 0x3F
2271#define LSM6DS3_ACC_GYRO_WK_THS_POSITION 0
2272
2273/*******************************************************************************
2274 Register : WAKE_UP_THS
2275 Address : LSM6DS3_ACC_GYRO_WAKE_UP_THS
2276 Bit Group Name: INACTIVITY_ON
2277 Permission : RW
2278 Comment : Inactivity event enable. Default value: 0
2279*******************************************************************************/
2280typedef enum
2281{
2282 LSM6DS3_ACC_GYRO_INACTIVITY_ON_DISABLED = 0x00,
2283 LSM6DS3_ACC_GYRO_INACTIVITY_ON_ENABLED = 0x40,
2284} LSM6DS3_ACC_GYRO_INACTIVITY_ON_t;
2285
2286/*******************************************************************************
2287 Register : WAKE_UP_THS
2288 Address : LSM6DS3_ACC_GYRO_WAKE_UP_THS
2289 Bit Group Name: SINGLE_DOUBLE_TAP
2290 Permission : RW
2291 Comment : Single/double-tap event enable. Default: 0
2292*******************************************************************************/
2293typedef enum
2294{
2295 LSM6DS3_ACC_GYRO_SINGLE_DOUBLE_TAP_DOUBLE_TAP = 0x00,
2296 LSM6DS3_ACC_GYRO_SINGLE_DOUBLE_TAP_SINGLE_TAP = 0x80,
2297} LSM6DS3_ACC_GYRO_SINGLE_DOUBLE_TAP_t;
2298
2299/*******************************************************************************
2300 Register : WAKE_UP_DUR
2301 Address : LSM6DS3_ACC_GYRO_WAKE_UP_DUR
2302 Bit Group Name: SLEEP_DUR
2303 Permission : RW
2304 Comment : Duration to go in sleep mode. Default value: 00001. LSB = 512 ODR
2305*******************************************************************************/
2306#define LSM6DS3_ACC_GYRO_SLEEP_DUR_MASK 0x0F
2307#define LSM6DS3_ACC_GYRO_SLEEP_DUR_POSITION 0
2308
2309/*******************************************************************************
2310 Register : WAKE_UP_DUR
2311 Address : LSM6DS3_ACC_GYRO_WAKE_UP_DUR
2312 Bit Group Name: TIMER_HR
2313 Permission : RW
2314 Comment : Timestamp register resolution setting(1). Default value: 0. (0: 1LSB = 6.4 ms; 1: 1LSB = 25 μs)
2315*******************************************************************************/
2316typedef enum
2317{
2318 LSM6DS3_ACC_GYRO_TIMER_HR_6_4ms = 0x00,
2319 LSM6DS3_ACC_GYRO_TIMER_HR_25us = 0x10,
2320} LSM6DS3_ACC_GYRO_TIMER_HR_t;
2321
2322/*******************************************************************************
2323 Register : WAKE_UP_DUR
2324 Address : LSM6DS3_ACC_GYRO_WAKE_UP_DUR
2325 Bit Group Name: WAKE_DUR
2326 Permission : RW
2327 Comment : Wake up duration event. Default: 001. LSB = 1 ODR_time
2328*******************************************************************************/
2329#define LSM6DS3_ACC_GYRO_WAKE_DUR_MASK 0x60
2330#define LSM6DS3_ACC_GYRO_WAKE_DUR_POSITION 5
2331
2332/*******************************************************************************
2333 Register : FREE_FALL
2334 Address : LSM6DS3_ACC_GYRO_FREE_FALL
2335 Bit Group Name: FF_DUR
2336 Permission : RW
2337 Comment : Free-fall duration event. Default: 0
2338*******************************************************************************/
2339#define LSM6DS3_ACC_GYRO_FREE_FALL_DUR_MASK 0xF8
2340#define LSM6DS3_ACC_GYRO_FREE_FALL_DUR_POSITION 3
2341
2342#define LSM6DS3_ACC_GYRO_FF_WAKE_UP_DUR_MASK 0x80
2343#define LSM6DS3_ACC_GYRO_FF_WAKE_UP_DUR_POSITION 7
2344
2345/*******************************************************************************
2346 Register : FREE_FALL
2347 Address : LSM6DS3_ACC_GYRO_FREE_FALL
2348 Bit Group Name: FF_THS
2349 Permission : RW
2350 Comment : Free fall threshold setting. Default: 000
2351*******************************************************************************/
2352typedef enum
2353{
2354 LSM6DS3_ACC_GYRO_FF_THS_5 = 0x00, // 156mg
2355 LSM6DS3_ACC_GYRO_FF_THS_7 = 0x01, // 219mg
2356 LSM6DS3_ACC_GYRO_FF_THS_8 = 0x02, // 250mg
2357 LSM6DS3_ACC_GYRO_FF_THS_10 = 0x03, // 312mg
2358 LSM6DS3_ACC_GYRO_FF_THS_11 = 0x04, // 344mg
2359 LSM6DS3_ACC_GYRO_FF_THS_13 = 0x05, // 406mg
2360 LSM6DS3_ACC_GYRO_FF_THS_15 = 0x06, // 469mg
2361 LSM6DS3_ACC_GYRO_FF_THS_16 = 0x07, // 500mg
2362} LSM6DS3_ACC_GYRO_FF_THS_t;
2363
2364/*******************************************************************************
2365 Register : MD1_CFG
2366 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2367 Bit Group Name: INT1_TIMER
2368 Permission : RW
2369 Comment : Routing of end counter event of timer on INT1. Default value: 0
2370*******************************************************************************/
2371typedef enum
2372{
2373 LSM6DS3_ACC_GYRO_INT1_TIMER_DISABLED = 0x00,
2374 LSM6DS3_ACC_GYRO_INT1_TIMER_ENABLED = 0x01,
2375} LSM6DS3_ACC_GYRO_INT1_TIMER_t;
2376
2377/*******************************************************************************
2378 Register : MD1_CFG
2379 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2380 Bit Group Name: INT1_TILT
2381 Permission : RW
2382 Comment : Routing of tilt event on INT1. Default value: 0
2383*******************************************************************************/
2384typedef enum
2385{
2386 LSM6DS3_ACC_GYRO_INT1_TILT_DISABLED = 0x00,
2387 LSM6DS3_ACC_GYRO_INT1_TILT_ENABLED = 0x02,
2388} LSM6DS3_ACC_GYRO_INT1_TILT_t;
2389
2390/*******************************************************************************
2391 Register : MD1_CFG
2392 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2393 Bit Group Name: INT1_6D
2394 Permission : RW
2395 Comment : Routing of 6D event on INT1. Default value: 0
2396*******************************************************************************/
2397typedef enum
2398{
2399 LSM6DS3_ACC_GYRO_INT1_6D_DISABLED = 0x00,
2400 LSM6DS3_ACC_GYRO_INT1_6D_ENABLED = 0x04,
2401} LSM6DS3_ACC_GYRO_INT1_6D_t;
2402
2403/*******************************************************************************
2404 Register : MD1_CFG
2405 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2406 Bit Group Name: INT1_TAP
2407 Permission : RW
2408 Comment : Routing of tap event on INT1. Default value: 0
2409*******************************************************************************/
2410typedef enum
2411{
2412 LSM6DS3_ACC_GYRO_INT1_DOUBLE_TAP_DISABLED = 0x00,
2413 LSM6DS3_ACC_GYRO_INT1_DOUBLE_TAP_ENABLED = 0x08,
2414} LSM6DS3_ACC_GYRO_INT1_DOUBLE_TAP_t;
2415
2416/*******************************************************************************
2417 Register : MD1_CFG
2418 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2419 Bit Group Name: INT1_FF
2420 Permission : RW
2421 Comment : Routing of free-fall event on INT1. Default value: 0
2422*******************************************************************************/
2423typedef enum
2424{
2425 LSM6DS3_ACC_GYRO_INT1_FF_DISABLED = 0x00,
2426 LSM6DS3_ACC_GYRO_INT1_FF_ENABLED = 0x10,
2427} LSM6DS3_ACC_GYRO_INT1_FF_t;
2428
2429/*******************************************************************************
2430 Register : MD1_CFG
2431 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2432 Bit Group Name: INT1_WU
2433 Permission : RW
2434 Comment : Routing of wakeup event on INT1. Default value: 0
2435*******************************************************************************/
2436typedef enum
2437{
2438 LSM6DS3_ACC_GYRO_INT1_WU_DISABLED = 0x00,
2439 LSM6DS3_ACC_GYRO_INT1_WU_ENABLED = 0x20,
2440} LSM6DS3_ACC_GYRO_INT1_WU_t;
2441
2442/*******************************************************************************
2443 Register : MD1_CFG
2444 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2445 Bit Group Name: INT1_SINGLE_TAP
2446 Permission : RW
2447 Comment : Single-tap recognition routing on INT1. Default: 0
2448*******************************************************************************/
2449typedef enum
2450{
2451 LSM6DS3_ACC_GYRO_INT1_SINGLE_TAP_DISABLED = 0x00,
2452 LSM6DS3_ACC_GYRO_INT1_SINGLE_TAP_ENABLED = 0x40,
2453} LSM6DS3_ACC_GYRO_INT1_SINGLE_TAP_t;
2454
2455/*******************************************************************************
2456 Register : MD1_CFG
2457 Address : LSM6DS3_ACC_GYRO_MD1_CFG
2458 Bit Group Name: INT1_SLEEP
2459 Permission : RW
2460 Comment : Routing on INT1 of inactivity mode. Default: 0
2461*******************************************************************************/
2462typedef enum
2463{
2464 LSM6DS3_ACC_GYRO_INT1_SLEEP_DISABLED = 0x00,
2465 LSM6DS3_ACC_GYRO_INT1_SLEEP_ENABLED = 0x80,
2466} LSM6DS3_ACC_GYRO_INT1_SLEEP_t;
2467
2468/*******************************************************************************
2469 Register : MD2_CFG
2470 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2471 Bit Group Name: INT2_IRON
2472 Permission : RW
2473 Comment : Routing of soft-iron/hard-iron algorithm end event on INT2. Default value: 0
2474*******************************************************************************/
2475typedef enum
2476{
2477 LSM6DS3_ACC_GYRO_INT2_IRON_DISABLED = 0x00,
2478 LSM6DS3_ACC_GYRO_INT2_IRON_ENABLED = 0x01,
2479} LSM6DS3_ACC_GYRO_INT2_IRON_t;
2480
2481/*******************************************************************************
2482 Register : MD2_CFG
2483 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2484 Bit Group Name: INT2_TILT
2485 Permission : RW
2486 Comment : Routing of tilt event on INT2. Default value: 0
2487*******************************************************************************/
2488typedef enum
2489{
2490 LSM6DS3_ACC_GYRO_INT2_TILT_DISABLED = 0x00,
2491 LSM6DS3_ACC_GYRO_INT2_TILT_ENABLED = 0x02,
2492} LSM6DS3_ACC_GYRO_INT2_TILT_t;
2493
2494/*******************************************************************************
2495 Register : MD2_CFG
2496 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2497 Bit Group Name: INT2_6D
2498 Permission : RW
2499 Comment : Routing of 6D event on INT2. Default value: 0
2500*******************************************************************************/
2501typedef enum
2502{
2503 LSM6DS3_ACC_GYRO_INT2_6D_DISABLED = 0x00,
2504 LSM6DS3_ACC_GYRO_INT2_6D_ENABLED = 0x04,
2505} LSM6DS3_ACC_GYRO_INT2_6D_t;
2506
2507/*******************************************************************************
2508 Register : MD2_CFG
2509 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2510 Bit Group Name: INT2_TAP
2511 Permission : RW
2512 Comment : Routing of tap event on INT2. Default value: 0
2513*******************************************************************************/
2514typedef enum
2515{
2516 LSM6DS3_ACC_GYRO_INT2_DOUBLE_TAP_DISABLED = 0x00,
2517 LSM6DS3_ACC_GYRO_INT2_DOUBLE_TAP_ENABLED = 0x08,
2518} LSM6DS3_ACC_GYRO_INT2_DOUBLE_TAP_t;
2519
2520/*******************************************************************************
2521 Register : MD2_CFG
2522 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2523 Bit Group Name: INT2_FF
2524 Permission : RW
2525 Comment : Routing of free-fall event on INT2. Default value: 0
2526*******************************************************************************/
2527typedef enum
2528{
2529 LSM6DS3_ACC_GYRO_INT2_FF_DISABLED = 0x00,
2530 LSM6DS3_ACC_GYRO_INT2_FF_ENABLED = 0x10,
2531} LSM6DS3_ACC_GYRO_INT2_FF_t;
2532
2533/*******************************************************************************
2534 Register : MD2_CFG
2535 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2536 Bit Group Name: INT2_WU
2537 Permission : RW
2538 Comment : Routing of wakeup event on INT2. Default value: 0
2539*******************************************************************************/
2540typedef enum
2541{
2542 LSM6DS3_ACC_GYRO_INT2_WU_DISABLED = 0x00,
2543 LSM6DS3_ACC_GYRO_INT2_WU_ENABLED = 0x20,
2544} LSM6DS3_ACC_GYRO_INT2_WU_t;
2545
2546/*******************************************************************************
2547 Register : MD2_CFG
2548 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2549 Bit Group Name: INT2_SINGLE_TAP
2550 Permission : RW
2551 Comment : Single-tap recognition routing on INT2. Default: 0
2552*******************************************************************************/
2553typedef enum
2554{
2555 LSM6DS3_ACC_GYRO_INT2_SINGLE_TAP_DISABLED = 0x00,
2556 LSM6DS3_ACC_GYRO_INT2_SINGLE_TAP_ENABLED = 0x40,
2557} LSM6DS3_ACC_GYRO_INT2_SINGLE_TAP_t;
2558
2559/*******************************************************************************
2560 Register : MD2_CFG
2561 Address : LSM6DS3_ACC_GYRO_MD2_CFG
2562 Bit Group Name: INT2_INACT_STATE
2563 Permission : RW
2564 Comment : Routing on INT2 of inactivity mode. Default: 0
2565*******************************************************************************/
2566typedef enum
2567{
2568 LSM6DS3_ACC_GYRO_INT2_SLEEP_DISABLED = 0x00,
2569 LSM6DS3_ACC_GYRO_INT2_SLEEP_ENABLED = 0x80,
2570} LSM6DS3_ACC_GYRO_INT2_SLEEP_t;
2571
2572#endif // End of __LSM6DS3IMU_H__ definition check
Definition: LSM6DS3.h:56
Definition: LSM6DS3.h:135
Definition: LSM6DS3.h:93