Firmware Library for X-NUCLEO-IKS01A1 (MEMS Inertial & Environmental Sensors) Expansion Board

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   MultiTech_Dragonfly_2015_ATT_Gov_Solutions_Hackathon_Example HelloWorld_IKS01A1 LoRaWAN-test-10secs ServoMotorDemo ... more

Fork of X_NUCLEO_IKS01A1 by ST Expansion SW Team

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers lsm6ds3.h Source File

lsm6ds3.h

Go to the documentation of this file.
00001 /**
00002  ******************************************************************************
00003  * @file    lsm6ds3.h
00004  * @author  MEMS Application Team
00005  * @version V1.2.0
00006  * @date    28-May-2015
00007  * @brief   This file contains definitions for the lsm6ds3.c firmware driver
00008  ******************************************************************************
00009  * @attention
00010  *
00011  * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
00012  *
00013  * Redistribution and use in source and binary forms, with or without modification,
00014  * are permitted provided that the following conditions are met:
00015  *   1. Redistributions of source code must retain the above copyright notice,
00016  *      this list of conditions and the following disclaimer.
00017  *   2. Redistributions in binary form must reproduce the above copyright notice,
00018  *      this list of conditions and the following disclaimer in the documentation
00019  *      and/or other materials provided with the distribution.
00020  *   3. Neither the name of STMicroelectronics nor the names of its contributors
00021  *      may be used to endorse or promote products derived from this software
00022  *      without specific prior written permission.
00023  *
00024  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00025  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00026  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00027  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00028  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00029  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00030  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00031  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00032  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00033  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00034  *
00035  ******************************************************************************
00036  */
00037 
00038 /* Define to prevent recursive inclusion -------------------------------------*/
00039 #ifndef __LSM6DS3_H
00040 #define __LSM6DS3_H
00041 
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045 
00046 /* Includes ------------------------------------------------------------------*/
00047 #include "imu_6axes.h"
00048 
00049 /** @addtogroup BSP
00050  * @{
00051  */
00052 
00053 /** @addtogroup Components
00054  * @{
00055  */
00056 
00057 /** @addtogroup LSM6DS3
00058  * @{
00059  */
00060 
00061 /** @addtogroup LSM6DS3_Exported_Defines LSM6DS3_Exported_Defines
00062  * @{
00063  */
00064 #ifndef NULL
00065 #define NULL      (void *) 0
00066 #endif
00067 
00068 /******************************************************************************/
00069 /*********** START ACCELEROMETER AND GYROSCOPE REGISTER MAPPING  **************/
00070 /******************************************************************************/
00071 
00072 
00073 /***************************************** COMMON REGISTERS ********************************************/
00074 
00075 /**
00076   * @brief FIFO control register
00077   * \code
00078   * Read/write
00079   * Default value: 0x00
00080   * [7] FUNC_CFG_EN: Enable access to the embedded functions configuration registers (1) from address 02h to 32h. Default value: 0.
00081   * [6:0] This bit must be set to �0� for the correct operation of the device
00082   * \endcode
00083 */
00084 #define  LSM6DS3_XG_FUNC_CFG_ACCESS                                      0x01
00085 
00086 /**
00087   * @brief FIFO control register
00088   * \code
00089   * Read/write
00090   * Default value: 0x00
00091   * [7:0] TPH_[7:0]: Sensor SyncronizationTime Frame with the step of 500ms and full range of 5s. Default: 0000 0000
00092   * \endcode
00093 */
00094 #define  LSM6DS3_XG_SENSOR_SYNC_TIME_FRAME                           0x04
00095 
00096 /**
00097   * @brief FIFO control register
00098   * \code
00099   * Read/write
00100   * Default value: 0x00
00101   * [7:2] This bit must be set to �0� for the correct operation of the device
00102   * [1] HP_RST: Gyro digital HP filter reset. Default: 0
00103   * [1] SENSOR_SYNC_ENHP_RST: Enable sensor synchronization feature. Default 0
00104   * \endcode
00105 */
00106 #define  LSM6DS3_XG_SENSOR_SYNC_ENABLE                             0x05
00107 
00108 
00109 /**
00110   * @brief FIFO control register
00111   * \code
00112   * Read/write
00113   * Default value: 0x00
00114   * [7:0] FTH_7-0 FIFO threshold level setting - watermark flag is toggled when the number of bytes written to FIFO is greater or equal to threshold level.
00115   * \endcode
00116 */
00117 #define LSM6DS3_XG_FIFO_CTRL1                               0x06
00118 
00119 /**
00120   * @brief FIFO control register
00121   * \code
00122   * Read/write
00123   * Default value: 0x00
00124   * [7] TIMER_PEDO_FIFO_EN: Enable Pedometer step counter and time stamp as 4th sensor FIFO data. Default: 0 disabled
00125   * [6] TIMER_PEDO_FIFO_DRDY : Pedometer FIFO write mode. Default: 0 disabled
00126   * [5:4] This bit must be set to �0� for the correct operation of the device
00127   * [3:0] FTH_[11:8] FIFO threshold level setting(1). Default value: 0000
00128   * \endcode
00129 */
00130 #define LSM6DS3_XG_FIFO_CTRL2                               0x07
00131 
00132 /**
00133   * @brief FIFO control register
00134   * \code
00135   * Read/write
00136   * Default value: 0x00
00137   * [7:6] This bit must be set to �0� for the correct operation of the device
00138   * [5:3] DEC_FIFO_GYRO[2:0]: Gyro FIFO decimation setting. Default value: 000
00139   * [2:0] DEC_FIFO_XL[2:0]: XL FIFO decimation setting. Default value: 000
00140   * \endcode
00141 */
00142 #define LSM6DS3_XG_FIFO_CTRL3                               0x08
00143 
00144 /**
00145   * @brief FIFO control register
00146   * \code
00147   * Read/write
00148   * Default value: 0x00
00149   * [7] This bit must be set to �0� for the correct operation of the device
00150   * [6] ONLY_HIGH_DATA :8 bit data storing in FIFO. Default: 0
00151   * [5:3] DEC_SLV1_FIFO[2:0] Second external sensor FIFO decimation setting. Default: 000
00152   * [2:0] DEC_SLV1_FIFO[2:0] First external sensor FIFO decimation setting. Default: 000
00153   * \endcode
00154 */
00155 #define LSM6DS3_XG_FIFO_CTRL4                               0x09
00156 
00157 
00158 /**
00159   * @brief FIFO control register
00160   * \code
00161   * Read/write
00162   * Default value: 0x00
00163   * [7] This bit must be set to �0� for the correct operation of the device
00164   * [6:3] ODR_FIFO_[3:0]: FIFO ODR selection. Default: 0000
00165   * [2:0] FIFO_MODE_[2:0] : FIFO mode selection bits. Default value: 000
00166   * \endcode
00167 */
00168 #define LSM6DS3_XG_FIFO_CTRL5                               0x0A
00169 
00170 
00171 /**
00172   * @brief Angular rate sensor sign and orientation register
00173   * \code
00174   * Read/write
00175   * Default value: 0x00
00176   * [7:6] This bit must be set to �0� for the correct operation of the device
00177   * [5] SignX_G:  Pitch axis (X) Angular rate sign. Default value: 0
00178   * [5] SignY_G:  Roll axis (Y) Angular rate sign. Default value: 0
00179   * [5] SignZ_G:  Pitch axis (Z) Angular rate sign. Default value: 0
00180   * [2:0] Orient[2:0] : Directional user orientation selection. Default Value: 000
00181   * \endcode
00182 */
00183 #define LSM6DS3_XG_ORIENT_CFG_G                               0x0B
00184 
00185 /**
00186   * @brief INT1 pad control registrer
00187   * \code
00188   * Read/write
00189   * Default value: 0x00
00190   * [7] INT1_PEDO: Pedometer step recognition interrupt enable on INT1 pad. Default value: 0
00191   * [6] INT1_SIGN_MOT: Significant motion interrupt enable on INT1 pad. Default value: 0
00192   * [5] INT1_FULL_FLAG: Full flag Interrupt Enable on INT1 pad. Default value: 0
00193   * [4] INT1_OVR: Overrun Interrupt on INT1 pad. Default value: 0
00194   * [3] INT1_FTH: FIFO threshold interrupt on INT1 pad. Default value: 0
00195   * [2] INT1_BOOT: Overrun Interrupt on INT1 pad. Default value: 0
00196   * [1] INT1_DRDY_G: Gyroscope Data Ready on INT1 pad. Default value: 0.
00197   * [0] INT1_DRDY_XL: Accelerometer Data Ready on INT1 pad. Default value: 0
00198   * \endcode
00199 */
00200 #define LSM6DS3_XG_INT1_CTRL                                 0x0D
00201 
00202 
00203 //new, done
00204 /**
00205   * @brief INT2 pad control registrer
00206   * \code
00207   * Read/write
00208   * Default value: 0x00
00209   * [7] INT2_PEDO: Pedometer step recognition interrupt enable on INT1 pad. Default value: 0
00210   * [6] INT2_SIGN_MOT: Significant motion interrupt enable on INT1 pad. Default value: 0
00211   * [5] INT2_FULL_FLAG: Full flag Interrupt Enable on INT1 pad. Default value: 0
00212   * [4] INT2_OVR: Overrun Interrupt on INT1 pad. Default value: 0
00213   * [3] INT2_FTH: FIFO threshold interrupt on INT1 pad. Default value: 0
00214   * [2] INT2_BOOT: Overrun Interrupt on INT1 pad. Default value: 0
00215   * [1] INT2_DRDY_G: Gyroscope Data Ready on INT1 pad. Default value: 0.
00216   * [0] INT2_DRDY_XL: Accelerometer Data Ready on INT1 pad. Default value: 0
00217   * \endcode
00218 */
00219 #define LSM6DS3_XG_INT2_CTRL                                 0x0E
00220 
00221 
00222 /**
00223   * @brief Device identifier register.
00224   * \code
00225   * Read
00226   * Default value:69
00227   * [7:0] This read-only register contains the device identifier
00228   * \endcode
00229 */
00230 #define LSM6DS3_XG_WHO_AM_I_ADDR                            0x0F
00231 
00232 
00233 /**
00234   * @brief Control Register 3
00235   * \code
00236   * Read/write
00237   * Default value: 0x00
00238   * [7] BOOT: Reboot memory content. Default value: 0
00239   * [6] BDU: Block Data Update. Default value: 0
00240   * [5] H_LACTIVE: Interrupt activation level. Default value: 0
00241   * [4] PP_OD: Push-pull/Open Drain selection on INT pad. Default value: 0
00242   * [3] SIM: SPI Serial Interface Mode selection. Default value: 0
00243   * [2] IF_INC: Register address automatically incremented during a multiple byte access with a serial interface (I2C or SPI). Default value: 0
00244   * [1] BLE: Big/Little Endian Data Selection. Default value: 0
00245   * [0] SW_RESET: Software Reset. Default value: 0
00246   * \endcode
00247 */
00248 #define LSM6DS3_XG_CTRL3_C                                  0x12
00249 
00250 /**
00251   * @brief Control Register 4
00252   * \code
00253   * Read/write
00254   * Default value: 0x00
00255   * [7] BW_SCAL_ODR: Accelerometer bandwidth selection. Default value: 0
00256   * [6] SLEEP_G: Gyroscope sleep mode enable. Default value: 0
00257   * [5] INT2_on_INT1: All interrupt signals available on INT1 pad enable. Default value: 0
00258   * [4] This bit must be set to �0� for the correct operation of the device
00259   * [3] DRDY_MASK: Configuration 1(3) Data Available Enable bit. Default Value: 0
00260   * [2] I2C_disable Disable I2C interface. Default value: 0
00261   * [1] MODE3_EN Enable auxiliary SPI interface (Mode3, refer to Table 1.). Default value: 0
00262   * [0] STOP_ON_FTH Enable FIFO threshold level use. Default value: 0.
00263 
00264   * \endcode
00265 */
00266 #define LSM6DS3_XG_CTRL4_C                                  0x13
00267 
00268 /**
00269   * @brief Control Register 4
00270   * \code
00271   * Read/write
00272   * Default value: 0x00
00273   * [7:4] This bit must be set to �0� for the correct operation of the device
00274   * [3:2] ST_G[1:0]: Angular rate sensor Self Test Enable. Default value: 00
00275   * [1:0] ST_XL[1:0]: Linear acceleration sensor Self Test Enable. Default value: 00
00276   * \endcode
00277 */
00278 #define LSM6DS3_XG_CTRL5_C                                  0x14
00279 
00280 
00281 /**
00282   * @brief Control Register 10
00283   * \code
00284   * Read/write
00285   * Default value: 0x38
00286   * [7:6] These bits must be set to �0� for the correct operation of the device
00287   * [5] Zen_G: Gyroscope�s Z-axis output enable. Default value: 1
00288   * [4] Yen_G: Gyroscope�s Y-axis output enable. Default value: 1
00289   * [3] Xen_G: Gyroscope�s X-axis output enable. Default value: 1
00290   * [2] FUNC_EN: Enable embedded functionalities (pedometer, tilt and significant motion) .  Default value: 0
00291   * [1] PEDO_RST_STEP: Reset pedometer step counter .  Default value: 0
00292   * [0] SIGN_MOTION_EN: Enable significant motion function. For a correct functionality of significant motion function, TILT_EN bit in FUNC_SRC (53h) register must be set to 1 .  Default value: 1
00293   * \endcode
00294 */
00295 #define LSM6DS3_XG_CTRL10_C                                 0x19
00296 
00297 
00298 /**
00299   * @brief Sensor hub Master config Register
00300   * \code
00301   * Read/write
00302   * Default value: 0x00
00303   * [7] DRDY_ON_INT1:Manage the DRDY signal on INT1 pad. Default: 0
00304   * [6] DATA_VALID_SEL_FIFO: Selection of FIFO data-valid signal. Default value: 0
00305   * [5] This bit must be set to �0� for the correct operation of the device
00306   * [4] START_CONFIG: Sensor Hub trigger signal selection. Default value: 0
00307   * [3] PULL_UP_EN: Auxiliary I2C pull-up. Default value: 0
00308   * [2] PASS_THROUGH_MODE: I2C interface pass-through. Default value: 0
00309   * [1] IRON_EN:Enable soft iron correction algorithm for magnetometer. Default value: 0.
00310   * [0] MASTER_ON: Sensor Hub I2C master enable. Default: 0
00311   * \endcode
00312 */
00313 #define LSM6DS3_XG_MASTER_CONFIG                                 0x1A
00314 
00315 
00316 /**
00317   * @brief Wake up interrupt source register
00318   * \code
00319   * Read
00320   * Default value: output
00321   * [7:6] This bit must be set to �0� for the correct operation of the device
00322   * [5] FF_IA: Free fall event detection status. Default: 0
00323   * [4] SLEEP_STATE_IA: Sleep event status. Default value: 0
00324   * [3] WU_IA: Wake up event detection status. Default
00325   * [2] X_WU: detection status on X axis. Default value: 0
00326   * [1] Y_WU: detection status on Y axis. Default value: 0
00327   * [0] Z_WU: detection status on Z axis. Default value: 0
00328   * \endcode
00329 */
00330 #define LSM6DS3_XG_WAKE_UP_SRC                                 0x1B
00331 
00332 /**
00333   * @brief Tap source register
00334   * \code
00335   * Read
00336   * Default value: output
00337   * [7] This bit must be set to �0� for the correct operation of the device
00338   * [6] TAP_IA: Tap event detection status. Default: 0
00339   * [5] SINGLE_TAP: Single tap event status. Default value: 0
00340   * [4] DOUBLE_TAP: Double tap event detection status. Default value: 0
00341   * [3] TAP_SIGN: Sign of acceleration detected by tap event. Default: 0
00342   * [2] X_TAP: Tap event detection status on X axis. Default value: 0
00343   * [1] Y_TAP: Tap event detection status on Y axis. Default value: 0
00344   * [0] Z_TAP: Tap event detection status on Z axis. Default value: 0
00345   * \endcode
00346 */
00347 #define LSM6DS3_XG_TAP_SRC                                    0x1C
00348 
00349 /**
00350   * @brief Portrait, landscape face-up and face-down source register
00351   * \code
00352   * Read
00353   * Default value: output
00354   * [7] This bit must be set to �0� for the correct operation of the device
00355   * [6] D6D_IA: Interrupt active for change position portrait, landscape, face-up, face-down. Default value: 0
00356   * [5] ZH: Z-axis high event (over-threshold). Default value: 0
00357   * [4] ZL: Z-axis low event (under-threshold). Default value: 0
00358   * [5] YH: Y-axis high event (over-threshold). Default value: 0
00359   * [4] YL: Y-axis low event (under-threshold). Default value: 0
00360   * [5] X_H: X-axis high event (over-threshold). Default value: 0
00361   * [4] X_L: X-axis low event (under-threshold). Default value: 0
00362   * \endcode
00363 */
00364 #define LSM6DS3_XG_D6D_SRC                                   0x1D
00365 
00366 /**
00367   * @brief Status register
00368   * \code
00369   * Read
00370   * Default value: output
00371   * [7:4] No meaning set
00372   * [3] EV_BOOT: Boot running flag signal. Default value: 0
00373   * [2] No meaning set
00374   * [1] GDA: Gyroscope new data avaialble. Default value: 0
00375   * [0] XLDA: Accelerometer new data avaialble. Default value: 0
00376   * \endcode
00377 */
00378 #define LSM6DS3_XG_STATUS_REG                                  0x1E
00379 
00380 /**
00381   * @brief FIFO status control register
00382   * \code
00383   * Read
00384   * Default value: 0x00
00385   * [7:0] DIFF_FIFO_[7:0]: Number of unread words (16 bit axes) stored in FIFO . For a complete number of unread samples, consider DIFF_FIFO [11:8] in FIFO_STATUS2 (3Bh)
00386   * \endcode
00387 */
00388 #define LSM6DS3_XG_FIFO_STATUS1                                   0x3A
00389 
00390 /**
00391   * @brief FIFO status control register (r). For a proper reading of the register it is suggested to set BDU bit in CTRL3_C (12h) to 0.
00392   * \code
00393   * Read
00394   * Default value: 0x00
00395   * [7] FTH FIFO watermark status. Deafult value: 0
00396   * [6] OVER_RUN: FIFO overrun status. Default value: 0
00397   * [5] FIFO_FULL: FIFO full status. Default value: 0
00398   * [5] FIFO_EMPTY: FIFO empty bit. Default value: 0; 0: FIFO contains data; 1: FIFO is empty
00399   * [3:0] DIFF_FIFO_[11:8] Number of unread words (16 bit axes) stored in FIFO : For a complete number of unread samples, consider DIFF_FIFO [11:8] in FIFO_STATUS1 (3Ah)
00400   * \endcode
00401 */
00402 #define LSM6DS3_XG_FIFO_STATUS2                                  0x3B
00403 
00404 /**
00405   * @brief FIFO status control register (r). For a proper reading of the register it is suggested to set BDU bit in CTRL3_C (12h) to 0
00406   * \code
00407   * Read
00408   * Default value: 0x00
00409   * [7:0] FIFO_PATTERN_[7:0] : Word of recursive pattern read at the next reading
00410   * \endcode
00411 */
00412 #define LSM6DS3_XG_FIFO_STATUS3                                  0x3C
00413 
00414 /**
00415   * @brief FIFO status control register (r). For a proper reading of the register it is suggested to set BDU bit in CTRL3_C (12h) to 0
00416   * \code
00417   * Read
00418   * Default value: 0x00
00419   * [1:0] FIFO_PATTERN_[9:8] : Word of recursive pattern read at the next reading
00420   * \endcode
00421 */
00422 #define LSM6DS3_XG_FIFO_STATUS4                                  0x3D
00423 
00424 /**
00425   * @brief FIFO status control register (r). For a proper reading of the register it is suggested to set BDU bit in CTRL3_C (12h) to 0.
00426   * \code
00427   * Read
00428   * Default value: 0x00
00429   * [4:0] FIFO_PATTERN_[9:8] : Word of recursive pattern read at the next reading
00430   * \endcode
00431 */
00432 #define LSM6DS3_XG_FIFO_STATUS4                                  0x3D
00433 
00434 /**
00435   * @brief FIFO data output register (r). For a proper reading of the register it is suggested to set BDU bit in CTRL3_C (12h) to 0.
00436   * \code
00437   * Read
00438   * Default value: 0x00
00439   * [7:0] DATA_OUT_FIFO_L_[7:0]: FIFO data output (First byte)
00440   * \endcode
00441 */
00442 #define LSM6DS3_XG_FIFO_DATA_OUT_L                                  0x3E
00443 
00444 /**
00445   * @brief FIFO data output register (r). For a proper reading of the register it is suggested to set BDU bit in CTRL3_C (12h) to 0.
00446   * \code
00447   * Read
00448   * Default value: 0x00
00449   * [7:0] DATA_OUT_FIFO_H_[7:0]: FIFO data output (second byte)
00450   * \endcode
00451 */
00452 #define LSM6DS3_XG_FIFO_DATA_OUT_H                                  0x3F
00453 
00454 /**
00455   * @brief Time stamp first byte data output register (r). The value is expressed as 24 bit and the bit resolution is defined by setting value in WAKE_UP_DUR (5Ch).
00456   * \code
00457   * Read
00458   * Default value: output
00459   * [7:0] TIMESTAMP0_[7:0]: FIFO first byte data output
00460   * \endcode
00461 */
00462 #define LSM6DS3_XG_TIMESTAMP0_REG                                  0x40
00463 
00464 /**
00465   * @brief Time stamp second byte data output register (r). The value is expressed as 24 bit and the bit resolution is defined by setting value in WAKE_UP_DUR (5Ch).
00466   * \code
00467   * Read
00468   * Default value: output
00469   * [7:0] TIMESTAMP1_[7:0]: FIFO second byte data output
00470   * \endcode
00471 */
00472 #define LSM6DS3_XG_TIMESTAMP1_REG                                  0x41
00473 
00474 /**
00475   * @brief Time stamp third byte data output register (r). The value is expressed as 24 bit and the bit resolution is defined by setting value in WAKE_UP_DUR (5Ch).
00476   * \code
00477   * Read
00478   * Default value: output
00479   * [7:0] TIMESTAMP2_[7:0]: FIFO third byte data output
00480   * \endcode
00481 */
00482 #define LSM6DS3_XG_TIMESTAMP2_REG                                  0x42
00483 
00484 /**
00485   * @brief Step counter output register (r).
00486   * \code
00487   * Read
00488   * Default value: output
00489   * [7:0] STEP_COUNTER_L_[7:0]: Step counter output (LSbyte)
00490   * \endcode
00491 */
00492 #define LSM6DS3_XG_STEP_COUNTER_L                                  0x4B
00493 
00494 /**
00495   * @brief Step counter output register (r).
00496   * \code
00497   * Read
00498   * Default value: output
00499   * [7:0] STEP_COUNTER_H_[7:0]: Step counter output (MSbyte)
00500   * \endcode
00501 */
00502 #define LSM6DS3_XG_STEP_COUNTER_H                                  0x4C
00503 
00504 /**
00505   * @brief Significant motion, tilt, step detector, soft iron and sensor hub interrupt source register
00506   * \code
00507   * Read
00508   * Default value: output
00509   * [7] This bit must be set to �0� for the correct operation of the device
00510   * [6] SIGN_MOTION_IA: Significant motion event detection status. Default value: 0
00511   * [5] TILT_IA: Tilt event detection status. Default value: 0
00512   * [5] STEP_DETECTED: Step detector event detection status. Default value: 0
00513   * [3:2]  This bit must be set to �0� for the correct operation of the device
00514   * [1] SI_END_OP:Soft iron calculation status. Default value: 0
00515   * [0] SENSORHUB_END_OP:Senso hub communication status.  Default value: 0
00516   * \endcode
00517 */
00518 #define LSM6DS3_XG_FUNC_SRC                                             0x53
00519 
00520 /**
00521   * @brief Time stamp, pedometer, tilt, filtering, and tap recognition functions configuration register
00522   * \code
00523   * Read/write
00524   * Default value: 0x00
00525   * [7] TIMER_EN: Time stamp count enable, output data are collected in TIMESTAMP0_REG (40h), TIMESTAMP1_REG (41h), TIMESTAMP2_REG (42h) register. Default: 0
00526   * [6] PEDO_EN: Pedometer algorithm enable(1). Default value: 0
00527   * [5] TILT_EN: Tilt calculation enable.(2) Default value: 0
00528   * [4] This bit must be set to �0� for the correct operation of the device
00529   * [3] TAP_X_EN: Enable X direction in tap recognition. Default value: 0
00530   * [2] TAP_Y_EN: Enable Z direction in tap recognition. Default value: 0
00531   * [1] TAP_Z_EN: Enable Z direction in tap recognition. Default value: 0
00532   * [0] LIR: Relatch of the time stamp, pedometer, tilt, filtering, and tap recognition functions routed to PINs.
00533   * \endcode
00534 */
00535 #define LSM6DS3_XG_TAP_CFG                                             0x58
00536 
00537 /**
00538   * @brief Portrait/landscape position and tap function threshold register
00539   * \code
00540   * Read/write
00541   * Default value: 0x00
00542   * [7] This bit must be set to �0� for the correct operation of the device
00543   * [6:5] SIXD_THS[1:0]: Threshold for D6D function. Default value: 00
00544   * [4:0] TAP_THS[4:0]: Threshold for tap recognition. Default value: 0000
00545   * \endcode
00546 */
00547 #define LSM6DS3_XG_TAP_THS_6D                                             0x59
00548 
00549 /**
00550   * @brief Tap recognition function setting register (r/w)
00551   * \code
00552   * Read/write
00553   * Default value: 0x00
00554   * [7:4] DUR[3:0]: Duration of maximum time gap for double tap recognition. Default: 0000
00555   * [3:2] QUIET[1:0]: Expected quiet time after a tap detection. Default value: 00
00556   * [1:0] SHOCK[1:0]: Maximum duration of over-threshold event. Default value: 00
00557   * \endcode
00558 */
00559 #define LSM6DS3_XG_INT_DUR2                                             0x5A
00560 
00561 /**
00562   * @brief Tap recognition function setting register
00563   * \code
00564   * Read/write
00565   * Default value: 0x00
00566   * [7] SINGLE_DOUBLE_TAP: Single/double tap event detection. Default: 0
00567   * [6] INACTIVITY: Inactivity event enable. Default value: 0
00568   * [5:0] WK_THS[5:0]:Threshold for wake-up. Default value: 0000
00569   * \endcode
00570 */
00571 #define LSM6DS3_XG_WAKE_UP_THS                                                   0x5B
00572 
00573 /**
00574   * @brief Free-fall, wake-up, time stamp and sleep mode functions duration setting register (r/w).
00575   * \code
00576   * Read/write
00577   * Default value: 0x00
00578   * [7] FF_DUR5:Free fall duration event. Default: 0
00579   * [6:5] WAKE_DUR[1:0]: Wake up duration event. Default: 00
00580   * [4] TIMER_HR: Time stamp register resolution setting(1). Default value: 0
00581   * [3:0] SLEEP_DUR[3:0] : Duration to go in sleep mode. Default value: 0000
00582   * \endcode
00583 */
00584 #define LSM6DS3_XG_WAKE_UP_DUR                                                   0x5C
00585 
00586 /**
00587   * @brief Free-fall function duration setting register
00588   * \code
00589   * Read/write
00590   * Default value: 0x00
00591   * [7:3] FF_DUR[4:0]: Free fall duration event. Default: 0. For the complete configuration of the free fall duration, refer to FF_DUR5 in WAKE_UP_DUR (5Ch) configuration
00592   * [2:0] FF_THS[2:0]: Free fall threshold setting. Default: 000.
00593   * \endcode
00594 */
00595 #define LSM6DS3_XG_WAKE_FREE_FALL                                                   0x5D
00596 
00597 /**
00598   * @brief Functions routing on INT1 register
00599   * \code
00600   * Read/write
00601   * Default value: 0x00
00602   * [7] INT1_INACT_STATE: Routing on INT1 of inactivity mode. Default: 0
00603   * [6] INT1_SINGLE_TAP: Single tap recognition routing on INT1. Default: 0
00604   * [5] INT1_WU: Routing of wake-up event on INT1. Default value: 0
00605   * [4] INT1_FF: Routing of free-fall event on INT1. Default value: 0
00606   * [3] INT1_TAP: Routing of tap event on INT1. Default value: 0
00607   * [2] INT1_6D: Routing of 6D event on INT1. Default value: 0
00608   * [1] INT1_TILT: Routing of tilt event on INT1. Default value: 0
00609   * [0] INT1_TIMER: Routing of end counter event of timer on INT1. Default value: 0
00610   * \endcode
00611 */
00612 #define LSM6DS3_XG_MD1_CFG                                                   0x5E
00613 
00614 /**
00615   * @brief Functions routing on INT2 register
00616   * \code
00617   * Read/write
00618   * Default value: 0x00
00619   * [7] INT2_INACT_STATE: Routing on INT1 of inactivity mode. Default: 0
00620   * [6] INT2_SINGLE_TAP: Single tap recognition routing on INT1. Default: 0
00621   * [5] INT2_WU: Routing of wake-up event on INT1. Default value: 0
00622   * [4] INT2_FF: Routing of free-fall event on INT1. Default value: 0
00623   * [3] INT2_TAP: Routing of tap event on INT1. Default value: 0
00624   * [2] INT2_6D: Routing of 6D event on INT1. Default value: 0
00625   * [1] INT2_TILT: Routing of tilt event on INT1. Default value: 0
00626   * [0] INT2_TIMER: Routing of end counter event of timer on INT1. Default value: 0
00627   * \endcode
00628 */
00629 #define LSM6DS3_XG_MD2_CFG                                                   0x5F
00630 
00631 /***************************************** SENSORHUB REGISTERS ********************************************/
00632 
00633 /**
00634   * @brief SENSORHUB REGISTER 1 : SLV0 first external sensor, first axis output register (r). The value is expressed as 16bit word in two�s complement
00635   * \code
00636   * Read
00637   * Default value: 0x00
00638   * [7:0] SHUB1[7:0]: SLV0 first external sensor, first byte of the first axis.
00639   * \endcode
00640 */
00641 #define  LSM6DS3_XG_SENSORHUB1_REG                       0x2E
00642 
00643 /**
00644   * @brief SENSORHUB REGISTER 2 : SLV0 first external sensor, first axis output register (r). The value is expressed as 16bit word in two�s complement
00645   * \code
00646   * Read
00647   * Default value: 0x00
00648   * [7:0] SHUB2[7:0]: SLV0 first external sensor, second byte of the first axis.
00649   * \endcode
00650 */
00651 #define  LSM6DS3_XG_SENSORHUB2_REG                       0x2F
00652 
00653 /**
00654   * @brief SENSORHUB REGISTER 3 : SLV0 first external sensor, second axis output register (r). The value is expressed as 16bit word in two�s complement
00655   * \code
00656   * Read
00657   * Default value: 0x00
00658   * [7:0] SHUB3[7:0]: SLV0 first external sensor, first byte of the second axis.
00659   * \endcode
00660 */
00661 #define  LSM6DS3_XG_SENSORHUB3_REG                       0x30
00662 
00663 /**
00664   * @brief SENSORHUB REGISTER 4 : SLV0 first external sensor, second axis output register (r). The value is expressed as 16bit word in two�s complement
00665   * \code
00666   * Read
00667   * Default value: 0x00
00668   * [7:0] SHUB4[7:0]: SLV0 first external sensor, second byte of the second axis.
00669   * \endcode
00670 */
00671 #define  LSM6DS3_XG_SENSORHUB4_REG                       0x31
00672 
00673 /**
00674   * @brief SENSORHUB REGISTER 5 : SLV0 first external sensor, third axis output register (r). The value is expressed as 16bit word in two�s complement
00675   * \code
00676   * Read
00677   * Default value: 0x00
00678   * [7:0] SHUB5[7:0]: SLV0 first external sensor, second byte of the second axis.
00679   * \endcode
00680 */
00681 #define  LSM6DS3_XG_SENSORHUB5_REG                       0x32
00682 
00683 /**
00684   * @brief SENSORHUB REGISTER 6 : SLV0 first external sensor, third axis output register (r). The value is expressed as 16bit word in two�s complement
00685   * \code
00686   * Read
00687   * Default value: 0x00
00688   * [7:0] SHUB6[7:0]: SLV0 first external sensor, second byte of the third axis
00689   * \endcode
00690 */
00691 #define  LSM6DS3_XG_SENSORHUB6_REG                       0x33
00692 
00693 /**
00694   * @brief SENSORHUB REGISTER 7 : SLV1 second external sensor, first axis output register (r). The value is expressed as 16bit word in two�s complement
00695   * \code
00696   * Read
00697   * Default value: 0x00
00698   * [7:0] SHUB7[7:0]: SLV1 second external sensor, first byte of the first axis.
00699   * \endcode
00700 */
00701 #define  LSM6DS3_XG_SENSORHUB7_REG                       0x34
00702 
00703 /**
00704   * @brief SENSORHUB REGISTER 8 : SLV1 second external sensor, first axis output register (r). The value is expressed as 16bit word in two�s complement
00705   * \code
00706   * Read
00707   * Default value: 0x00
00708   * [7:0] SHUB8[7:0]: SLV1 second external sensor, second byte of the first axis.
00709   * \endcode
00710 */
00711 #define  LSM6DS3_XG_SENSORHUB8_REG                       0x35
00712 
00713 /**
00714   * @brief SENSORHUB REGISTER 9 : SLV1 second external sensor,, second axis output register (r). The value is expressed as 16bit word in two�s complement
00715   * \code
00716   * Read
00717   * Default value: 0x00
00718   * [7:0] SHUB9[7:0]: SLV1 second external sensor, first byte of the second axis.
00719   * \endcode
00720 */
00721 #define  LSM6DS3_XG_SENSORHUB9_REG                       0x36
00722 
00723 /**
00724   * @brief SLV1 second external sensor, second axis output register (r). The value is expressed as 16bit word in two�s complement
00725   * \code
00726   * Read
00727   * Default value: 0x00
00728   * [7:0] SHUB10[7:0]: SLV1 second external sensor, second byte of the second axis.
00729   * \endcode
00730 */
00731 #define  LSM6DS3_XG_SENSORHUB10_REG                       0x37
00732 
00733 /**
00734   * @brief SLV1 second external sensor, third axis output register (r). The value is expressed as 16bit word in two�s complement
00735   * \code
00736   * Read
00737   * Default value: 0x00
00738   * [7:0] SHUB11[7:0]: SLV1 second external sensor, first byte of the third axis.
00739   * \endcode
00740 */
00741 #define  LSM6DS3_XG_SENSORHUB11_REG                       0x38
00742 
00743 /**
00744   * @brief SLV1 second external sensor, third axis output register (r). The value is expressed as 16bit word in two�s complement
00745   * \code
00746   * Read
00747   * Default value: 0x00
00748   * [7:0] SHUB12[7:0]: SLV1 second external sensor, second byte of the third axis.
00749   * \endcode
00750 */
00751 #define  LSM6DS3_XG_SENSORHUB12_REG                       0x39
00752 
00753 
00754 
00755 
00756 /***************************************** GYROSCOPE REGISTERS ********************************************/
00757 
00758 /**
00759   * @brief Angular rate sensor Control Register 2
00760   * \code
00761   * Read/write
00762   * Default value: 0x00
00763   * [7:4] ODR_G[3:0]: Gyroscope output data rate selection
00764   * [3:2] FS_G[1-0]: Gyroscope full-scale selection
00765   * [1] FS_125: Gyroscope full-scale at 125 dps
00766   * [0] This bit must be set to �0� for the correct operation of the device
00767   * \endcode
00768  */
00769 #define LSM6DS3_XG_CTRL2_G                                  0x11
00770 
00771 
00772 /**
00773   * @brief Angular rate sensor Control Register 6
00774   * \code
00775   * Read/write
00776   * Default value: 0x00
00777   * [7] TRIG_EN: Data edge sensitive trigger Enable. Default value: 0
00778   * [6] LVLen: Data level sensitive trigger Enable. Default value: 0
00779   * [5] LVL2en: Level sensitive latched Enable. Default value: 0
00780   * [4] XL_H_MODE: High Performance operating mode disable for accelerometer(1). Default value: 0
00781   * [3:0] This bit must be set to �0� for the correct operation of the device
00782   * \endcode
00783  */
00784 #define LSM6DS3_XG_CTRL6_G                                  0x15
00785 
00786 
00787 /**
00788 * @brief Angular rate sensor Control Register 7
00789 * \code
00790 * Read/write
00791 * Default value: 0x00
00792 * [7] G_H_MODE: High Performance operating mode disable for Gyroscope(1) . Default: 0
00793 * [6] HP_EN: High Pass filter Enable. Default Value: 0
00794 * [5:4] HPCF_G[1:0]: Gyroscope High Pass filter Cut Off frequency selection. Default value: 00
00795 * [3:0] This bit must be set to �0� for the correct operation of the device
00796 * \endcode
00797 */
00798 #define LSM6DS3_XG_CTRL7_G                                  0x16
00799 
00800 /**
00801   * @brief Gyroscope data (LSB)
00802   * \code
00803   * Read
00804   * \endcode
00805  */
00806 #define LSM6DS3_XG_OUT_X_L_G                                0x22
00807 
00808 
00809 /**
00810   * @brief Gyroscope data (MSB)
00811   * \code
00812   * Read
00813   * \endcode
00814  */
00815 #define LSM6DS3_XG_OUT_X_H_G                                0x23
00816 
00817 
00818 /**
00819  * @brief Gyroscope data (LSB)
00820  * \code
00821  * Read
00822  * \endcode
00823  */
00824 #define LSM6DS3_XG_OUT_Y_L_G                                0x24
00825 
00826 
00827 /**
00828  * @brief Gyroscope data (MSB)
00829  * \code
00830  * Read
00831  * \endcode
00832  */
00833 #define LSM6DS3_XG_OUT_Y_H_G                                0x25
00834 
00835 
00836 /**
00837  * @brief Gyroscope data (LSB)
00838  * \code
00839  * Read
00840  * \endcode
00841  */
00842 #define LSM6DS3_XG_OUT_Z_L_G                                0x26
00843 
00844 
00845 /**
00846  * @brief Gyroscope data (MSB)
00847  * \code
00848  * Read
00849  * \endcode
00850  */
00851 #define LSM6DS3_XG_OUT_Z_H_G                                0x27
00852 
00853 
00854 
00855 /*************************************** ACCELEROMETER REGISTERS *******************************************/
00856 
00857 /**
00858  * @brief Linear acceleration sensor Control Register 1
00859  * \code
00860  * Read/write
00861  * Default value: 0x00
00862  * [7:4] ODR_XL3-0: Accelerometer Output data rate and power mode selection
00863  * [3:2] FS_XL1-0: Accelerometer full-scale selection
00864  * [1:0] BW_XL1-0: Anti-aliasing filter bandwidth selection
00865  * \endcode
00866  */
00867 #define LSM6DS3_XG_CTRL1_XL                                 0x10
00868 
00869 /**
00870 * @brief XL sensor Control Register 8
00871 * \code
00872 * Read/write
00873 * Default value: 0x00
00874 * [7:3] This bit must be set to �0� for the correct operation of the device
00875 * [2] SLOPE_FDS: Enable HP filter on output registers and FIFO. Default value: 0
00876 * [1:0] This bit must be set to �0� for the correct operation of the device
00877 * \endcode
00878 */
00879 #define LSM6DS3_XG_CTRL8_XL                                 0x17
00880 
00881 /**
00882   * @brief Linear acceleration sensor Control Register 9
00883   * \code
00884   * Read/write
00885   * Default value: 0x38
00886   * [7:6] These bits must be set to �0� for the correct operation of the device
00887   * [5] Zen_XL: Accelerometers�s Z-axis output enable
00888   * [4] Yen_XL: Accelerometers�s Y-axis output enable
00889   * [3] Xen_XL: Accelerometers�s X-axis output enable
00890   * [2:0] These bits must be set to �0� for the correct operation of the device
00891   * \endcode
00892 */
00893 #define LSM6DS3_XG_CTRL9_XL                                 0x18
00894 
00895 
00896 /**
00897  * @brief Accelerometer data (LSB)
00898  * \code
00899  * Read
00900  * \endcode
00901  */
00902 #define LSM6DS3_XG_OUT_X_L_XL                                0x28
00903 
00904 
00905 /**
00906  * @brief Accelerometer data (MSB)
00907  * \code
00908  * Read
00909  * \endcode
00910  */
00911 #define LSM6DS3_XG_OUT_X_H_XL                                0x29
00912 
00913 
00914 /**
00915  * @brief Accelerometer data (LSB)
00916  * \code
00917  * Read
00918  * \endcode
00919  */
00920 #define LSM6DS3_XG_OUT_Y_L_XL                                0x2A
00921 
00922 
00923 /**
00924  * @brief Accelerometer data (MSB)
00925  * \code
00926  * Read
00927  * \endcode
00928  */
00929 #define LSM6DS3_XG_OUT_Y_H_XL                                0x2B
00930 
00931 
00932 /**
00933  * @brief Accelerometer data (LSB)
00934  * \code
00935  * Read
00936  * \endcode
00937  */
00938 #define LSM6DS3_XG_OUT_Z_L_XL                                0x2C
00939 
00940 
00941 /**
00942  * @brief Accelerometer data (MSB)
00943  * \code
00944  * Read
00945  * \endcode
00946  */
00947 #define LSM6DS3_XG_OUT_Z_H_XL                                0x2D
00948 
00949 /******************************************************************************/
00950 /************* END ACCELEROMETER AND GYROSCOPE REGISTER MAPPING  **************/
00951 /******************************************************************************/
00952 
00953 
00954 /************************************** COMMON REGISTERS VALUE *******************************************/
00955 
00956 /**
00957 * @brief Device Address
00958 */
00959 #define LSM6DS3_ADDRESS_LOW                                 0xD4    // SAD[0] = 0
00960 #define LSM6DS3_ADDRESS_HIGH                                0xD6    // SAD[0] = 1
00961 #define LSM6DS3_XG_MEMS_ADDRESS                             LSM6DS3_ADDRESS_LOW    // SAD[0] = 0
00962 
00963 
00964 /**
00965  * @brief Device Identifier. Default value of the WHO_AM_I register.
00966  */
00967 #define I_AM_LSM6DS3_XG                                 ((uint8_t)0x69)
00968 
00969 
00970 /**
00971   * @brief  Register address automatically incremented during a multiple byte
00972   *         access with a serial interface (I2C or SPI). Default value of the
00973   *         LSM6DS3_XG_CTRL3_C register.
00974   */
00975 #define LSM6DS3_XG_IF_INC                               ((uint8_t)0x04)
00976 
00977 #define LSM6DS3_XG_IF_INC_MASK                          ((uint8_t)0x04)
00978 
00979 /** @defgroup LSM6DS3_XG_FIFO_Output_Data_Rate_Selection_FIFO_CTRL5 LSM6DS3_XG_FIFO_Output_Data_Rate_Selection_FIFO_CTRL5
00980  * @{
00981  */
00982 #define LSM6DS3_XG_FIFO_ODR_NA                          ((uint8_t)0x00) /*!< FIFO ODR NA */
00983 #define LSM6DS3_XG_FIFO_ODR_10HZ                        ((uint8_t)0x08) /*!< FIFO ODR 10Hz */
00984 #define LSM6DS3_XG_FIFO_ODR_25HZ                        ((uint8_t)0x10) /*!< FIFO ODR 25Hz */
00985 #define LSM6DS3_XG_FIFO_ODR_50HZ                        ((uint8_t)0x18) /*!< FIFO ODR 50Hz */
00986 #define LSM6DS3_XG_FIFO_ODR_100HZ                       ((uint8_t)0x20) /*!< FIFO ODR 100Hz */
00987 #define LSM6DS3_XG_FIFO_ODR_200HZ                       ((uint8_t)0x28) /*!< FIFO ODR 200Hz */
00988 #define LSM6DS3_XG_FIFO_ODR_400HZ                       ((uint8_t)0x30) /*!< FIFO ODR 400Hz */
00989 #define LSM6DS3_XG_FIFO_ODR_800HZ                       ((uint8_t)0x38) /*!< FIFO ODR 800Hz */
00990 #define LSM6DS3_XG_FIFO_ODR_1600HZ                      ((uint8_t)0x40) /*!< FIFO ODR 1600Hz */
00991 #define LSM6DS3_XG_FIFO_ODR_3300HZ                      ((uint8_t)0x48) /*!< FIFO ODR 3300Hz */
00992 #define LSM6DS3_XG_FIFO_ODR_6600HZ                      ((uint8_t)0x50) /*!< FIFO ODR 6600Hz */
00993 
00994 #define LSM6DS3_XG_FIFO_ODR_MASK                        ((uint8_t)0x78)
00995 /**
00996  * @}
00997  */
00998 
00999 /** @defgroup LSM6DS3_XG_FIFO_Mode_Selection_FIFO_CTRL5 LSM6DS3_XG_FIFO_Mode_Selection_FIFO_CTRL5
01000  * @{
01001  */
01002 #define LSM6DS3_XG_FIFO_MODE_BYPASS                     ((uint8_t)0x00) /*!< BYPASS Mode. FIFO turned off */
01003 #define LSM6DS3_XG_FIFO_MODE_FIFO                       ((uint8_t)0x01) /*!< FIFO Mode. Stop collecting data when FIFO is full */
01004 #define LSM6DS3_XG_FIFO_MODE_CONTINUOUS_THEN_FIFO       ((uint8_t)0x03) /*!< CONTINUOUS mode until trigger is deasserted, then FIFO mode */
01005 #define LSM6DS3_XG_FIFO_MODE_BYPASS_THEN_CONTINUOUS     ((uint8_t)0x04) /*!< BYPASS mode until trigger is deasserted, then CONTINUOUS mode */
01006 #define LSM6DS3_XG_FIFO_MODE_CONTINUOUS_OVERWRITE       ((uint8_t)0x05) /*!< CONTINUOUS mode. If the FIFO is full the new sample overwrite the older one */
01007 
01008 #define LSM6DS3_XG_FIFO_MODE_MASK                       ((uint8_t)0x07)
01009 /**
01010  * @}
01011  */
01012 
01013 
01014 /************************************** GYROSCOPE REGISTERS VALUE *******************************************/
01015 
01016 
01017 /** @addtogroup LSM6DS3_XG_Gyroscope_Output_Data_Rate_Selection_CTRL_REG1_G LSM6DS3_XG_Gyroscope_Output_Data_Rate_Selection_CTRL_REG1_G
01018  * @{
01019  */
01020 #define LSM6DS3_G_ODR_PD                                ((uint8_t)0x00) /*!< Output Data Rate: Power-down*/
01021 #define LSM6DS3_G_ODR_13HZ                              ((uint8_t)0x10) /*!< Output Data Rate: 13 Hz*/
01022 #define LSM6DS3_G_ODR_26HZ                              ((uint8_t)0x20) /*!< Output Data Rate: 26 Hz*/
01023 #define LSM6DS3_G_ODR_52HZ                              ((uint8_t)0x30) /*!< Output Data Rate: 52 Hz */
01024 #define LSM6DS3_G_ODR_104HZ                             ((uint8_t)0x40) /*!< Output Data Rate: 104 Hz */
01025 #define LSM6DS3_G_ODR_208HZ                             ((uint8_t)0x50) /*!< Output Data Rate: 208 Hz */
01026 #define LSM6DS3_G_ODR_416HZ                             ((uint8_t)0x60) /*!< Output Data Rate: 416 Hz */
01027 #define LSM6DS3_G_ODR_833HZ                             ((uint8_t)0x70) /*!< Output Data Rate: 833 Hz */
01028 #define LSM6DS3_G_ODR_1660HZ                            ((uint8_t)0x80) /*!< Output Data Rate: 1.66 kHz */
01029 
01030 #define LSM6DS3_G_ODR_MASK                              ((uint8_t)0xF0)
01031 
01032 /**
01033  * @}
01034  */
01035 
01036 
01037 /** @addtogroup LSM6DS3_XG_Gyroscope_Full_Scale_Selection_CTRL2_G LSM6DS3_XG_Gyroscope_Full_Scale_Selection_CTRL2_G
01038  * @{
01039  */
01040 #define LSM6DS3_G_FS_125_DISABLE                       ((uint8_t)0x00) /*!< Full scale: 125 dps enable: disable */
01041 #define LSM6DS3_G_FS_125_ENABLE                        ((uint8_t)0x02) /*!< Full scale: 125 dps enable: enable */
01042 
01043 #define LSM6DS3_G_FS_125_MASK                          ((uint8_t)0x02)
01044 
01045 #define LSM6DS3_G_FS_245                               ((uint8_t)0x00) /*!< Full scale: 245 dps*/
01046 #define LSM6DS3_G_FS_500                               ((uint8_t)0x04) /*!< Full scale: 500 dps */
01047 #define LSM6DS3_G_FS_1000                              ((uint8_t)0x08) /*!< Full scale: 1000 dps */
01048 #define LSM6DS3_G_FS_2000                              ((uint8_t)0x0C) /*!< Full scale: 2000 dps */
01049 
01050 #define LSM6DS3_G_FS_MASK                              ((uint8_t)0x0C)
01051 
01052 /**
01053  * @}
01054  */
01055 
01056 
01057 /** @addtogroup LSM6DS3_XG_Gyroscope_Z_Axis_Output_Enable_Selection_CTRL10_C LSM6DS3_XG_Gyroscope_Z_Axis_Output_Enable_Selection_CTRL10_C
01058  * @{
01059  */
01060 #define LSM6DS3_G_ZEN_DISABLE                          ((uint8_t)0x00) /*!< Gyroscope�s Z-axis output enable: disable */
01061 #define LSM6DS3_G_ZEN_ENABLE                           ((uint8_t)0x20) /*!< Gyroscope�s Z-axis output enable: enable */
01062 
01063 #define LSM6DS3_G_ZEN_MASK                             ((uint8_t)0x20)
01064 
01065 /**
01066  * @}
01067  */
01068 
01069 
01070 /** @addtogroup LSM6DS3_XG_Gyroscope_Y_Axis_Output_Enable_Selection_CTRL10_C LSM6DS3_XG_Gyroscope_Y_Axis_Output_Enable_Selection_CTRL10_C
01071  * @{
01072  */
01073 #define LSM6DS3_G_YEN_DISABLE                          ((uint8_t)0x00) /*!< Gyroscope�s Y-axis output enable: disable */
01074 #define LSM6DS3_G_YEN_ENABLE                           ((uint8_t)0x10) /*!< Gyroscope�s Y-axis output enable: enable */
01075 
01076 #define LSM6DS3_G_YEN_MASK                             ((uint8_t)0x10)
01077 
01078 /**
01079  * @}
01080  */
01081 
01082 
01083 /** @addtogroup LSM6DS3_XG_Gyroscope_X_Axis_Output_Enable_Selection_CTRL10_C LSM6DS3_XG_Gyroscope_X_Axis_Output_Enable_Selection_CTRL10_C
01084  * @{
01085  */
01086 #define LSM6DS3_G_XEN_DISABLE                          ((uint8_t)0x00) /*!< Gyroscope�s X-axis output enable: disable */
01087 #define LSM6DS3_G_XEN_ENABLE                           ((uint8_t)0x08) /*!< Gyroscope�s X-axis output enable: enable */
01088 
01089 #define LSM6DS3_G_XEN_MASK                             ((uint8_t)0x08)
01090 
01091 /**
01092  * @}
01093  */
01094 
01095 
01096 /************************************ ACCELEROMETER REGISTERS VALUE *****************************************/
01097 
01098 /** @addtogroup LSM6DS3_XG_Accelerometer_Output_Data_Rate_Selection_CTRL1_XL LSM6DS3_XG_Accelerometer_Output_Data_Rate_Selection_CTRL1_XL
01099  * @{
01100  */
01101 #define LSM6DS3_XL_ODR_PD                               ((uint8_t)0x00) /*!< Output Data Rate: Power-down*/
01102 #define LSM6DS3_XL_ODR_13HZ                             ((uint8_t)0x10) /*!< Output Data Rate: 13 Hz*/
01103 #define LSM6DS3_XL_ODR_26HZ                             ((uint8_t)0x20) /*!< Output Data Rate: 26 Hz*/
01104 #define LSM6DS3_XL_ODR_52HZ                             ((uint8_t)0x30) /*!< Output Data Rate: 52 Hz */
01105 #define LSM6DS3_XL_ODR_104HZ                            ((uint8_t)0x40) /*!< Output Data Rate: 104 Hz */
01106 #define LSM6DS3_XL_ODR_208HZ                            ((uint8_t)0x50) /*!< Output Data Rate: 208 Hz */
01107 #define LSM6DS3_XL_ODR_416HZ                            ((uint8_t)0x60) /*!< Output Data Rate: 416 Hz */
01108 #define LSM6DS3_XL_ODR_833HZ                            ((uint8_t)0x70) /*!< Output Data Rate: 833 Hz */
01109 #define LSM6DS3_XL_ODR_1660HZ                           ((uint8_t)0x80) /*!< Output Data Rate: 1.66 kHz */
01110 #define LSM6DS3_XL_ODR_3330HZ                           ((uint8_t)0x90) /*!< Output Data Rate: 3.33 kHz */
01111 #define LSM6DS3_XL_ODR_6660HZ                           ((uint8_t)0xA0) /*!< Output Data Rate: 6.66 kHz */
01112 
01113 #define LSM6DS3_XL_ODR_MASK                             ((uint8_t)0xF0)
01114 
01115 /**
01116  * @}
01117  */
01118 
01119 
01120 /** @addtogroup LSM6DS3_XG_Accelerometer_Full_Scale_Selection_CTRL1_XL LSM6DS3_XG_Accelerometer_Full_Scale_Selection_CTRL1_XL
01121  * @{
01122  */
01123 #define LSM6DS3_XL_FS_2G                                ((uint8_t)0x00) /*!< Full scale: +- 2g */
01124 #define LSM6DS3_XL_FS_4G                                ((uint8_t)0x08) /*!< Full scale: +- 4g */
01125 #define LSM6DS3_XL_FS_8G                                ((uint8_t)0x0C) /*!< Full scale: +- 8g */
01126 #define LSM6DS3_XL_FS_16G                               ((uint8_t)0x04) /*!< Full scale: +- 16g */
01127 
01128 #define LSM6DS3_XL_FS_MASK                              ((uint8_t)0x0C)
01129 
01130 /**
01131  * @}
01132  */
01133 
01134 
01135 /** @addtogroup LSM6DS3_XG_Accelerometer_Anti_Aliasing_Filter_Bandwidth_Selection_CTRL1_XL LSM6DS3_XG_Accelerometer_Anti_Aliasing_Filter_Bandwidth_Selection_CTRL1_XL
01136  * @{
01137  */
01138 #define LSM6DS3_XL_BW_400HZ                             ((uint8_t)0x00) /*!< Anti-aliasing filter bandwidht: 400 Hz */
01139 #define LSM6DS3_XL_BW_200HZ                             ((uint8_t)0x01) /*!< Anti-aliasing filter bandwidht: 200 Hz */
01140 #define LSM6DS3_XL_BW_100HZ                             ((uint8_t)0x02) /*!< Anti-aliasing filter bandwidht: 100 Hz */
01141 #define LSM6DS3_XL_BW_50HZ                              ((uint8_t)0x03) /*!< Anti-aliasing filter bandwidht: 50 Hz */
01142 
01143 #define LSM6DS3_XL_BW_MASK                              ((uint8_t)0x03)
01144 
01145 /**
01146  * @}
01147  */
01148 
01149 
01150 /** @addtogroup LSM6DS3_XG_Accelerometer_Z_Axis_Output_Enable_Selection_CTRL9_XL LSM6DS3_XG_Accelerometer_Z_Axis_Output_Enable_Selection_CTRL9_XL
01151  * @{
01152  */
01153 #define LSM6DS3_XL_ZEN_DISABLE                          ((uint8_t)0x00) /*!< Accelerometer�s Z-axis output enable: disable */
01154 #define LSM6DS3_XL_ZEN_ENABLE                           ((uint8_t)0x20) /*!< Accelerometer�s Z-axis output enable: enable */
01155 
01156 #define LSM6DS3_XL_ZEN_MASK                             ((uint8_t)0x20)
01157 
01158 /**
01159  * @}
01160  */
01161 
01162 
01163 /** @addtogroup LSM6DS3_XG_Accelerometer_Y_Axis_Output_Enable_Selection_CTRL9_XL LSM6DS3_XG_Accelerometer_Y_Axis_Output_Enable_Selection_CTRL9_XL
01164  * @{
01165  */
01166 #define LSM6DS3_XL_YEN_DISABLE                          ((uint8_t)0x00) /*!< Accelerometer�s Y-axis output enable: disable */
01167 #define LSM6DS3_XL_YEN_ENABLE                           ((uint8_t)0x10) /*!< Accelerometer�s Y-axis output enable: enable */
01168 
01169 #define LSM6DS3_XL_YEN_MASK                             ((uint8_t)0x10)
01170 
01171 /**
01172  * @}
01173  */
01174 
01175 
01176 /** @addtogroup LSM6DS3_XG_Accelerometer_X_Axis_Output_Enable_Selection_CTRL9_XL LSM6DS3_XG_Accelerometer_X_Axis_Output_Enable_Selection_CTRL9_XL
01177  * @{
01178  */
01179 #define LSM6DS3_XL_XEN_DISABLE                          ((uint8_t)0x00) /*!< Accelerometer�s X-axis output enable: disable */
01180 #define LSM6DS3_XL_XEN_ENABLE                           ((uint8_t)0x08) /*!< Accelerometer�s X-axis output enable: enable */
01181 
01182 #define LSM6DS3_XL_XEN_MASK                             ((uint8_t)0x08)
01183 
01184 /**
01185  * @}
01186  */
01187 
01188 /** @addtogroup LSM6DS3_XG_Accelerometer_FF_DUR5_Selection_WAKE_UP_DUR LSM6DS3_XG_Accelerometer_FF_DUR5_Selection_WAKE_UP_DUR
01189  * @{
01190  */
01191 #define LSM6DS3_XG_WAKE_UP_DUR_FF_DUR5_DEFAULT          ((uint8_t)0x00)
01192 
01193 #define LSM6DS3_XG_WAKE_UP_DUR_FF_DUR5_MASK             ((uint8_t)0x80)
01194 /**
01195  * @}
01196  */
01197 
01198 /** @addtogroup LSM6DS3_XG_Accelerometer_WAKE_DUR_Selection_WAKE_UP_DUR LSM6DS3_XG_Accelerometer_WAKE_DUR_Selection_WAKE_UP_DUR
01199  * @{
01200  */
01201 #define LSM6DS3_XG_WAKE_UP_DUR_WAKE_DUR_DEFAULT         ((uint8_t)0x00)
01202 
01203 #define LSM6DS3_XG_WAKE_UP_DUR_WAKE_DUR_MASK            ((uint8_t)0x60)
01204 /**
01205  * @}
01206  */
01207 
01208 /** @addtogroup LSM6DS3_XG_Accelerometer_TIMER_HR_Selection_WAKE_UP_DUR LSM6DS3_XG_Accelerometer_TIMER_HR_Selection_WAKE_UP_DUR
01209  * @{
01210  */
01211 #define LSM6DS3_XG_WAKE_UP_DUR_TIMER_HR_DEFAULT         ((uint8_t)0x00)
01212 
01213 #define LSM6DS3_XG_WAKE_UP_DUR_TIMER_HR_MASK            ((uint8_t)0x10)
01214 /**
01215  * @}
01216  */
01217 
01218 /** @addtogroup LSM6DS3_XG_Accelerometer_SLEEP_DUR_Selection_WAKE_UP_DUR LSM6DS3_XG_Accelerometer_SLEEP_DUR_Selection_WAKE_UP_DUR
01219  * @{
01220  */
01221 #define LSM6DS3_XG_WAKE_UP_DUR_SLEEP_DUR_DEFAULT        ((uint8_t)0x00)
01222 
01223 #define LSM6DS3_XG_WAKE_UP_DUR_SLEEP_DUR_MASK           ((uint8_t)0x0F)
01224 /**
01225  * @}
01226  */
01227 
01228 /** @addtogroup LSM6DS3_XG_Accelerometer_FF_DUR_Selection_FREE_FALL LSM6DS3_XG_Accelerometer_FF_DUR_Selection_FREE_FALL
01229  * @{
01230  */
01231 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_DUR_DEFAULT        ((uint8_t)0x00)
01232 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_DUR_TYPICAL        ((uint8_t)0x30)
01233 
01234 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_DUR_MASK           ((uint8_t)0xF8)
01235 /**
01236  * @}
01237  */
01238 
01239 /** @addtogroup LSM6DS3_XG_Accelerometer_FF_THS_Selection_FREE_FALL LSM6DS3_XG_Accelerometer_FF_THS_Selection_FREE_FALL
01240  * @{
01241  */
01242 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_156MG          ((uint8_t)0x00)
01243 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_219MG          ((uint8_t)0x01)
01244 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_250MG          ((uint8_t)0x02)
01245 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_312MG          ((uint8_t)0x03)
01246 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_344MG          ((uint8_t)0x04)
01247 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_406MG          ((uint8_t)0x05)
01248 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_469MG          ((uint8_t)0x06)
01249 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_500MG          ((uint8_t)0x07)
01250 
01251 #define LSM6DS3_XG_WAKE_FREE_FALL_FF_THS_MASK           ((uint8_t)0x07)
01252 
01253 /**
01254  * @}
01255  */
01256 
01257 
01258 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_INACT_STATE_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_INACT_STATE_Selection_MD1_CFG
01259  * @{
01260  */
01261 #define LSM6DS3_XG_MD1_CFG_INT1_INACT_STATE_DISABLE     ((uint8_t)0x00)
01262 #define LSM6DS3_XG_MD1_CFG_INT1_INACT_STATE_ENABLE      ((uint8_t)0x80)
01263 
01264 #define LSM6DS3_XG_MD1_CFG_INT1_INACT_STATE_MASK        ((uint8_t)0x80)
01265 /**
01266  * @}
01267  */
01268 
01269 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_SINGLE_TAP_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_SINGLE_TAP_Selection_MD1_CFG
01270  * @{
01271  */
01272 #define LSM6DS3_XG_MD1_CFG_INT1_SINGLE_TAP_DISABLE      ((uint8_t)0x00)
01273 #define LSM6DS3_XG_MD1_CFG_INT1_SINGLE_TAP_ENABLE       ((uint8_t)0x40)
01274 
01275 #define LSM6DS3_XG_MD1_CFG_INT1_SINGLE_TAP_MASK         ((uint8_t)0x40)
01276 /**
01277  * @}
01278  */
01279 
01280 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_WU_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_WU_Selection_MD1_CFG
01281  * @{
01282  */
01283 #define LSM6DS3_XG_MD1_CFG_INT1_WU_DISABLE              ((uint8_t)0x00)
01284 #define LSM6DS3_XG_MD1_CFG_INT1_WU_ENABLE               ((uint8_t)0x20)
01285 
01286 #define LSM6DS3_XG_MD1_CFG_INT1_WU_MASK                 ((uint8_t)0x20)
01287 /**
01288  * @}
01289  */
01290 
01291 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_FF_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_FF_Selection_MD1_CFG
01292  * @{
01293  */
01294 #define LSM6DS3_XG_MD1_CFG_INT1_FF_DISABLE              ((uint8_t)0x00)
01295 #define LSM6DS3_XG_MD1_CFG_INT1_FF_ENABLE               ((uint8_t)0x10)
01296 
01297 #define LSM6DS3_XG_MD1_CFG_INT1_FF_MASK                 ((uint8_t)0x10)
01298 /**
01299  * @}
01300  */
01301 
01302 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_DOUBLE_TAP_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_DOUBLE_TAP_Selection_MD1_CFG
01303  * @{
01304  */
01305 #define LSM6DS3_XG_MD1_CFG_INT1_DOUBLE_TAP_DISABLE      ((uint8_t)0x00)
01306 #define LSM6DS3_XG_MD1_CFG_INT1_DOUBLE_TAP_ENABLE       ((uint8_t)0x08)
01307 
01308 #define LSM6DS3_XG_MD1_CFG_INT1_DOUBLE_TAP_MASK         ((uint8_t)0x08)
01309 /**
01310  * @}
01311  */
01312 
01313 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_6D_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_6D_Selection_MD1_CFG
01314  * @{
01315  */
01316 #define LSM6DS3_XG_MD1_CFG_INT1_6D_DISABLE              ((uint8_t)0x00)
01317 #define LSM6DS3_XG_MD1_CFG_INT1_6D_ENABLE               ((uint8_t)0x04)
01318 
01319 #define LSM6DS3_XG_MD1_CFG_INT1_6D_MASK                 ((uint8_t)0x04)
01320 /**
01321  * @}
01322  */
01323 
01324 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_TILT_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_TILT_Selection_MD1_CFG
01325  * @{
01326  */
01327 #define LSM6DS3_XG_MD1_CFG_INT1_TILT_DISABLE            ((uint8_t)0x00)
01328 #define LSM6DS3_XG_MD1_CFG_INT1_TILT_ENABLE             ((uint8_t)0x02)
01329 
01330 #define LSM6DS3_XG_MD1_CFG_INT1_TILT_MASK               ((uint8_t)0x02)
01331 /**
01332  * @}
01333  */
01334 
01335 /** @addtogroup LSM6DS3_XG_Accelerometer_INT1_TIMER_Selection_MD1_CFG LSM6DS3_XG_Accelerometer_INT1_TIMER_Selection_MD1_CFG
01336  * @{
01337  */
01338 #define LSM6DS3_XG_MD1_CFG_INT1_TIMER_DISABLE           ((uint8_t)0x00)
01339 #define LSM6DS3_XG_MD1_CFG_INT1_TIMER_ENABLE            ((uint8_t)0x01)
01340 
01341 #define LSM6DS3_XG_MD1_CFG_INT1_TIMER_MASK              ((uint8_t)0x01)
01342 
01343 /**
01344  * @}
01345  */
01346 
01347 /** @addtogroup LSM6DS3_XG_Accelerometer_FF_IA_Enable_WAKE_UP_SRC LSM6DS3_XG_Accelerometer_FF_IA_Enable_WAKE_UP_SRC
01348  * @{
01349  */
01350 #define LSM6DS3_XG_WAKE_UP_SRC_FF_IA_DISABLE            ((uint8_t)0x00)
01351 #define LSM6DS3_XG_WAKE_UP_SRC_FF_IA_ENABLE             ((uint8_t)0x20)
01352 
01353 #define LSM6DS3_XG_WAKE_UP_SRC_FF_IA_MASK               ((uint8_t)0x20)
01354 /**
01355  * @}
01356  */
01357 
01358 /** @addtogroup LSM6DS3_XG_Accelerometer_SLEEP_STATE_IA_Enable_WAKE_UP_SRC LSM6DS3_XG_Accelerometer_SLEEP_STATE_IA_Enable_WAKE_UP_SRC
01359  * @{
01360  */
01361 #define LSM6DS3_XG_WAKE_UP_SRC_SLEEP_STATE_IA_DISABLE   ((uint8_t)0x00)
01362 #define LSM6DS3_XG_WAKE_UP_SRC_SLEEP_STATE_IA_ENABLE    ((uint8_t)0x10)
01363 
01364 #define LSM6DS3_XG_WAKE_UP_SRC_SLEEP_STATE_IA_MASK      ((uint8_t)0x10)
01365 /**
01366  * @}
01367  */
01368 
01369 /** @addtogroup LSM6DS3_XG_Accelerometer_WU_IA_Enable_WAKE_UP_SRC LSM6DS3_XG_Accelerometer_WU_IA_Enable_WAKE_UP_SRC
01370  * @{
01371  */
01372 #define LSM6DS3_XG_WAKE_UP_SRC_WU_IA_DISABLE            ((uint8_t)0x00)
01373 #define LSM6DS3_XG_WAKE_UP_SRC_WU_IA_ENABLE             ((uint8_t)0x08)
01374 
01375 #define LSM6DS3_XG_WAKE_UP_SRC_WU_IA_MASK               ((uint8_t)0x08)
01376 /**
01377  * @}
01378  */
01379 
01380 /** @addtogroup LSM6DS3_XG_Accelerometer_X_WU_Enable_WAKE_UP_SRC LSM6DS3_XG_Accelerometer_X_WU_Enable_WAKE_UP_SRC
01381  * @{
01382  */
01383 #define LSM6DS3_XG_WAKE_UP_SRC_X_WU_DISABLE             ((uint8_t)0x00)
01384 #define LSM6DS3_XG_WAKE_UP_SRC_X_WU_ENABLE              ((uint8_t)0x04)
01385 
01386 #define LSM6DS3_XG_WAKE_UP_SRC_X_WU_MASK                ((uint8_t)0x04)
01387 /**
01388  * @}
01389  */
01390 
01391 /** @addtogroup LSM6DS3_XG_Accelerometer_Y_WU_Enable_WAKE_UP_SRC LSM6DS3_XG_Accelerometer_Y_WU_Enable_WAKE_UP_SRC
01392  * @{
01393  */
01394 #define LSM6DS3_XG_WAKE_UP_SRC_Y_WU_DISABLE             ((uint8_t)0x00)
01395 #define LSM6DS3_XG_WAKE_UP_SRC_Y_WU_ENABLE              ((uint8_t)0x02)
01396 
01397 
01398 #define LSM6DS3_XG_WAKE_UP_SRC_Y_WU_MASK                ((uint8_t)0x02)
01399 /**
01400  * @}
01401  */
01402 
01403 /** @addtogroup LSM6DS3_XG_Accelerometer_Z_WU_Enable_WAKE_UP_SRC LSM6DS3_XG_Accelerometer_Z_WU_Enable_WAKE_UP_SRC
01404  * @{
01405  */
01406 #define LSM6DS3_XG_WAKE_UP_SRC_Z_WU_DISABLE             ((uint8_t)0x00)
01407 #define LSM6DS3_XG_WAKE_UP_SRC_Z_WU_ENABLE              ((uint8_t)0x01)
01408 
01409 #define LSM6DS3_XG_WAKE_UP_SRC_Z_WU_MASK                ((uint8_t)0x01)
01410 /**
01411  * @}
01412  */
01413 
01414 /**
01415  * @}
01416  */
01417 
01418 /** @addtogroup LSM6DS3_Imported_Functions LSM6DS3_Imported_Functions
01419  * @{
01420  */
01421 
01422 /* Six axes sensor IO functions */
01423 extern IMU_6AXES_StatusTypeDef LSM6DS3_IO_Init( void );
01424 extern IMU_6AXES_StatusTypeDef LSM6DS3_IO_Write( uint8_t* pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr,
01425     uint16_t NumByteToWrite );
01426 extern IMU_6AXES_StatusTypeDef LSM6DS3_IO_Read( uint8_t* pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr,
01427     uint16_t NumByteToRead );
01428 extern void LSM6DS3_IO_ITConfig( void );
01429 
01430 /**
01431  * @}
01432  */
01433 
01434 /** @addtogroup LSM6DS3_Exported_Types LSM6DS3_Exported_Types
01435   * @{
01436   */
01437 /**
01438  * @brief  LSM6DS3 driver extended internal structure definition
01439  */
01440 typedef struct
01441 {
01442   IMU_6AXES_StatusTypeDef (*Enable_Free_Fall_Detection) (void);
01443   IMU_6AXES_StatusTypeDef (*Disable_Free_Fall_Detection) (void);
01444   IMU_6AXES_StatusTypeDef (*Get_Status_Free_Fall_Detection) (uint8_t *);
01445 } LSM6DS3_DrvExtTypeDef;
01446 
01447 /**
01448  * @}
01449  */
01450 
01451 /** @addtogroup LSM6DS3_Exported_Variables LSM6DS3_Exported_Variables
01452  * @{
01453  */
01454 
01455 /* Six axes sensor driver structure */
01456 extern IMU_6AXES_DrvTypeDef LSM6DS3Drv;
01457 extern IMU_6AXES_DrvExtTypeDef LSM6DS3Drv_ext;
01458 
01459 /**
01460  * @}
01461  */
01462 
01463 /**
01464  * @}
01465  */
01466 
01467 /**
01468  * @}
01469  */
01470 
01471 /**
01472  * @}
01473  */
01474 
01475 #ifdef __cplusplus
01476 }
01477 #endif
01478 
01479 #endif /* __LSM6DS3_H */
01480 
01481 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/