Shih-Ho Hsieh / XYZ_sensor_Platform
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers lsm6ds33.h Source File

lsm6ds33.h

Go to the documentation of this file.
00001 /**
00002  ******************************************************************************
00003  * @file    lsm6ds33.h
00004  * @author  MEMS Application Team
00005  * @version V1.2.0
00006  * @date    28-May-2015
00007  * @brief   This file contains definitions for the lsm6ds33.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 _LSM6DS33_XG_H
00040 #define _LSM6DS33_XG_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 LSM6DS33
00058  * @{
00059  */
00060 
00061 /** @addtogroup LSM6DS33_Exported_Defines LSM6DS33_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  LSM6DS33_XG_FUNC_CFG_ACCESS                                      0x01
00085 
00086 
00087 /**
00088   * @brief FIFO control register
00089   * \code
00090   * Read/write
00091   * Default value: 0x00
00092   * [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.
00093   * \endcode
00094 */
00095 #define LSM6DS33_XG_FIFO_CTRL1                               0x06
00096 
00097 /**
00098   * @brief FIFO control register
00099   * \code
00100   * Read/write
00101   * Default value: 0x00
00102   * [7] TIMER_PEDO_FIFO_EN: Enable Pedometer step counter and time stamp as 4th sensor FIFO data. Default: 0 disabled
00103   * [6] TIMER_PEDO_FIFO_DRDY : Pedometer FIFO write mode. Default: 0 disabled
00104   * [5:4] This bit must be set to �0� for the correct operation of the device
00105   * [3:0] FTH_[11:8] FIFO threshold level setting(1). Default value: 0000
00106   * \endcode
00107 */
00108 #define LSM6DS33_XG_FIFO_CTRL2                               0x07
00109 
00110 /**
00111   * @brief FIFO control register
00112   * \code
00113   * Read/write
00114   * Default value: 0x00
00115   * [7:6] This bit must be set to �0� for the correct operation of the device
00116   * [5:3] DEC_FIFO_GYRO[2:0]: Gyro FIFO decimation setting. Default value: 000
00117   * [2:0] DEC_FIFO_XL[2:0]: XL FIFO decimation setting. Default value: 000
00118   * \endcode
00119 */
00120 #define LSM6DS33_XG_FIFO_CTRL3                               0x08
00121 
00122 /**
00123   * @brief FIFO control register
00124   * \code
00125   * Read/write
00126   * Default value: 0x00
00127   * [7] This bit must be set to �0� for the correct operation of the device
00128   * [6] ONLY_HIGH_DATA :8 bit data storing in FIFO. Default: 0
00129   * [5:3] DEC_SLV1_FIFO[2:0] Second external sensor FIFO decimation setting. Default: 000
00130   * [2:0] DEC_SLV1_FIFO[2:0] First external sensor FIFO decimation setting. Default: 000
00131   * \endcode
00132 */
00133 #define LSM6DS33_XG_FIFO_CTRL4                               0x09
00134 
00135 
00136 /**
00137   * @brief FIFO control register
00138   * \code
00139   * Read/write
00140   * Default value: 0x00
00141   * [7] This bit must be set to �0� for the correct operation of the device
00142   * [6:3] ODR_FIFO_[3:0]: FIFO ODR selection. Default: 0000
00143   * [2:0] FIFO_MODE_[2:0] : FIFO mode selection bits. Default value: 000
00144   * \endcode
00145 */
00146 #define LSM6DS33_XG_FIFO_CTRL5                               0x0A
00147 
00148 
00149 /**
00150   * @brief Angular rate sensor sign and orientation register
00151   * \code
00152   * Read/write
00153   * Default value: 0x00
00154   * [7:6] This bit must be set to �0� for the correct operation of the device
00155   * [5] SignX_G:  Pitch axis (X) Angular rate sign. Default value: 0
00156   * [5] SignY_G:  Roll axis (Y) Angular rate sign. Default value: 0
00157   * [5] SignZ_G:  Pitch axis (Z) Angular rate sign. Default value: 0
00158   * [2:0] Orient[2:0] : Directional user orientation selection. Default Value: 000
00159   * \endcode
00160 */
00161 #define LSM6DS33_XG_ORIENT_CFG_G                               0x0B
00162 
00163 /**
00164   * @brief INT1 pad control registrer
00165   * \code
00166   * Read/write
00167   * Default value: 0x00
00168   * [7] INT1_PEDO: Pedometer step recognition interrupt enable on INT1 pad. Default value: 0
00169   * [6] INT1_SIGN_MOT: Significant motion interrupt enable on INT1 pad. Default value: 0
00170   * [5] INT1_FULL_FLAG: Full flag Interrupt Enable on INT1 pad. Default value: 0
00171   * [4] INT1_OVR: Overrun Interrupt on INT1 pad. Default value: 0
00172   * [3] INT1_FTH: FIFO threshold interrupt on INT1 pad. Default value: 0
00173   * [2] INT1_BOOT: Overrun Interrupt on INT1 pad. Default value: 0
00174   * [1] INT1_DRDY_G: Gyroscope Data Ready on INT1 pad. Default value: 0.
00175   * [0] INT1_DRDY_XL: Accelerometer Data Ready on INT1 pad. Default value: 0
00176   * \endcode
00177 */
00178 #define LSM6DS33_XG_INT1_CTRL                                 0x0D
00179 
00180 
00181 //new, done
00182 /**
00183   * @brief INT2 pad control registrer
00184   * \code
00185   * Read/write
00186   * Default value: 0x00
00187   * [7] INT2_PEDO: Pedometer step recognition interrupt enable on INT1 pad. Default value: 0
00188   * [6] INT2_SIGN_MOT: Significant motion interrupt enable on INT1 pad. Default value: 0
00189   * [5] INT2_FULL_FLAG: Full flag Interrupt Enable on INT1 pad. Default value: 0
00190   * [4] INT2_OVR: Overrun Interrupt on INT1 pad. Default value: 0
00191   * [3] INT2_FTH: FIFO threshold interrupt on INT1 pad. Default value: 0
00192   * [2] INT2_BOOT: Overrun Interrupt on INT1 pad. Default value: 0
00193   * [1] INT2_DRDY_G: Gyroscope Data Ready on INT1 pad. Default value: 0.
00194   * [0] INT2_DRDY_XL: Accelerometer Data Ready on INT1 pad. Default value: 0
00195   * \endcode
00196 */
00197 #define LSM6DS33_XG_INT2_CTRL                                 0x0E
00198 
00199 
00200 /**
00201   * @brief Device identifier register.
00202   * \code
00203   * Read
00204   * Default value:69
00205   * [7:0] This read-only register contains the device identifier
00206   * \endcode
00207 */
00208 #define LSM6DS33_XG_WHO_AM_I_ADDR                            0x0F
00209 
00210 
00211 
00212 /**
00213   * @brief Control Register 3
00214   * \code
00215   * Read/write
00216   * Default value: 0x00
00217   * [7] BOOT: Reboot memory content. Default value: 0
00218   * [6] BDU: Block Data Update. Default value: 0
00219   * [5] H_LACTIVE: Interrupt activation level. Default value: 0
00220   * [4] PP_OD: Push-pull/Open Drain selection on INT pad. Default value: 0
00221   * [3] SIM: SPI Serial Interface Mode selection. Default value: 0
00222   * [2] IF_INC: Register address automatically incremented during a multiple byte access with a serial interface (I2C or SPI). Default value: 0
00223   * [1] BLE: Big/Little Endian Data Selection. Default value: 0
00224   * [0] SW_RESET: Software Reset. Default value: 0
00225   * \endcode
00226 */
00227 #define LSM6DS33_XG_CTRL3_C                                  0x12
00228 
00229 /**
00230   * @brief Control Register 4
00231   * \code
00232   * Read/write
00233   * Default value: 0x00
00234   * [7] BW_SCAL_ODR: Accelerometer bandwidth selection. Default value: 0
00235   * [6] SLEEP_G: Gyroscope sleep mode enable. Default value: 0
00236   * [5] INT2_on_INT1: All interrupt signals available on INT1 pad enable. Default value: 0
00237   * [4] This bit must be set to �0� for the correct operation of the device
00238   * [3] DRDY_MASK: Configuration 1(3) Data Available Enable bit. Default Value: 0
00239   * [2] I2C_disable Disable I2C interface. Default value: 0
00240   * [1] MODE3_EN Enable auxiliary SPI interface (Mode3, refer to Table 1.). Default value: 0
00241   * [0] STOP_ON_FTH Enable FIFO threshold level use. Default value: 0.
00242 
00243   * \endcode
00244 */
00245 #define LSM6DS33_XG_CTRL4_C                                  0x13
00246 
00247 /**
00248   * @brief Control Register 4
00249   * \code
00250   * Read/write
00251   * Default value: 0x00
00252   * [7:4] This bit must be set to �0� for the correct operation of the device
00253   * [3:2] ST_G[1:0]: Angular rate sensor Self Test Enable. Default value: 00
00254   * [1:0] ST_XL[1:0]: Linear acceleration sensor Self Test Enable. Default value: 00
00255   * \endcode
00256 */
00257 #define LSM6DS33_XG_CTRL5_C                                  0x14
00258 
00259 
00260 /**
00261   * @brief Control Register 10
00262   * \code
00263   * Read/write
00264   * Default value: 0x38
00265   * [7:6] These bits must be set to �0� for the correct operation of the device
00266   * [5] Zen_G: Gyroscope�s Z-axis output enable. Default value: 1
00267   * [4] Yen_G: Gyroscope�s Y-axis output enable. Default value: 1
00268   * [3] Xen_G: Gyroscope�s X-axis output enable. Default value: 1
00269   * [2] FUNC_EN: Enable embedded functionalities (pedometer, tilt and significant motion) .  Default value: 0
00270   * [1] PEDO_RST_STEP: Reset pedometer step counter .  Default value: 0
00271   * [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
00272   * \endcode
00273 */
00274 #define LSM6DS33_XG_CTRL10_C                                 0x19
00275 
00276 
00277 
00278 /**
00279   * @brief Wake up interrupt source register
00280   * \code
00281   * Read
00282   * Default value: output
00283   * [7:6] This bit must be set to �0� for the correct operation of the device
00284   * [5] FF_IA: Free fall event detection status. Default: 0
00285   * [4] SLEEP_STATE_IA: Sleep event status. Default value: 0
00286   * [3] WU_IA: Wake up event detection status. Default
00287   * [2] X_WU: detection status on X axis. Default value: 0
00288   * [1] Y_WU: detection status on Y axis. Default value: 0
00289   * [0] Z_WU: detection status on Z axis. Default value: 0
00290   * \endcode
00291 */
00292 #define LSM6DS33_XG_WAKE_UP_SRC                                 0x1B
00293 
00294 /**
00295   * @brief Tap source register
00296   * \code
00297   * Read
00298   * Default value: output
00299   * [7] This bit must be set to �0� for the correct operation of the device
00300   * [6] TAP_IA: Tap event detection status. Default: 0
00301   * [5] SINGLE_TAP: Single tap event status. Default value: 0
00302   * [4] DOUBLE_TAP: Double tap event detection status. Default value: 0
00303   * [3] TAP_SIGN: Sign of acceleration detected by tap event. Default: 0
00304   * [2] X_TAP: Tap event detection status on X axis. Default value: 0
00305   * [1] Y_TAP: Tap event detection status on Y axis. Default value: 0
00306   * [0] Z_TAP: Tap event detection status on Z axis. Default value: 0
00307   * \endcode
00308 */
00309 #define LSM6DS33_XG_TAP_SRC                                    0x1C
00310 
00311 /**
00312   * @brief Portrait, landscape face-up and face-down source register
00313   * \code
00314   * Read
00315   * Default value: output
00316   * [7] This bit must be set to �0� for the correct operation of the device
00317   * [6] D6D_IA: Interrupt active for change position portrait, landscape, face-up, face-down. Default value: 0
00318   * [5] ZH: Z-axis high event (over-threshold). Default value: 0
00319   * [4] ZL: Z-axis low event (under-threshold). Default value: 0
00320   * [5] YH: Y-axis high event (over-threshold). Default value: 0
00321   * [4] YL: Y-axis low event (under-threshold). Default value: 0
00322   * [5] X_H: X-axis high event (over-threshold). Default value: 0
00323   * [4] X_L: X-axis low event (under-threshold). Default value: 0
00324   * \endcode
00325 */
00326 #define LSM6DS33_XG_D6D_SRC                                   0x1D
00327 
00328 /**
00329   * @brief Status register
00330   * \code
00331   * Read
00332   * Default value: output
00333   * [7:4] No meaning set
00334   * [3] EV_BOOT: Boot running flag signal. Default value: 0
00335   * [2] No meaning set
00336   * [1] GDA: Gyroscope new data avaialble. Default value: 0
00337   * [0] XLDA: Accelerometer new data avaialble. Default value: 0
00338   * \endcode
00339 */
00340 #define LSM6DS33_XG_STATUS_REG                                  0x1E
00341 
00342 #define LSM6DS33_XG_OUT_TEMP_L                                  0x20
00343 #define LSM6DS33_XG_OUT_TEMP_H                                  0x21
00344 
00345 /**
00346   * @brief FIFO status control register
00347   * \code
00348   * Read
00349   * Default value: 0x00
00350   * [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)
00351   * \endcode
00352 */
00353 #define LSM6DS33_XG_FIFO_STATUS1                                   0x3A
00354 
00355 /**
00356   * @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.
00357   * \code
00358   * Read
00359   * Default value: 0x00
00360   * [7] FTH FIFO watermark status. Deafult value: 0
00361   * [6] OVER_RUN: FIFO overrun status. Default value: 0
00362   * [5] FIFO_FULL: FIFO full status. Default value: 0
00363   * [5] FIFO_EMPTY: FIFO empty bit. Default value: 0; 0: FIFO contains data; 1: FIFO is empty
00364   * [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)
00365   * \endcode
00366 */
00367 #define LSM6DS33_XG_FIFO_STATUS2                                  0x3B
00368 
00369 /**
00370   * @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
00371   * \code
00372   * Read
00373   * Default value: 0x00
00374   * [7:0] FIFO_PATTERN_[7:0] : Word of recursive pattern read at the next reading
00375   * \endcode
00376 */
00377 #define LSM6DS33_XG_FIFO_STATUS3                                  0x3C
00378 
00379 /**
00380   * @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
00381   * \code
00382   * Read
00383   * Default value: 0x00
00384   * [1:0] FIFO_PATTERN_[9:8] : Word of recursive pattern read at the next reading
00385   * \endcode
00386 */
00387 #define LSM6DS33_XG_FIFO_STATUS4                                  0x3D
00388 
00389 /**
00390   * @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.
00391   * \code
00392   * Read
00393   * Default value: 0x00
00394   * [4:0] FIFO_PATTERN_[9:8] : Word of recursive pattern read at the next reading
00395   * \endcode
00396 */
00397 #define LSM6DS33_XG_FIFO_STATUS4                                  0x3D
00398 
00399 /**
00400   * @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.
00401   * \code
00402   * Read
00403   * Default value: 0x00
00404   * [7:0] DATA_OUT_FIFO_L_[7:0]: FIFO data output (First byte)
00405   * \endcode
00406 */
00407 #define LSM6DS33_XG_FIFO_DATA_OUT_L                                  0x3E
00408 
00409 /**
00410   * @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.
00411   * \code
00412   * Read
00413   * Default value: 0x00
00414   * [7:0] DATA_OUT_FIFO_H_[7:0]: FIFO data output (second byte)
00415   * \endcode
00416 */
00417 #define LSM6DS33_XG_FIFO_DATA_OUT_H                                  0x3F
00418 
00419 /**
00420   * @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).
00421   * \code
00422   * Read
00423   * Default value: output
00424   * [7:0] TIMESTAMP0_[7:0]: FIFO first byte data output
00425   * \endcode
00426 */
00427 #define LSM6DS33_XG_TIMESTAMP0_REG                                  0x40
00428 
00429 /**
00430   * @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).
00431   * \code
00432   * Read
00433   * Default value: output
00434   * [7:0] TIMESTAMP1_[7:0]: FIFO second byte data output
00435   * \endcode
00436 */
00437 #define LSM6DS33_XG_TIMESTAMP1_REG                                  0x41
00438 
00439 /**
00440   * @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).
00441   * \code
00442   * Read
00443   * Default value: output
00444   * [7:0] TIMESTAMP2_[7:0]: FIFO third byte data output
00445   * \endcode
00446 */
00447 #define LSM6DS33_XG_TIMESTAMP2_REG                                  0x42
00448 
00449 #define LSM6DS33_XG_STEP_TIMESTAMP_L                                0x49
00450 #define LSM6DS33_XG_STEP_TIMESTAMP_H                                0x4A
00451 /**
00452   * @brief Step counter output register (r).
00453   * \code
00454   * Read
00455   * Default value: output
00456   * [7:0] STEP_COUNTER_L_[7:0]: Step counter output (LSbyte)
00457   * \endcode
00458 */
00459 #define LSM6DS33_XG_STEP_COUNTER_L                                  0x4B
00460 
00461 /**
00462   * @brief Step counter output register (r).
00463   * \code
00464   * Read
00465   * Default value: output
00466   * [7:0] STEP_COUNTER_H_[7:0]: Step counter output (MSbyte)
00467   * \endcode
00468 */
00469 #define LSM6DS33_XG_STEP_COUNTER_H                                  0x4C
00470 
00471 /**
00472   * @brief Significant motion, tilt, step detector, soft iron and sensor hub interrupt source register
00473   * \code
00474   * Read
00475   * Default value: output
00476   * [7] This bit must be set to �0� for the correct operation of the device
00477   * [6] SIGN_MOTION_IA: Significant motion event detection status. Default value: 0
00478   * [5] TILT_IA: Tilt event detection status. Default value: 0
00479   * [5] STEP_DETECTED: Step detector event detection status. Default value: 0
00480   * [3:2]  This bit must be set to �0� for the correct operation of the device
00481   * [1] SI_END_OP:Soft iron calculation status. Default value: 0
00482   * [0] SENSORHUB_END_OP:Senso hub communication status.  Default value: 0
00483   * \endcode
00484 */
00485 #define LSM6DS33_XG_FUNC_SRC                                             0x53
00486 
00487 /**
00488   * @brief Time stamp, pedometer, tilt, filtering, and tap recognition functions configuration register
00489   * \code
00490   * Read/write
00491   * Default value: 0x00
00492   * [7] TIMER_EN: Time stamp count enable, output data are collected in TIMESTAMP0_REG (40h), TIMESTAMP1_REG (41h), TIMESTAMP2_REG (42h) register. Default: 0
00493   * [6] PEDO_EN: Pedometer algorithm enable(1). Default value: 0
00494   * [5] TILT_EN: Tilt calculation enable.(2) Default value: 0
00495   * [4] This bit must be set to �0� for the correct operation of the device
00496   * [3] TAP_X_EN: Enable X direction in tap recognition. Default value: 0
00497   * [2] TAP_Y_EN: Enable Z direction in tap recognition. Default value: 0
00498   * [1] TAP_Z_EN: Enable Z direction in tap recognition. Default value: 0
00499   * [0] LIR: Relatch of the time stamp, pedometer, tilt, filtering, and tap recognition functions routed to PINs.
00500   * \endcode
00501 */
00502 #define LSM6DS33_XG_TAP_CFG                                             0x58
00503 
00504 /**
00505   * @brief Portrait/landscape position and tap function threshold register
00506   * \code
00507   * Read/write
00508   * Default value: 0x00
00509   * [7] This bit must be set to �0� for the correct operation of the device
00510   * [6:5] SIXD_THS[1:0]: Threshold for D6D function. Default value: 00
00511   * [4:0] TAP_THS[4:0]: Threshold for tap recognition. Default value: 0000
00512   * \endcode
00513 */
00514 #define LSM6DS33_XG_TAP_THS_6D                                             0x59
00515 
00516 /**
00517   * @brief Tap recognition function setting register (r/w)
00518   * \code
00519   * Read/write
00520   * Default value: 0x00
00521   * [7:4] DUR[3:0]: Duration of maximum time gap for double tap recognition. Default: 0000
00522   * [3:2] QUIET[1:0]: Expected quiet time after a tap detection. Default value: 00
00523   * [1:0] SHOCK[1:0]: Maximum duration of over-threshold event. Default value: 00
00524   * \endcode
00525 */
00526 #define LSM6DS33_XG_INT_DUR2                                             0x5A
00527 
00528 /**
00529   * @brief Tap recognition function setting register
00530   * \code
00531   * Read/write
00532   * Default value: 0x00
00533   * [7] SINGLE_DOUBLE_TAP: Single/double tap event detection. Default: 0
00534   * [6] INACTIVITY: Inactivity event enable. Default value: 0
00535   * [5:0] WK_THS[5:0]:Threshold for wake-up. Default value: 0000
00536   * \endcode
00537 */
00538 #define LSM6DS33_XG_WAKE_UP_THS                                                   0x5B
00539 
00540 /**
00541   * @brief Free-fall, wake-up, time stamp and sleep mode functions duration setting register (r/w).
00542   * \code
00543   * Read/write
00544   * Default value: 0x00
00545   * [7] FF_DUR5:Free fall duration event. Default: 0
00546   * [6:5] WAKE_DUR[1:0]: Wake up duration event. Default: 00
00547   * [4] TIMER_HR: Time stamp register resolution setting(1). Default value: 0
00548   * [3:0] SLEEP_DUR[3:0] : Duration to go in sleep mode. Default value: 0000
00549   * \endcode
00550 */
00551 #define LSM6DS33_XG_WAKE_UP_DUR                                                   0x5C
00552 
00553 /**
00554   * @brief Free-fall function duration setting register
00555   * \code
00556   * Read/write
00557   * Default value: 0x00
00558   * [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
00559   * [2:0] FF_THS[2:0]: Free fall threshold setting. Default: 000.
00560   * \endcode
00561 */
00562 #define LSM6DS33_XG_WAKE_FREE_FALL                                                   0x5D
00563 
00564 /**
00565   * @brief Functions routing on INT1 register
00566   * \code
00567   * Read/write
00568   * Default value: 0x00
00569   * [7] INT1_INACT_STATE: Routing on INT1 of inactivity mode. Default: 0
00570   * [6] INT1_SINGLE_TAP: Single tap recognition routing on INT1. Default: 0
00571   * [5] INT1_WU: Routing of wake-up event on INT1. Default value: 0
00572   * [4] INT1_FF: Routing of free-fall event on INT1. Default value: 0
00573   * [3] INT1_TAP: Routing of tap event on INT1. Default value: 0
00574   * [2] INT1_6D: Routing of 6D event on INT1. Default value: 0
00575   * [1] INT1_TILT: Routing of tilt event on INT1. Default value: 0
00576   * [0] INT1_TIMER: Routing of end counter event of timer on INT1. Default value: 0
00577   * \endcode
00578 */
00579 #define LSM6DS33_XG_MD1_CFG                                                   0x5E
00580 
00581 /**
00582   * @brief Functions routing on INT2 register
00583   * \code
00584   * Read/write
00585   * Default value: 0x00
00586   * [7] INT2_INACT_STATE: Routing on INT1 of inactivity mode. Default: 0
00587   * [6] INT2_SINGLE_TAP: Single tap recognition routing on INT1. Default: 0
00588   * [5] INT2_WU: Routing of wake-up event on INT1. Default value: 0
00589   * [4] INT2_FF: Routing of free-fall event on INT1. Default value: 0
00590   * [3] INT2_TAP: Routing of tap event on INT1. Default value: 0
00591   * [2] INT2_6D: Routing of 6D event on INT1. Default value: 0
00592   * [1] INT2_TILT: Routing of tilt event on INT1. Default value: 0
00593   * [0] INT2_TIMER: Routing of end counter event of timer on INT1. Default value: 0
00594   * \endcode
00595 */
00596 #define LSM6DS33_XG_MD2_CFG                                                   0x5F
00597 
00598 /***************************************** SENSORHUB REGISTERS ********************************************/
00599 
00600 
00601 
00602 
00603 /***************************************** GYROSCOPE REGISTERS ********************************************/
00604 
00605 /**
00606   * @brief Angular rate sensor Control Register 2
00607   * \code
00608   * Read/write
00609   * Default value: 0x00
00610   * [7:4] ODR_G[3:0]: Gyroscope output data rate selection
00611   * [3:2] FS_G[1-0]: Gyroscope full-scale selection
00612   * [1] FS_125: Gyroscope full-scale at 125 dps
00613   * [0] This bit must be set to �0� for the correct operation of the device
00614   * \endcode
00615  */
00616 #define LSM6DS33_XG_CTRL2_G                                  0x11
00617 
00618 
00619 /**
00620   * @brief Angular rate sensor Control Register 6
00621   * \code
00622   * Read/write
00623   * Default value: 0x00
00624   * [7] TRIG_EN: Data edge sensitive trigger Enable. Default value: 0
00625   * [6] LVLen: Data level sensitive trigger Enable. Default value: 0
00626   * [5] LVL2en: Level sensitive latched Enable. Default value: 0
00627   * [4] XL_H_MODE: High Performance operating mode disable for accelerometer(1). Default value: 0
00628   * [3:0] This bit must be set to �0� for the correct operation of the device
00629   * \endcode
00630  */
00631 #define LSM6DS33_XG_CTRL6_G                                  0x15
00632 
00633 
00634 /**
00635 * @brief Angular rate sensor Control Register 7
00636 * \code
00637 * Read/write
00638 * Default value: 0x00
00639 * [7] G_H_MODE: High Performance operating mode disable for Gyroscope(1) . Default: 0
00640 * [6] HP_EN: High Pass filter Enable. Default Value: 0
00641 * [5:4] HPCF_G[1:0]: Gyroscope High Pass filter Cut Off frequency selection. Default value: 00
00642 * [3:0] This bit must be set to �0� for the correct operation of the device
00643 * \endcode
00644 */
00645 #define LSM6DS33_XG_CTRL7_G                                  0x16
00646 
00647 /**
00648   * @brief Gyroscope data (LSB)
00649   * \code
00650   * Read
00651   * \endcode
00652  */
00653 #define LSM6DS33_XG_OUT_X_L_G                                0x22
00654 
00655 
00656 /**
00657   * @brief Gyroscope data (MSB)
00658   * \code
00659   * Read
00660   * \endcode
00661  */
00662 #define LSM6DS33_XG_OUT_X_H_G                                0x23
00663 
00664 
00665 /**
00666  * @brief Gyroscope data (LSB)
00667  * \code
00668  * Read
00669  * \endcode
00670  */
00671 #define LSM6DS33_XG_OUT_Y_L_G                                0x24
00672 
00673 
00674 /**
00675  * @brief Gyroscope data (MSB)
00676  * \code
00677  * Read
00678  * \endcode
00679  */
00680 #define LSM6DS33_XG_OUT_Y_H_G                                0x25
00681 
00682 
00683 /**
00684  * @brief Gyroscope data (LSB)
00685  * \code
00686  * Read
00687  * \endcode
00688  */
00689 #define LSM6DS33_XG_OUT_Z_L_G                                0x26
00690 
00691 
00692 /**
00693  * @brief Gyroscope data (MSB)
00694  * \code
00695  * Read
00696  * \endcode
00697  */
00698 #define LSM6DS33_XG_OUT_Z_H_G                                0x27
00699 
00700 
00701 
00702 /*************************************** ACCELEROMETER REGISTERS *******************************************/
00703 
00704 /**
00705  * @brief Linear acceleration sensor Control Register 1
00706  * \code
00707  * Read/write
00708  * Default value: 0x00
00709  * [7:4] ODR_XL3-0: Accelerometer Output data rate and power mode selection
00710  * [3:2] FS_XL1-0: Accelerometer full-scale selection
00711  * [1:0] BW_XL1-0: Anti-aliasing filter bandwidth selection
00712  * \endcode
00713  */
00714 #define LSM6DS33_XG_CTRL1_XL                                 0x10
00715 
00716 /**
00717 * @brief XL sensor Control Register 8
00718 * \code
00719 * Read/write
00720 * Default value: 0x00
00721 * [7:3] This bit must be set to �0� for the correct operation of the device
00722 * [2] SLOPE_FDS: Enable HP filter on output registers and FIFO. Default value: 0
00723 * [1:0] This bit must be set to �0� for the correct operation of the device
00724 * \endcode
00725 */
00726 #define LSM6DS33_XG_CTRL8_XL                                 0x17
00727 
00728 /**
00729   * @brief Linear acceleration sensor Control Register 9
00730   * \code
00731   * Read/write
00732   * Default value: 0x38
00733   * [7:6] These bits must be set to �0� for the correct operation of the device
00734   * [5] Zen_XL: Accelerometers�s Z-axis output enable
00735   * [4] Yen_XL: Accelerometers�s Y-axis output enable
00736   * [3] Xen_XL: Accelerometers�s X-axis output enable
00737   * [2:0] These bits must be set to �0� for the correct operation of the device
00738   * \endcode
00739 */
00740 #define LSM6DS33_XG_CTRL9_XL                                 0x18
00741 
00742 
00743 /**
00744  * @brief Accelerometer data (LSB)
00745  * \code
00746  * Read
00747  * \endcode
00748  */
00749 #define LSM6DS33_XG_OUT_X_L_XL                                0x28
00750 
00751 
00752 /**
00753  * @brief Accelerometer data (MSB)
00754  * \code
00755  * Read
00756  * \endcode
00757  */
00758 #define LSM6DS33_XG_OUT_X_H_XL                                0x29
00759 
00760 
00761 /**
00762  * @brief Accelerometer data (LSB)
00763  * \code
00764  * Read
00765  * \endcode
00766  */
00767 #define LSM6DS33_XG_OUT_Y_L_XL                                0x2A
00768 
00769 
00770 /**
00771  * @brief Accelerometer data (MSB)
00772  * \code
00773  * Read
00774  * \endcode
00775  */
00776 #define LSM6DS33_XG_OUT_Y_H_XL                                0x2B
00777 
00778 
00779 /**
00780  * @brief Accelerometer data (LSB)
00781  * \code
00782  * Read
00783  * \endcode
00784  */
00785 #define LSM6DS33_XG_OUT_Z_L_XL                                0x2C
00786 
00787 
00788 /**
00789  * @brief Accelerometer data (MSB)
00790  * \code
00791  * Read
00792  * \endcode
00793  */
00794 #define LSM6DS33_XG_OUT_Z_H_XL                                0x2D
00795 
00796 /******************************************************************************/
00797 /************* END ACCELEROMETER AND GYROSCOPE REGISTER MAPPING  **************/
00798 /******************************************************************************/
00799 
00800 
00801 /************************************** COMMON REGISTERS VALUE *******************************************/
00802 
00803 /**
00804 * @brief Device Address
00805 */
00806 #define LSM6DS33_ADDRESS_LOW                                 0xD4    // SAD[0] = 0
00807 #define LSM6DS33_ADDRESS_HIGH                                0xD6    // SAD[0] = 1
00808 #define LSM6DS33_XG_MEMS_ADDRESS                             LSM6DS33_ADDRESS_HIGH    // SAD[0] = 1
00809 
00810 
00811 /**
00812  * @brief Device Identifier. Default value of the WHO_AM_I register.
00813  */
00814 #define I_AM_LSM6DS33_XG                                 ((uint8_t)0x69)
00815 
00816 
00817 /**
00818   * @brief  Register address automatically incremented during a multiple byte
00819   *         access with a serial interface (I2C or SPI). Default value of the
00820   *         LSM6DS33_XG_CTRL3_C register.
00821   */
00822 #define LSM6DS33_XG_IF_INC                               ((uint8_t)0x04)
00823 
00824 #define LSM6DS33_XG_IF_INC_MASK                          ((uint8_t)0x04)
00825 
00826 /** @defgroup LSM6DS33_XG_FIFO_Output_Data_Rate_Selection_FIFO_CTRL5 LSM6DS33_XG_FIFO_Output_Data_Rate_Selection_FIFO_CTRL5
00827  * @{
00828  */
00829 #define LSM6DS33_XG_FIFO_ODR_NA                          ((uint8_t)0x00) /*!< FIFO ODR NA */
00830 #define LSM6DS33_XG_FIFO_ODR_10HZ                        ((uint8_t)0x08) /*!< FIFO ODR 10Hz */
00831 #define LSM6DS33_XG_FIFO_ODR_25HZ                        ((uint8_t)) /*!< FIFO ODR 25Hz */
00832 #define LSM6DS33_XG_FIFO_ODR_50HZ                        ((uint8_t)0x18) /*!< FIFO ODR 50Hz */
00833 #define LSM6DS33_XG_FIFO_ODR_100HZ                       ((uint8_t)0x20) /*!< FIFO ODR 100Hz */
00834 #define LSM6DS33_XG_FIFO_ODR_200HZ                       ((uint8_t)0x28) /*!< FIFO ODR 200Hz */
00835 #define LSM6DS33_XG_FIFO_ODR_400HZ                       ((uint8_t)0x30) /*!< FIFO ODR 400Hz */
00836 #define LSM6DS33_XG_FIFO_ODR_800HZ                       ((uint8_t)0x38) /*!< FIFO ODR 800Hz */
00837 #define LSM6DS33_XG_FIFO_ODR_1600HZ                      ((uint8_t)0x40) /*!< FIFO ODR 1600Hz */
00838 #define LSM6DS33_XG_FIFO_ODR_3300HZ                      ((uint8_t)0x48) /*!< FIFO ODR 3300Hz */
00839 #define LSM6DS33_XG_FIFO_ODR_6600HZ                      ((uint8_t)0x50) /*!< FIFO ODR 6600Hz */
00840 
00841 #define LSM6DS33_XG_FIFO_ODR_MASK                        ((uint8_t)0x78)
00842 /**
00843  * @}
00844  */
00845 
00846 /** @defgroup LSM6DS33_XG_FIFO_Mode_Selection_FIFO_CTRL5 LSM6DS33_XG_FIFO_Mode_Selection_FIFO_CTRL5
00847  * @{
00848  */
00849 #define LSM6DS33_XG_FIFO_MODE_BYPASS                     ((uint8_t)0x00) /*!< BYPASS Mode. FIFO turned off */
00850 #define LSM6DS33_XG_FIFO_MODE_FIFO                       ((uint8_t)0x01) /*!< FIFO Mode. Stop collecting data when FIFO is full */
00851 #define LSM6DS33_XG_FIFO_MODE_CONTINUOUS_THEN_FIFO       ((uint8_t)0x03) /*!< CONTINUOUS mode until trigger is deasserted, then FIFO mode */
00852 #define LSM6DS33_XG_FIFO_MODE_BYPASS_THEN_CONTINUOUS     ((uint8_t)0x04) /*!< BYPASS mode until trigger is deasserted, then CONTINUOUS mode */
00853 #define LSM6DS33_XG_FIFO_MODE_CONTINUOUS_OVERWRITE       ((uint8_t)0x06) /*!< CONTINUOUS mode. If the FIFO is full the new sample overwrite the older one */
00854 
00855 #define LSM6DS33_XG_FIFO_MODE_MASK                       ((uint8_t)0x07)
00856 /**
00857  * @}
00858  */
00859 
00860 
00861 /************************************** GYROSCOPE REGISTERS VALUE *******************************************/
00862 
00863 
00864 /** @addtogroup LSM6DS33_XG_Gyroscope_Output_Data_Rate_Selection_CTRL_REG1_G LSM6DS33_XG_Gyroscope_Output_Data_Rate_Selection_CTRL_REG1_G
00865  * @{
00866  */
00867 #define LSM6DS33_G_ODR_PD                                ((uint8_t)0x00) /*!< Output Data Rate: Power-down*/
00868 #define LSM6DS33_G_ODR_13HZ                              ((uint8_t)0x10) /*!< Output Data Rate: 13 Hz*/
00869 #define LSM6DS33_G_ODR_26HZ                              ((uint8_t)0x20) /*!< Output Data Rate: 26 Hz*/
00870 #define LSM6DS33_G_ODR_52HZ                              ((uint8_t)0x30) /*!< Output Data Rate: 52 Hz */
00871 #define LSM6DS33_G_ODR_104HZ                             ((uint8_t)0x40) /*!< Output Data Rate: 104 Hz */
00872 #define LSM6DS33_G_ODR_208HZ                             ((uint8_t)0x50) /*!< Output Data Rate: 208 Hz */
00873 #define LSM6DS33_G_ODR_416HZ                             ((uint8_t)0x60) /*!< Output Data Rate: 416 Hz */
00874 #define LSM6DS33_G_ODR_833HZ                             ((uint8_t)0x70) /*!< Output Data Rate: 833 Hz */
00875 #define LSM6DS33_G_ODR_1660HZ                            ((uint8_t)0x80) /*!< Output Data Rate: 1.66 kHz */
00876 
00877 #define LSM6DS33_G_ODR_MASK                              ((uint8_t)0xF0)
00878 
00879 /**
00880  * @}
00881  */
00882 
00883 
00884 /** @addtogroup LSM6DS33_XG_Gyroscope_Full_Scale_Selection_CTRL2_G LSM6DS33_XG_Gyroscope_Full_Scale_Selection_CTRL2_G
00885  * @{
00886  */
00887 #define LSM6DS33_G_FS_125_DISABLE                       ((uint8_t)0x00) /*!< Full scale: 125 dps enable: disable */
00888 #define LSM6DS33_G_FS_125_ENABLE                        ((uint8_t)0x02) /*!< Full scale: 125 dps enable: enable */
00889 
00890 #define LSM6DS33_G_FS_125_MASK                          ((uint8_t)0x02)
00891 
00892 #define LSM6DS33_G_FS_245                               ((uint8_t)0x00) /*!< Full scale: 245 dps*/
00893 #define LSM6DS33_G_FS_500                               ((uint8_t)0x04) /*!< Full scale: 500 dps */
00894 #define LSM6DS33_G_FS_1000                              ((uint8_t)0x08) /*!< Full scale: 1000 dps */
00895 #define LSM6DS33_G_FS_2000                              ((uint8_t)0x0C) /*!< Full scale: 2000 dps */
00896 
00897 #define LSM6DS33_G_FS_MASK                              ((uint8_t)0x0C)
00898 
00899 /**
00900  * @}
00901  */
00902 
00903 
00904 /** @addtogroup LSM6DS33_XG_Gyroscope_Z_Axis_Output_Enable_Selection_CTRL10_C LSM6DS33_XG_Gyroscope_Z_Axis_Output_Enable_Selection_CTRL10_C
00905  * @{
00906  */
00907 #define LSM6DS33_G_ZEN_DISABLE                          ((uint8_t)0x00) /*!< Gyroscope�s Z-axis output enable: disable */
00908 #define LSM6DS33_G_ZEN_ENABLE                           ((uint8_t)0x20) /*!< Gyroscope�s Z-axis output enable: enable */
00909 
00910 #define LSM6DS33_G_ZEN_MASK                             ((uint8_t)0x20)
00911 
00912 /**
00913  * @}
00914  */
00915 
00916 
00917 /** @addtogroup LSM6DS33_XG_Gyroscope_Y_Axis_Output_Enable_Selection_CTRL10_C LSM6DS33_XG_Gyroscope_Y_Axis_Output_Enable_Selection_CTRL10_C
00918  * @{
00919  */
00920 #define LSM6DS33_G_YEN_DISABLE                          ((uint8_t)0x00) /*!< Gyroscope�s Y-axis output enable: disable */
00921 #define LSM6DS33_G_YEN_ENABLE                           ((uint8_t)0x10) /*!< Gyroscope�s Y-axis output enable: enable */
00922 
00923 #define LSM6DS33_G_YEN_MASK                             ((uint8_t)0x10)
00924 
00925 /**
00926  * @}
00927  */
00928 
00929 
00930 /** @addtogroup LSM6DS33_XG_Gyroscope_X_Axis_Output_Enable_Selection_CTRL10_C LSM6DS33_XG_Gyroscope_X_Axis_Output_Enable_Selection_CTRL10_C
00931  * @{
00932  */
00933 #define LSM6DS33_G_XEN_DISABLE                          ((uint8_t)0x00) /*!< Gyroscope�s X-axis output enable: disable */
00934 #define LSM6DS33_G_XEN_ENABLE                           ((uint8_t)0x08) /*!< Gyroscope�s X-axis output enable: enable */
00935 
00936 #define LSM6DS33_G_XEN_MASK                             ((uint8_t)0x08)
00937 
00938 /**
00939  * @}
00940  */
00941 
00942 
00943 /************************************ ACCELEROMETER REGISTERS VALUE *****************************************/
00944 
00945 /** @addtogroup LSM6DS33_XG_Accelerometer_Output_Data_Rate_Selection_CTRL1_XL LSM6DS33_XG_Accelerometer_Output_Data_Rate_Selection_CTRL1_XL
00946  * @{
00947  */
00948 #define LSM6DS33_XL_ODR_PD                               ((uint8_t)0x00) /*!< Output Data Rate: Power-down*/
00949 #define LSM6DS33_XL_ODR_13HZ                             ((uint8_t)0x10) /*!< Output Data Rate: 13 Hz*/
00950 #define LSM6DS33_XL_ODR_26HZ                             ((uint8_t)0x20) /*!< Output Data Rate: 26 Hz*/
00951 #define LSM6DS33_XL_ODR_52HZ                             ((uint8_t)0x30) /*!< Output Data Rate: 52 Hz */
00952 #define LSM6DS33_XL_ODR_104HZ                            ((uint8_t)0x40) /*!< Output Data Rate: 104 Hz */
00953 #define LSM6DS33_XL_ODR_208HZ                            ((uint8_t)0x50) /*!< Output Data Rate: 208 Hz */
00954 #define LSM6DS33_XL_ODR_416HZ                            ((uint8_t)0x60) /*!< Output Data Rate: 416 Hz */
00955 #define LSM6DS33_XL_ODR_833HZ                            ((uint8_t)0x70) /*!< Output Data Rate: 833 Hz */
00956 #define LSM6DS33_XL_ODR_1660HZ                           ((uint8_t)0x80) /*!< Output Data Rate: 1.66 kHz */
00957 #define LSM6DS33_XL_ODR_3330HZ                           ((uint8_t)0x90) /*!< Output Data Rate: 3.33 kHz */
00958 #define LSM6DS33_XL_ODR_6660HZ                           ((uint8_t)0xA0) /*!< Output Data Rate: 6.66 kHz */
00959 
00960 #define LSM6DS33_XL_ODR_MASK                             ((uint8_t)0xF0)
00961 
00962 /**
00963  * @}
00964  */
00965 
00966 
00967 /** @addtogroup LSM6DS33_XG_Accelerometer_Full_Scale_Selection_CTRL1_XL LSM6DS33_XG_Accelerometer_Full_Scale_Selection_CTRL1_XL
00968  * @{
00969  */
00970 #define LSM6DS33_XL_FS_2G                                ((uint8_t)0x00) /*!< Full scale: +- 2g */
00971 #define LSM6DS33_XL_FS_4G                                ((uint8_t)0x08) /*!< Full scale: +- 4g */
00972 #define LSM6DS33_XL_FS_8G                                ((uint8_t)0x0C) /*!< Full scale: +- 8g */
00973 #define LSM6DS33_XL_FS_16G                               ((uint8_t)0x04) /*!< Full scale: +- 16g */
00974 
00975 #define LSM6DS33_XL_FS_MASK                              ((uint8_t)0x0C)
00976 
00977 /**
00978  * @}
00979  */
00980 
00981 
00982 /** @addtogroup LSM6DS33_XG_Accelerometer_Anti_Aliasing_Filter_Bandwidth_Selection_CTRL1_XL LSM6DS33_XG_Accelerometer_Anti_Aliasing_Filter_Bandwidth_Selection_CTRL1_XL
00983  * @{
00984  */
00985 #define LSM6DS33_XL_BW_400HZ                             ((uint8_t)0x00) /*!< Anti-aliasing filter bandwidht: 400 Hz */
00986 #define LSM6DS33_XL_BW_200HZ                             ((uint8_t)0x01) /*!< Anti-aliasing filter bandwidht: 200 Hz */
00987 #define LSM6DS33_XL_BW_100HZ                             ((uint8_t)0x02) /*!< Anti-aliasing filter bandwidht: 100 Hz */
00988 #define LSM6DS33_XL_BW_50HZ                              ((uint8_t)0x03) /*!< Anti-aliasing filter bandwidht: 50 Hz */
00989 
00990 #define LSM6DS33_XL_BW_MASK                              ((uint8_t)0x03)
00991 
00992 /**
00993  * @}
00994  */
00995 
00996 
00997 /** @addtogroup LSM6DS33_XG_Accelerometer_Z_Axis_Output_Enable_Selection_CTRL9_XL LSM6DS33_XG_Accelerometer_Z_Axis_Output_Enable_Selection_CTRL9_XL
00998  * @{
00999  */
01000 #define LSM6DS33_XL_ZEN_DISABLE                          ((uint8_t)0x00) /*!< Accelerometer�s Z-axis output enable: disable */
01001 #define LSM6DS33_XL_ZEN_ENABLE                           ((uint8_t)0x20) /*!< Accelerometer�s Z-axis output enable: enable */
01002 
01003 #define LSM6DS33_XL_ZEN_MASK                             ((uint8_t)0x20)
01004 
01005 /**
01006  * @}
01007  */
01008 
01009 
01010 /** @addtogroup LSM6DS33_XG_Accelerometer_Y_Axis_Output_Enable_Selection_CTRL9_XL LSM6DS33_XG_Accelerometer_Y_Axis_Output_Enable_Selection_CTRL9_XL
01011  * @{
01012  */
01013 #define LSM6DS33_XL_YEN_DISABLE                          ((uint8_t)0x00) /*!< Accelerometer�s Y-axis output enable: disable */
01014 #define LSM6DS33_XL_YEN_ENABLE                           ((uint8_t)0x10) /*!< Accelerometer�s Y-axis output enable: enable */
01015 
01016 #define LSM6DS33_XL_YEN_MASK                             ((uint8_t)0x10)
01017 
01018 /**
01019  * @}
01020  */
01021 
01022 
01023 /** @addtogroup LSM6DS33_XG_Accelerometer_X_Axis_Output_Enable_Selection_CTRL9_XL LSM6DS33_XG_Accelerometer_X_Axis_Output_Enable_Selection_CTRL9_XL
01024  * @{
01025  */
01026 #define LSM6DS33_XL_XEN_DISABLE                          ((uint8_t)0x00) /*!< Accelerometer�s X-axis output enable: disable */
01027 #define LSM6DS33_XL_XEN_ENABLE                           ((uint8_t)0x08) /*!< Accelerometer�s X-axis output enable: enable */
01028 
01029 #define LSM6DS33_XL_XEN_MASK                             ((uint8_t)0x08)
01030 
01031 /**
01032  * @}
01033  */
01034 
01035 /** @addtogroup LSM6DS33_XG_Accelerometer_FF_DUR5_Selection_WAKE_UP_DUR LSM6DS33_XG_Accelerometer_FF_DUR5_Selection_WAKE_UP_DUR
01036  * @{
01037  */
01038 #define LSM6DS33_XG_WAKE_UP_DUR_FF_DUR5_DEFAULT          ((uint8_t)0x00)
01039 
01040 #define LSM6DS33_XG_WAKE_UP_DUR_FF_DUR5_MASK             ((uint8_t)0x80)
01041 /**
01042  * @}
01043  */
01044 
01045 /** @addtogroup LSM6DS33_XG_Accelerometer_WAKE_DUR_Selection_WAKE_UP_DUR LSM6DS33_XG_Accelerometer_WAKE_DUR_Selection_WAKE_UP_DUR
01046  * @{
01047  */
01048 #define LSM6DS33_XG_WAKE_UP_DUR_WAKE_DUR_DEFAULT         ((uint8_t)0x00)
01049 
01050 #define LSM6DS33_XG_WAKE_UP_DUR_WAKE_DUR_MASK            ((uint8_t)0x60)
01051 /**
01052  * @}
01053  */
01054 
01055 /** @addtogroup LSM6DS33_XG_Accelerometer_TIMER_HR_Selection_WAKE_UP_DUR LSM6DS33_XG_Accelerometer_TIMER_HR_Selection_WAKE_UP_DUR
01056  * @{
01057  */
01058 #define LSM6DS33_XG_WAKE_UP_DUR_TIMER_HR_DEFAULT         ((uint8_t)0x00)
01059 
01060 #define LSM6DS33_XG_WAKE_UP_DUR_TIMER_HR_MASK            ((uint8_t)0x10)
01061 /**
01062  * @}
01063  */
01064 
01065 /** @addtogroup LSM6DS33_XG_Accelerometer_SLEEP_DUR_Selection_WAKE_UP_DUR LSM6DS33_XG_Accelerometer_SLEEP_DUR_Selection_WAKE_UP_DUR
01066  * @{
01067  */
01068 #define LSM6DS33_XG_WAKE_UP_DUR_SLEEP_DUR_DEFAULT        ((uint8_t)0x00)
01069 
01070 #define LSM6DS33_XG_WAKE_UP_DUR_SLEEP_DUR_MASK           ((uint8_t)0x0F)
01071 /**
01072  * @}
01073  */
01074 
01075 /** @addtogroup LSM6DS33_XG_Accelerometer_FF_DUR_Selection_FREE_FALL LSM6DS33_XG_Accelerometer_FF_DUR_Selection_FREE_FALL
01076  * @{
01077  */
01078 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_DUR_DEFAULT        ((uint8_t)0x00)
01079 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_DUR_TYPICAL        ((uint8_t)0x30)
01080 
01081 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_DUR_MASK           ((uint8_t)0xF8)
01082 /**
01083  * @}
01084  */
01085 
01086 /** @addtogroup LSM6DS33_XG_Accelerometer_FF_THS_Selection_FREE_FALL LSM6DS33_XG_Accelerometer_FF_THS_Selection_FREE_FALL
01087  * @{
01088  */
01089 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_156MG          ((uint8_t)0x00)
01090 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_219MG          ((uint8_t)0x01)
01091 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_250MG          ((uint8_t)0x02)
01092 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_312MG          ((uint8_t)0x03)
01093 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_344MG          ((uint8_t)0x04)
01094 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_406MG          ((uint8_t)0x05)
01095 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_469MG          ((uint8_t)0x06)
01096 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_500MG          ((uint8_t)0x07)
01097 
01098 #define LSM6DS33_XG_WAKE_FREE_FALL_FF_THS_MASK           ((uint8_t)0x07)
01099 
01100 /**
01101  * @}
01102  */
01103 
01104 
01105 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_INACT_STATE_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_INACT_STATE_Selection_MD1_CFG
01106  * @{
01107  */
01108 #define LSM6DS33_XG_MD1_CFG_INT1_INACT_STATE_DISABLE     ((uint8_t)0x00)
01109 #define LSM6DS33_XG_MD1_CFG_INT1_INACT_STATE_ENABLE      ((uint8_t)0x80)
01110 
01111 #define LSM6DS33_XG_MD1_CFG_INT1_INACT_STATE_MASK        ((uint8_t)0x80)
01112 /**
01113  * @}
01114  */
01115 
01116 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_SINGLE_TAP_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_SINGLE_TAP_Selection_MD1_CFG
01117  * @{
01118  */
01119 #define LSM6DS33_XG_MD1_CFG_INT1_SINGLE_TAP_DISABLE      ((uint8_t)0x00)
01120 #define LSM6DS33_XG_MD1_CFG_INT1_SINGLE_TAP_ENABLE       ((uint8_t)0x40)
01121 
01122 #define LSM6DS33_XG_MD1_CFG_INT1_SINGLE_TAP_MASK         ((uint8_t)0x40)
01123 /**
01124  * @}
01125  */
01126 
01127 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_WU_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_WU_Selection_MD1_CFG
01128  * @{
01129  */
01130 #define LSM6DS33_XG_MD1_CFG_INT1_WU_DISABLE              ((uint8_t)0x00)
01131 #define LSM6DS33_XG_MD1_CFG_INT1_WU_ENABLE               ((uint8_t)0x20)
01132 
01133 #define LSM6DS33_XG_MD1_CFG_INT1_WU_MASK                 ((uint8_t)0x20)
01134 /**
01135  * @}
01136  */
01137 
01138 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_FF_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_FF_Selection_MD1_CFG
01139  * @{
01140  */
01141 #define LSM6DS33_XG_MD1_CFG_INT1_FF_DISABLE              ((uint8_t)0x00)
01142 #define LSM6DS33_XG_MD1_CFG_INT1_FF_ENABLE               ((uint8_t)0x10)
01143 
01144 #define LSM6DS33_XG_MD1_CFG_INT1_FF_MASK                 ((uint8_t)0x10)
01145 /**
01146  * @}
01147  */
01148 
01149 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_DOUBLE_TAP_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_DOUBLE_TAP_Selection_MD1_CFG
01150  * @{
01151  */
01152 #define LSM6DS33_XG_MD1_CFG_INT1_DOUBLE_TAP_DISABLE      ((uint8_t)0x00)
01153 #define LSM6DS33_XG_MD1_CFG_INT1_DOUBLE_TAP_ENABLE       ((uint8_t)0x08)
01154 
01155 #define LSM6DS33_XG_MD1_CFG_INT1_DOUBLE_TAP_MASK         ((uint8_t)0x08)
01156 /**
01157  * @}
01158  */
01159 
01160 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_6D_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_6D_Selection_MD1_CFG
01161  * @{
01162  */
01163 #define LSM6DS33_XG_MD1_CFG_INT1_6D_DISABLE              ((uint8_t)0x00)
01164 #define LSM6DS33_XG_MD1_CFG_INT1_6D_ENABLE               ((uint8_t)0x04)
01165 
01166 #define LSM6DS33_XG_MD1_CFG_INT1_6D_MASK                 ((uint8_t)0x04)
01167 /**
01168  * @}
01169  */
01170 
01171 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_TILT_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_TILT_Selection_MD1_CFG
01172  * @{
01173  */
01174 #define LSM6DS33_XG_MD1_CFG_INT1_TILT_DISABLE            ((uint8_t)0x00)
01175 #define LSM6DS33_XG_MD1_CFG_INT1_TILT_ENABLE             ((uint8_t)0x02)
01176 
01177 #define LSM6DS33_XG_MD1_CFG_INT1_TILT_MASK               ((uint8_t)0x02)
01178 /**
01179  * @}
01180  */
01181 
01182 /** @addtogroup LSM6DS33_XG_Accelerometer_INT1_TIMER_Selection_MD1_CFG LSM6DS33_XG_Accelerometer_INT1_TIMER_Selection_MD1_CFG
01183  * @{
01184  */
01185 #define LSM6DS33_XG_MD1_CFG_INT1_TIMER_DISABLE           ((uint8_t)0x00)
01186 #define LSM6DS33_XG_MD1_CFG_INT1_TIMER_ENABLE            ((uint8_t)0x01)
01187 
01188 #define LSM6DS33_XG_MD1_CFG_INT1_TIMER_MASK              ((uint8_t)0x01)
01189 
01190 /**
01191  * @}
01192  */
01193 
01194 /** @addtogroup LSM6DS33_XG_Accelerometer_FF_IA_Enable_WAKE_UP_SRC LSM6DS33_XG_Accelerometer_FF_IA_Enable_WAKE_UP_SRC
01195  * @{
01196  */
01197 #define LSM6DS33_XG_WAKE_UP_SRC_FF_IA_DISABLE            ((uint8_t)0x00)
01198 #define LSM6DS33_XG_WAKE_UP_SRC_FF_IA_ENABLE             ((uint8_t)0x20)
01199 
01200 #define LSM6DS33_XG_WAKE_UP_SRC_FF_IA_MASK               ((uint8_t)0x20)
01201 /**
01202  * @}
01203  */
01204 
01205 /** @addtogroup LSM6DS33_XG_Accelerometer_SLEEP_STATE_IA_Enable_WAKE_UP_SRC LSM6DS33_XG_Accelerometer_SLEEP_STATE_IA_Enable_WAKE_UP_SRC
01206  * @{
01207  */
01208 #define LSM6DS33_XG_WAKE_UP_SRC_SLEEP_STATE_IA_DISABLE   ((uint8_t)0x00)
01209 #define LSM6DS33_XG_WAKE_UP_SRC_SLEEP_STATE_IA_ENABLE    ((uint8_t)0x10)
01210 
01211 #define LSM6DS33_XG_WAKE_UP_SRC_SLEEP_STATE_IA_MASK      ((uint8_t)0x10)
01212 /**
01213  * @}
01214  */
01215 
01216 /** @addtogroup LSM6DS33_XG_Accelerometer_WU_IA_Enable_WAKE_UP_SRC LSM6DS33_XG_Accelerometer_WU_IA_Enable_WAKE_UP_SRC
01217  * @{
01218  */
01219 #define LSM6DS33_XG_WAKE_UP_SRC_WU_IA_DISABLE            ((uint8_t)0x00)
01220 #define LSM6DS33_XG_WAKE_UP_SRC_WU_IA_ENABLE             ((uint8_t)0x08)
01221 
01222 #define LSM6DS33_XG_WAKE_UP_SRC_WU_IA_MASK               ((uint8_t)0x08)
01223 /**
01224  * @}
01225  */
01226 
01227 /** @addtogroup LSM6DS33_XG_Accelerometer_X_WU_Enable_WAKE_UP_SRC LSM6DS33_XG_Accelerometer_X_WU_Enable_WAKE_UP_SRC
01228  * @{
01229  */
01230 #define LSM6DS33_XG_WAKE_UP_SRC_X_WU_DISABLE             ((uint8_t)0x00)
01231 #define LSM6DS33_XG_WAKE_UP_SRC_X_WU_ENABLE              ((uint8_t)0x04)
01232 
01233 #define LSM6DS33_XG_WAKE_UP_SRC_X_WU_MASK                ((uint8_t)0x04)
01234 /**
01235  * @}
01236  */
01237 
01238 /** @addtogroup LSM6DS33_XG_Accelerometer_Y_WU_Enable_WAKE_UP_SRC LSM6DS33_XG_Accelerometer_Y_WU_Enable_WAKE_UP_SRC
01239  * @{
01240  */
01241 #define LSM6DS33_XG_WAKE_UP_SRC_Y_WU_DISABLE             ((uint8_t)0x00)
01242 #define LSM6DS33_XG_WAKE_UP_SRC_Y_WU_ENABLE              ((uint8_t)0x02)
01243 
01244 
01245 #define LSM6DS33_XG_WAKE_UP_SRC_Y_WU_MASK                ((uint8_t)0x02)
01246 /**
01247  * @}
01248  */
01249 
01250 /** @addtogroup LSM6DS33_XG_Accelerometer_Z_WU_Enable_WAKE_UP_SRC LSM6DS33_XG_Accelerometer_Z_WU_Enable_WAKE_UP_SRC
01251  * @{
01252  */
01253 #define LSM6DS33_XG_WAKE_UP_SRC_Z_WU_DISABLE             ((uint8_t)0x00)
01254 #define LSM6DS33_XG_WAKE_UP_SRC_Z_WU_ENABLE              ((uint8_t)0x01)
01255 
01256 #define LSM6DS33_XG_WAKE_UP_SRC_Z_WU_MASK                ((uint8_t)0x01)
01257 /**
01258  * @}
01259  */
01260 
01261 /**
01262  * @}
01263  */
01264 
01265 /** @addtogroup LSM6DS33_Imported_Functions LSM6DS33_Imported_Functions
01266  * @{
01267  */
01268 
01269 /* Six axes sensor IO functions */
01270 extern IMU_6AXES_StatusTypeDef LSM6DS33_IO_Init( void );
01271 extern IMU_6AXES_StatusTypeDef LSM6DS33_IO_Write( uint8_t* pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr,
01272     uint16_t NumByteToWrite );
01273 extern IMU_6AXES_StatusTypeDef LSM6DS33_IO_Read( uint8_t* pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr,
01274     uint16_t NumByteToRead );
01275 extern void LSM6DS33_IO_ITConfig( void );
01276 
01277 /**
01278  * @}
01279  */
01280 
01281 /** @addtogroup LSM6DS33_Exported_Types LSM6DS33_Exported_Types
01282   * @{
01283   */
01284 /**
01285  * @brief  LSM6DS33 driver extended internal structure definition
01286  */
01287 typedef struct
01288 {
01289   IMU_6AXES_StatusTypeDef (*Enable_Free_Fall_Detection) (void);
01290   IMU_6AXES_StatusTypeDef (*Disable_Free_Fall_Detection) (void);
01291   IMU_6AXES_StatusTypeDef (*Get_Status_Free_Fall_Detection) (uint8_t *);
01292 } LSM6DS33_DrvExtTypeDef;
01293 
01294 /**
01295  * @}
01296  */
01297 
01298 /** @addtogroup LSM6DS33_Exported_Variables LSM6DS33_Exported_Variables
01299  * @{
01300  */
01301 
01302 /* Six axes sensor driver structure */
01303 extern IMU_6AXES_DrvTypeDef LSM6DS33Drv;
01304 extern IMU_6AXES_DrvExtTypeDef LSM6DS33Drv_ext;
01305 
01306 /**
01307  * @}
01308  */
01309 
01310 /**
01311  * @}
01312  */
01313 
01314 /**
01315  * @}
01316  */
01317 
01318 /**
01319  * @}
01320  */
01321 
01322 #ifdef __cplusplus
01323 }
01324 #endif
01325 
01326 #endif /* _LSM6DS33_XG_H */
01327 
01328 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/