Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
lsm6ds33.h
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>© 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****/
Generated on Tue Jul 12 2022 17:26:53 by
1.7.2