1 /* 2 * Copyright (c) 2016, Freescale Semiconductor, Inc. 3 * Copyright 2016-2017 NXP 4 * All rights reserved. 5 * 6 * SPDX-License-Identifier: BSD-3-Clause 7 */ 8 9 /** 10 * @file fxos8700.h 11 * @brief The fxos8700.h file contains the register definitions for FXOS8700 sensor driver. 12 */ 13 14 #ifndef FXOS8700_H_ 15 #define FXOS8700_H_ 16 /** 17 * @brief FXOS8700 internal register addresses explained in the FXOS8700 data sheet. 18 */ 19 enum { 20 FXOS8700_STATUS = 0x00, /*!< Alias for ::FXOS8700_DR_STATUS or ::FXOS8700_F_STATUS. */ 21 FXOS8700_OUT_X_MSB = 0x01, /*!< 14-bit X-axis measurement data bits 13:6. */ 22 FXOS8700_OUT_X_LSB = 0x02, /*!< 14-bit X-axis measurement data bits 5:0. */ 23 FXOS8700_OUT_Y_MSB = 0x03, /*!< 14-bit Y-axis measurement data bits 13:6. */ 24 FXOS8700_OUT_Y_LSB = 0x04, /*!< 14-bit Y-axis measurement data bits 5:0. */ 25 FXOS8700_OUT_Z_MSB = 0x05, /*!< 14-bit Z-axis measurement data bits 13:6. */ 26 FXOS8700_OUT_Z_LSB = 0x06, /*!< 14-bit Z-axis measurement data bits 5:0. */ 27 FXOS8700_F_SETUP = 0x09, /*!< FIFO setup. */ 28 FXOS8700_TRIG_CFG = 0x0A, /*!< FIFO event trigger configuration register. */ 29 FXOS8700_SYSMOD = 0x0B, /*!< Current system mode. */ 30 FXOS8700_INT_SOURCE = 0x0C, /*!< Interrupt status. */ 31 FXOS8700_WHO_AM_I = 0x0D, /*!< Device ID. */ 32 FXOS8700_XYZ_DATA_CFG = 0x0E, /*!< Acceleration dynamic range and filter enable settings. */ 33 FXOS8700_HP_FILTER_CUTOFF = 0x0F, /*!< Pulse detection highpass and lowpass filter enabling bits. */ 34 FXOS8700_PL_STATUS = 0x10, /*!< Landscape/portrait orientation status. */ 35 FXOS8700_PL_CFG = 0x11, /*!< Landscape/portrait configuration. */ 36 FXOS8700_PL_COUNT = 0x12, /*!< Landscape/portrait debounce counter. */ 37 FXOS8700_PL_BF_ZCOMP = 0x13, /*!< Back/front trip angle threshold. */ 38 FXOS8700_PL_THS_REG = 0x14, /*!< Portrait to landscape trip threshold angle and hysteresis settings. */ 39 FXOS8700_A_FFMT_CFG = 0x15, /*!< Freefall/motion function configuration. */ 40 FXOS8700_A_FFMT_SRC = 0x16, /*!< Freefall/motion event source register. */ 41 FXOS8700_A_FFMT_THS = 0x17, /*!< Freefall/motion threshold register. */ 42 FXOS8700_A_FFMT_COUNT = 0x18, /*!< Freefall/motion debounce counter. */ 43 FXOS8700_TRANSIENT_CFG = 0x1D, /*!< Transient function configuration. */ 44 FXOS8700_TRANSIENT_SRC = 0x1E, /*!< Transient event status register. */ 45 FXOS8700_TRANSIENT_THS = 0x1F, /*!< Transient event threshold. */ 46 FXOS8700_TRANSIENT_COUNT = 0x20, /*!< Transient debounce counter. */ 47 FXOS8700_PULSE_CFG = 0x21, /*!< Pulse function configuration. */ 48 FXOS8700_PULSE_SRC = 0x22, /*!< Pulse function source register. */ 49 FXOS8700_PULSE_THSX = 0x23, /*!< X-axis pulse threshold. */ 50 FXOS8700_PULSE_THSY = 0x24, /*!< Y-axis pulse threshold. */ 51 FXOS8700_PULSE_THSZ = 0x25, /*!< Z-axis pulse threshold. */ 52 FXOS8700_PULSE_TMLT = 0x26, /*!< Time limit for pulse detection. */ 53 FXOS8700_PULSE_LTCY = 0x27, /*!< Latency time for second pulse detection. */ 54 FXOS8700_PULSE_WIND = 0x28, /*!< Window time for second pulse detection. */ 55 FXOS8700_ASLP_COUNT = 0x29, /*!< The counter setting for auto-sleep period. */ 56 FXOS8700_CTRL_REG1 = 0x2A, /*!< System ODR, accelerometer OSR (Output sample rate), operating mode. */ 57 FXOS8700_CTRL_REG2 = 0x2B, /*!< Self-test, reset, accelerometer OSR, and sleep mode settings. */ 58 FXOS8700_CTRL_REG3 = 0x2C, /*!< Sleep mode interrupt wake enable, interrupt polarity, push-pull/open drain configuration. */ 59 FXOS8700_CTRL_REG4 = 0x2D, /*!< Interrupt enable register. */ 60 FXOS8700_CTRL_REG5 = 0x2E, /*!< Interrupt pin (INT1/INT2) map. */ 61 FXOS8700_OFF_X = 0x2F, /*!< X-axis accelerometer offset adjust. */ 62 FXOS8700_OFF_Y = 0x30, /*!< Y-axis accelerometer offset adjust. */ 63 FXOS8700_OFF_Z = 0x31, /*!< Z-axis accelerometer offset adjust. */ 64 FXOS8700_M_DR_STATUS = 0x32, /*!< The magnetometer data ready status. */ 65 FXOS8700_M_OUT_X_MSB = 0x33, /*!< MSB of the 16-bit magnetometer data for X-axis. */ 66 FXOS8700_M_OUT_X_LSB = 0x34, /*!< LSB of the 16-bit magnetometer data for X-axis. */ 67 FXOS8700_M_OUT_Y_MSB = 0x35, /*!< MSB of the 16-bit magnetometer data for Y-axis. */ 68 FXOS8700_M_OUT_Y_LSB = 0x36, /*!< LSB of the 16-bit magnetometer data for Y-axis. */ 69 FXOS8700_M_OUT_Z_MSB = 0x37, /*!< MSB of the 16-bit magnetometer data for Z-axis. */ 70 FXOS8700_M_OUT_Z_LSB = 0x38, /*!< LSB of the 16-bit magnetometer data for Z-axis. */ 71 FXOS8700_CMP_X_MSB = 0x39, /*!< Bits [13:8] of integrated X-axis acceleration data. */ 72 FXOS8700_CMP_X_LSB = 0x3A, /*!< Bits [7:0] of integrated X-axis acceleration data. */ 73 FXOS8700_CMP_Y_MSB = 0x3B, /*!< Bits [13:8] of integrated Y-axis acceleration data. */ 74 FXOS8700_CMP_Y_LSB = 0x3C, /*!< Bits [7:0] of integrated Y-axis acceleration data. */ 75 FXOS8700_CMP_Z_MSB = 0x3D, /*!< Bits [13:8] of integrated Z-axis acceleration data. */ 76 FXOS8700_CMP_Z_LSB = 0x3E, /*!< Bits [7:0] of integrated Z-axis acceleration data. */ 77 FXOS8700_M_OFF_X_MSB = 0x3F, /*!< MSB of magnetometer X-axis offset. */ 78 FXOS8700_M_OFF_X_LSB = 0x40, /*!< LSB of magnetometer X-axis offset. */ 79 FXOS8700_M_OFF_Y_MSB = 0x41, /*!< MSB of magnetometer Y-axis offset. */ 80 FXOS8700_M_OFF_Y_LSB = 0x42, /*!< LSB of magnetometer Y-axis offset. */ 81 FXOS8700_M_OFF_Z_MSB = 0x43, /*!< MSB of magnetometer Z-axis offset. */ 82 FXOS8700_M_OFF_Z_LSB = 0x44, /*!< LSB of magnetometer Z-axis offset. */ 83 FXOS8700_MAX_X_MSB = 0x45, /*!< Magnetometer X-axis maximum value MSB. */ 84 FXOS8700_MAX_X_LSB = 0x46, /*!< Magnetometer X-axis maximum value LSB. */ 85 FXOS8700_MAX_Y_MSB = 0x47, /*!< Magnetometer Y-axis maximum value MSB. */ 86 FXOS8700_MAX_Y_LSB = 0x48, /*!< Magnetometer Y-axis maximum value LSB. */ 87 FXOS8700_MAX_Z_MSB = 0x49, /*!< Magnetometer Z-axis maximum value MSB. */ 88 FXOS8700_MAX_Z_LSB = 0x4A, /*!< Magnetometer Z-axis maximum value LSB. */ 89 FXOS8700_MIN_X_MSB = 0x4B, /*!< Magnetometer X-axis minimum value MSB. */ 90 FXOS8700_MIN_X_LSB = 0x4C, /*!< Magnetometer X-axis minimum value LSB. */ 91 FXOS8700_MIN_Y_MSB = 0x4D, /*!< Magnetometer Y-axis minimum value MSB. */ 92 FXOS8700_MIN_Y_LSB = 0x4E, /*!< Magnetometer Y-axis minimum value LSB. */ 93 FXOS8700_MIN_Z_MSB = 0x4F, /*!< Magnetometer Z-axis minimum value MSB. */ 94 FXOS8700_MIN_Z_LSB = 0x50, /*!< Magnetometer Z-axis minimum value LSB. */ 95 FXOS8700_TEMP = 0x51, /*!< Device temperature with a valid range of -128 to 127 degrees C. */ 96 FXOS8700_M_THS_CFG = 0x52, /*!< Magnetic threshold detection function configuration. */ 97 FXOS8700_M_THS_SRC = 0x53, /*!< Magnetic threshold event source register. */ 98 FXOS8700_M_THS_X_MSB = 0x54, /*!< X-axis magnetic threshold MSB. */ 99 FXOS8700_M_THS_X_LSB = 0x55, /*!< X-axis magnetic threshold LSB. */ 100 FXOS8700_M_THS_Y_MSB = 0x56, /*!< Y-axis magnetic threshold MSB. */ 101 FXOS8700_M_THS_Y_LSB = 0x57, /*!< Y-axis magnetic threshold LSB. */ 102 FXOS8700_M_THS_Z_MSB = 0x58, /*!< Z-axis magnetic threshold MSB. */ 103 FXOS8700_M_THS_Z_LSB = 0x59, /*!< Z-axis magnetic threshold LSB. */ 104 FXOS8700_M_THS_COUNT = 0x5A, /*!< Magnetic threshold debounce counter. */ 105 FXOS8700_M_CTRL_REG1 = 0x5B, /*!< Control for magnetometer sensor functions. */ 106 FXOS8700_M_CTRL_REG2 = 0x5C, /*!< Control for magnetometer sensor functions. */ 107 FXOS8700_M_CTRL_REG3 = 0x5D, /*!< Control for magnetometer sensor functions. */ 108 FXOS8700_M_INT_SRC = 0x5E, /*!< Magnetometer interrupt source. */ 109 FXOS8700_A_VECM_CFG = 0x5F, /*!< Acceleration vector magnitude configuration register. */ 110 FXOS8700_A_VECM_THS_MSB = 0x60, /*!< Acceleration vector magnitude threshold MSB. */ 111 FXOS8700_A_VECM_THS_LSB = 0x61, /*!< Acceleration vector magnitude threshold LSB. */ 112 FXOS8700_A_VECM_CNT = 0x62, /*!< Acceleration vector magnitude debounce count. */ 113 FXOS8700_A_VECM_INITX_MSB = 0x63, /*!< Acceleration vector magnitude X-axis reference value MSB. */ 114 FXOS8700_A_VECM_INITX_LSB = 0x64, /*!< Acceleration vector magnitude X-axis reference value LSB. */ 115 FXOS8700_A_VECM_INITY_MSB = 0x65, /*!< Acceleration vector magnitude Y-axis reference value MSB. */ 116 FXOS8700_A_VECM_INITY_LSB = 0x66, /*!< Acceleration vector magnitude Y-axis reference value LSB. */ 117 FXOS8700_A_VECM_INITZ_MSB = 0x67, /*!< Acceleration vector magnitude Z-axis reference value MSB. */ 118 FXOS8700_A_VECM_INITZ_LSB = 0x68, /*!< Acceleration vector magnitude Z-axis reference value LSB. */ 119 FXOS8700_M_VECM_CFG = 0x69, /*!< Magnetic vector magnitude configuration register. */ 120 FXOS8700_M_VECM_THS_MSB = 0x6A, /*!< Magnetic vector magnitude threshold MSB. */ 121 FXOS8700_M_VECM_THS_LSB = 0x6B, /*!< Magnetic vector magnitude threshold LSB. */ 122 FXOS8700_M_VECM_CNT = 0x6C, /*!< Magnetic vector magnitude debounce count. */ 123 FXOS8700_M_VECM_INITX_MSB = 0x6D, /*!< Magnetic vector magnitude X-axis reference value MSB. */ 124 FXOS8700_M_VECM_INITX_LSB = 0x6E, /*!< Magnetic vector magnitude X-axis reference value LSB. */ 125 FXOS8700_M_VECM_INITY_MSB = 0x6F, /*!< Magnetic vector magnitude Y-axis reference value MSB. */ 126 FXOS8700_M_VECM_INITY_LSB = 0x70, /*!< Magnetic vector magnitude Y-axis reference value LSB. */ 127 FXOS8700_M_VECM_INITZ_MSB = 0x71, /*!< Magnetic vector magnitude Z-axis reference value MSB. */ 128 FXOS8700_M_VECM_INITZ_LSB = 0x72, /*!< Magnetic vector magnitude Z-axis reference value LSB. */ 129 FXOS8700_A_FFMT_THS_X_MSB = 0x73, /*!< X-axis FFMT threshold MSB. */ 130 FXOS8700_A_FFMT_THS_X_LSB = 0x74, /*!< X-axis FFMT threshold LSB. */ 131 FXOS8700_A_FFMT_THS_Y_MSB = 0x75, /*!< Y-axis FFMT threshold MSB. */ 132 FXOS8700_A_FFMT_THS_Y_LSB = 0x76, /*!< Y-axis FFMT threshold LSB. */ 133 FXOS8700_A_FFMT_THS_Z_MSB = 0x77, /*!< Z-axis FFMT threshold MSB. */ 134 FXOS8700_A_FFMT_THS_Z_LSB = 0x78, /*!< Z-axis FFMT threshold LSB. */ 135 }; 136 137 #define FXOS8700_DEVICE_ADDR_SA_00 (0x1E) 138 139 #define FXOS8700_DEVICE_ADDR_SA_01 (0x1D) 140 141 #define FXOS8700_DEVICE_ADDR_SA_10 (0x1C) 142 143 #define FXOS8700_DEVICE_ADDR_SA_11 (0x1F) 144 145 146 #define FXOS8700_WHO_AM_I_PROD_VALUE (0xC7) 147 148 149 /** 150 * The following are the macro definitions to address each bit and its value in the hardware registers. 151 */ 152 153 /*-------------------------------- 154 ** Register: DR_STATUS 155 ** Enum: FXOS8700_DR_STATUS 156 ** -- 157 ** Offset : 0x00 - Alias for ::FXOS8700_DR_STATUS or ::FXOS8700_F_STATUS. 158 ** ------------------------------*/ 159 typedef union { 160 struct { 161 uint8_t xdr : 1; 162 uint8_t ydr : 1; 163 uint8_t zdr : 1; 164 uint8_t zyxdr : 1; 165 uint8_t xow : 1; 166 uint8_t yow : 1; 167 uint8_t zow : 1; 168 uint8_t zyxow : 1; 169 } b; 170 uint8_t w; 171 } FXOS8700_DR_STATUS_t; 172 173 174 /* 175 ** DR_STATUS - Bit field mask definitions 176 */ 177 #define FXOS8700_DR_STATUS_XDR_MASK ((uint8_t) 0x01) 178 #define FXOS8700_DR_STATUS_XDR_SHIFT ((uint8_t) 0) 179 180 #define FXOS8700_DR_STATUS_YDR_MASK ((uint8_t) 0x02) 181 #define FXOS8700_DR_STATUS_YDR_SHIFT ((uint8_t) 1) 182 183 #define FXOS8700_DR_STATUS_ZDR_MASK ((uint8_t) 0x04) 184 #define FXOS8700_DR_STATUS_ZDR_SHIFT ((uint8_t) 2) 185 186 #define FXOS8700_DR_STATUS_ZYXDR_MASK ((uint8_t) 0x08) 187 #define FXOS8700_DR_STATUS_ZYXDR_SHIFT ((uint8_t) 3) 188 189 #define FXOS8700_DR_STATUS_XOW_MASK ((uint8_t) 0x10) 190 #define FXOS8700_DR_STATUS_XOW_SHIFT ((uint8_t) 4) 191 192 #define FXOS8700_DR_STATUS_YOW_MASK ((uint8_t) 0x20) 193 #define FXOS8700_DR_STATUS_YOW_SHIFT ((uint8_t) 5) 194 195 #define FXOS8700_DR_STATUS_ZOW_MASK ((uint8_t) 0x40) 196 #define FXOS8700_DR_STATUS_ZOW_SHIFT ((uint8_t) 6) 197 198 #define FXOS8700_DR_STATUS_ZYXOW_MASK ((uint8_t) 0x80) 199 #define FXOS8700_DR_STATUS_ZYXOW_SHIFT ((uint8_t) 7) 200 201 202 /* 203 ** DR_STATUS - Bit field value definitions 204 */ 205 #define FXOS8700_DR_STATUS_XDR_DRDY ((uint8_t) 0x01) /* xdr is set to 1 whenever a new X-axis data */ 206 /* acquisition is completed. xdr is cleared anytime */ 207 /* the OUT_X_MSB register is read. */ 208 #define FXOS8700_DR_STATUS_YDR_DRDY ((uint8_t) 0x02) /* ydr is set to 1 whenever a new Y-axis data */ 209 /* acquisition is completed. xdr is cleared anytime */ 210 /* the OUT_Y_MSB register is read. */ 211 #define FXOS8700_DR_STATUS_ZDR_DRDY ((uint8_t) 0x04) /* zdr is set to 1 whenever a new Z-axis data */ 212 /* acquisition is completed. xdr is cleared anytime */ 213 /* the OUT_Z_MSB register is read. */ 214 #define FXOS8700_DR_STATUS_ZYXDR_DRDY ((uint8_t) 0x08) /* zyxdr signals that a new acquisition for any of */ 215 /* the enabled channels is available. zyxdr is */ 216 /* cleared when the high-bytes of the acceleration */ 217 /* data (OUT_X_MSB, OUT_Y_MSB, OUT_Z_MSB) are read. */ 218 #define FXOS8700_DR_STATUS_XOW_OWR ((uint8_t) 0x10) 219 #define FXOS8700_DR_STATUS_YOW_OWR ((uint8_t) 0x20) 220 #define FXOS8700_DR_STATUS_ZOW_OWR ((uint8_t) 0x40) 221 #define FXOS8700_DR_STATUS_ZYXOW_OWR ((uint8_t) 0x80) 222 /*------------------------------*/ 223 224 225 226 /*-------------------------------- 227 ** Register: F_STATUS 228 ** Enum: FXOS8700_F_STATUS 229 ** -- 230 ** Offset : 0x00 - Fifo Status register 231 ** ------------------------------*/ 232 typedef union { 233 struct { 234 uint8_t f_cnt : 6; /* These bits indicate the number of acceleration samples currently stored in */ 235 /* the FIFO buffer. Count 0b00_0000 indicates that the FIFO is empty */ 236 237 uint8_t f_wmrk_flag : 1; 238 uint8_t f_ovf : 1; 239 } b; 240 uint8_t w; 241 } FXOS8700_F_STATUS_t; 242 243 244 /* 245 ** F_STATUS - Bit field mask definitions 246 */ 247 #define FXOS8700_F_STATUS_F_CNT_MASK ((uint8_t) 0x3F) 248 #define FXOS8700_F_STATUS_F_CNT_SHIFT ((uint8_t) 0) 249 250 #define FXOS8700_F_STATUS_F_WMRK_FLAG_MASK ((uint8_t) 0x40) 251 #define FXOS8700_F_STATUS_F_WMRK_FLAG_SHIFT ((uint8_t) 6) 252 253 #define FXOS8700_F_STATUS_F_OVF_MASK ((uint8_t) 0x80) 254 #define FXOS8700_F_STATUS_F_OVF_SHIFT ((uint8_t) 7) 255 256 257 /* 258 ** F_STATUS - Bit field value definitions 259 */ 260 #define FXOS8700_F_STATUS_F_WMRK_FLAG_NOEVT ((uint8_t) 0x00) /* No FIFO watermark event detected */ 261 #define FXOS8700_F_STATUS_F_WMRK_FLAG_EVTDET ((uint8_t) 0x40) 262 #define FXOS8700_F_STATUS_F_OVF_NOOVFL ((uint8_t) 0x00) /* No FIFO overflow events detected */ 263 #define FXOS8700_F_STATUS_F_OVF_OVFLDET ((uint8_t) 0x80) /* FIFO overflow event detected */ 264 /*------------------------------*/ 265 266 267 268 /*-------------------------------- 269 ** Register: OUT_X_MSB 270 ** Enum: FXOS8700_OUT_X_MSB 271 ** -- 272 ** Offset : 0x01 - MSB of Accelerometer X value 273 ** ------------------------------*/ 274 typedef union { 275 struct { 276 uint8_t xd; /* - 14-bit X-axis measurement data bits 13:6. */ 277 278 } b; 279 uint8_t w; 280 } FXOS8700_OUT_X_MSB_t; 281 282 283 /* 284 ** OUT_X_MSB - Bit field mask definitions 285 */ 286 #define FXOS8700_OUT_X_MSB_XD_MASK ((uint8_t) 0xFF) 287 #define FXOS8700_OUT_X_MSB_XD_SHIFT ((uint8_t) 0) 288 289 290 /*------------------------------*/ 291 292 293 294 /*-------------------------------- 295 ** Register: OUT_X_LSB 296 ** Enum: FXOS8700_OUT_X_LSB 297 ** -- 298 ** Offset : 0x02 - LSB of Accelerometer X value 299 ** ------------------------------*/ 300 typedef union { 301 struct { 302 uint8_t _reserved_ : 2; 303 uint8_t xd : 6; /* - 14-bit X-axis measurement data bits 5:0. */ 304 305 } b; 306 uint8_t w; 307 } FXOS8700_OUT_X_LSB_t; 308 309 310 /* 311 ** OUT_X_LSB - Bit field mask definitions 312 */ 313 #define FXOS8700_OUT_X_LSB_XD_MASK ((uint8_t) 0xFC) 314 #define FXOS8700_OUT_X_LSB_XD_SHIFT ((uint8_t) 2) 315 316 317 /*------------------------------*/ 318 319 320 321 /*-------------------------------- 322 ** Register: OUT_Y_MSB 323 ** Enum: FXOS8700_OUT_Y_MSB 324 ** -- 325 ** Offset : 0x03 - 14-bit Y-axis measurement data bits 13:6. 326 ** ------------------------------*/ 327 typedef union { 328 struct { 329 uint8_t yd; /* - 14-bit Y-axis measurement data bits 13:6. */ 330 331 } b; 332 uint8_t w; 333 } FXOS8700_OUT_Y_MSB_t; 334 335 336 /* 337 ** OUT_Y_MSB - Bit field mask definitions 338 */ 339 #define FXOS8700_OUT_Y_MSB_YD_MASK ((uint8_t) 0xFF) 340 #define FXOS8700_OUT_Y_MSB_YD_SHIFT ((uint8_t) 0) 341 342 343 /*------------------------------*/ 344 345 346 347 /*-------------------------------- 348 ** Register: OUT_Y_LSB 349 ** Enum: FXOS8700_OUT_Y_LSB 350 ** -- 351 ** Offset : 0x04 - 14-bit Y-axis measurement data bits 5:0. 352 ** ------------------------------*/ 353 typedef union { 354 struct { 355 uint8_t _reserved_ : 2; 356 uint8_t yd : 6; /* - 14-bit Y-axis measurement data bits 5:0. */ 357 358 } b; 359 uint8_t w; 360 } FXOS8700_OUT_Y_LSB_t; 361 362 363 /* 364 ** OUT_Y_LSB - Bit field mask definitions 365 */ 366 #define FXOS8700_OUT_Y_LSB_YD_MASK ((uint8_t) 0xFC) 367 #define FXOS8700_OUT_Y_LSB_YD_SHIFT ((uint8_t) 2) 368 369 370 /*------------------------------*/ 371 372 373 374 /*-------------------------------- 375 ** Register: OUT_Z_MSB 376 ** Enum: FXOS8700_OUT_Z_MSB 377 ** -- 378 ** Offset : 0x05 - 14-bit Z-axis measurement data bits 13:6. 379 ** ------------------------------*/ 380 typedef union { 381 struct { 382 uint8_t zd; /* - 14-bit Z-axis measurement data bits 13:6. */ 383 384 } b; 385 uint8_t w; 386 } FXOS8700_OUT_Z_MSB_t; 387 388 389 /* 390 ** OUT_Z_MSB - Bit field mask definitions 391 */ 392 #define FXOS8700_OUT_Z_MSB_ZD_MASK ((uint8_t) 0xFF) 393 #define FXOS8700_OUT_Z_MSB_ZD_SHIFT ((uint8_t) 0) 394 395 396 /*------------------------------*/ 397 398 399 400 /*-------------------------------- 401 ** Register: OUT_Z_LSB 402 ** Enum: FXOS8700_OUT_Z_LSB 403 ** -- 404 ** Offset : 0x06 - 14-bit Z-axis measurement data bits 5:0. 405 ** ------------------------------*/ 406 typedef union { 407 struct { 408 uint8_t _reserved_ : 2; 409 uint8_t zd : 6; /* - 14-bit Z-axis measurement data bits 5:0. */ 410 411 } b; 412 uint8_t w; 413 } FXOS8700_OUT_Z_LSB_t; 414 415 416 /* 417 ** OUT_Z_LSB - Bit field mask definitions 418 */ 419 #define FXOS8700_OUT_Z_LSB_ZD_MASK ((uint8_t) 0xFC) 420 #define FXOS8700_OUT_Z_LSB_ZD_SHIFT ((uint8_t) 2) 421 422 423 /*------------------------------*/ 424 425 426 427 /*-------------------------------- 428 ** Register: F_SETUP 429 ** Enum: FXOS8700_F_SETUP 430 ** -- 431 ** Offset : 0x09 - FIFO setup. 432 ** ------------------------------*/ 433 typedef union { 434 struct { 435 uint8_t f_wmrk : 6; /* FIFO sample count watermark */ 436 437 uint8_t f_mode : 2; /* - FIFO Buffer operating mode */ 438 439 } b; 440 uint8_t w; 441 } FXOS8700_F_SETUP_t; 442 443 444 /* 445 ** F_SETUP - Bit field mask definitions 446 */ 447 #define FXOS8700_F_SETUP_F_WMRK_MASK ((uint8_t) 0x3F) 448 #define FXOS8700_F_SETUP_F_WMRK_SHIFT ((uint8_t) 0) 449 450 #define FXOS8700_F_SETUP_F_MODE_MASK ((uint8_t) 0xC0) 451 #define FXOS8700_F_SETUP_F_MODE_SHIFT ((uint8_t) 6) 452 453 454 /* 455 ** F_SETUP - Bit field value definitions 456 */ 457 #define FXOS8700_F_SETUP_F_MODE_FIFO_DISABLE ((uint8_t) 0x00) /* FIFO is disabled */ 458 #define FXOS8700_F_SETUP_F_MODE_FIFO_CIRC ((uint8_t) 0x40) /* FIFO contains the most recent samples when */ 459 /* overflowed (circular buffer). Oldest sample is */ 460 /* discarded to be replaced by new sample */ 461 #define FXOS8700_F_SETUP_F_MODE_FIFO_STOP_OVF ((uint8_t) 0x80) /* FIFO stops accepting new samples when overflowed */ 462 #define FXOS8700_F_SETUP_F_MODE_FIFO_TRIGGER ((uint8_t) 0xc0) /* FIFO trigger mode */ 463 /*------------------------------*/ 464 465 466 467 /*-------------------------------- 468 ** Register: TRIG_CFG 469 ** Enum: FXOS8700_TRIG_CFG 470 ** -- 471 ** Offset : 0x0A - FIFO event trigger configuration register. 472 ** ------------------------------*/ 473 typedef union { 474 struct { 475 uint8_t _reserved_ : 1; 476 uint8_t trig_a_vecm : 1; 477 uint8_t trig_a_ffmt : 1; 478 uint8_t trig_pulse : 1; 479 uint8_t trig_lndprt : 1; 480 uint8_t trig_trans : 1; 481 } b; 482 uint8_t w; 483 } FXOS8700_TRIG_CFG_t; 484 485 486 /* 487 ** TRIG_CFG - Bit field mask definitions 488 */ 489 #define FXOS8700_TRIG_CFG_TRIG_A_VECM_MASK ((uint8_t) 0x02) 490 #define FXOS8700_TRIG_CFG_TRIG_A_VECM_SHIFT ((uint8_t) 1) 491 492 #define FXOS8700_TRIG_CFG_TRIG_A_FFMT_MASK ((uint8_t) 0x04) 493 #define FXOS8700_TRIG_CFG_TRIG_A_FFMT_SHIFT ((uint8_t) 2) 494 495 #define FXOS8700_TRIG_CFG_TRIG_PULSE_MASK ((uint8_t) 0x08) 496 #define FXOS8700_TRIG_CFG_TRIG_PULSE_SHIFT ((uint8_t) 3) 497 498 #define FXOS8700_TRIG_CFG_TRIG_LNDPRT_MASK ((uint8_t) 0x10) 499 #define FXOS8700_TRIG_CFG_TRIG_LNDPRT_SHIFT ((uint8_t) 4) 500 501 #define FXOS8700_TRIG_CFG_TRIG_TRANS_MASK ((uint8_t) 0x20) 502 #define FXOS8700_TRIG_CFG_TRIG_TRANS_SHIFT ((uint8_t) 5) 503 504 505 /* 506 ** TRIG_CFG - Bit field value definitions 507 */ 508 #define FXOS8700_TRIG_CFG_TRIG_A_VECM_EN ((uint8_t) 0x02) /* Acceleration vector-magnitude FIFO trigger enable */ 509 #define FXOS8700_TRIG_CFG_TRIG_A_VECM_DIS ((uint8_t) 0x00) /* Acceleration vector-magnitude FIFO trigger disable */ 510 #define FXOS8700_TRIG_CFG_TRIG_A_FFMT_EN ((uint8_t) 0x04) /* Freefall/motion interrupt FIFO trigger enable */ 511 #define FXOS8700_TRIG_CFG_TRIG_A_FFMT_DIS ((uint8_t) 0x00) /* Freefall/motion interrupt FIFO trigger disable */ 512 #define FXOS8700_TRIG_CFG_TRIG_PULSE_EN ((uint8_t) 0x08) /* Pluse interrupt FIFO trigger enable */ 513 #define FXOS8700_TRIG_CFG_TRIG_PULSE_DIS ((uint8_t) 0x00) /* Pluse FIFO trigger enable */ 514 #define FXOS8700_TRIG_CFG_TRIG_LNDPRT_EN ((uint8_t) 0x10) /* Landscape/portrait orientation interrupt FIFO */ 515 /* trigger enable */ 516 #define FXOS8700_TRIG_CFG_TRIG_LNDPRT_DIS ((uint8_t) 0x00) /* Landscape/portrait orientation interrupt FIFO */ 517 /* trigger disable */ 518 #define FXOS8700_TRIG_CFG_TRIG_TRANS_EN ((uint8_t) 0x20) /* Transient interrupt FIFO trigger enable */ 519 #define FXOS8700_TRIG_CFG_TRIG_TRANS_DIS ((uint8_t) 0x00) /* Transient interrupt FIFO trigger disable */ 520 /*------------------------------*/ 521 522 523 524 /*-------------------------------- 525 ** Register: SYSMOD 526 ** Enum: FXOS8700_SYSMOD 527 ** -- 528 ** Offset : 0x0B - Current system mode. 529 ** ------------------------------*/ 530 typedef union { 531 struct { 532 uint8_t sysmod : 2; 533 uint8_t fgt : 5; 534 uint8_t fgerr : 1; 535 } b; 536 uint8_t w; 537 } FXOS8700_SYSMOD_t; 538 539 540 /* 541 ** SYSMOD - Bit field mask definitions 542 */ 543 #define FXOS8700_SYSMOD_SYSMOD_MASK ((uint8_t) 0x03) 544 #define FXOS8700_SYSMOD_SYSMOD_SHIFT ((uint8_t) 0) 545 546 #define FXOS8700_SYSMOD_FGT_MASK ((uint8_t) 0x7C) 547 #define FXOS8700_SYSMOD_FGT_SHIFT ((uint8_t) 2) 548 549 #define FXOS8700_SYSMOD_FGERR_MASK ((uint8_t) 0x80) 550 #define FXOS8700_SYSMOD_FGERR_SHIFT ((uint8_t) 7) 551 552 553 /* 554 ** SYSMOD - Bit field value definitions 555 */ 556 #define FXOS8700_SYSMOD_SYSMOD_STANDBY ((uint8_t) 0x00) /* Standby mode */ 557 #define FXOS8700_SYSMOD_SYSMOD_WAKE ((uint8_t) 0x01) /* Wake mode */ 558 #define FXOS8700_SYSMOD_SYSMOD_SLEEP ((uint8_t) 0x02) /* Sleep mode */ 559 /*------------------------------*/ 560 561 562 563 564 /*-------------------------------- 565 ** Register: INT_SOURCE 566 ** Enum: FXOS8700_INT_SOURCE 567 ** -- 568 ** Offset : 0x0C - Interrupt status. 569 ** ------------------------------*/ 570 typedef union { 571 struct { 572 uint8_t src_drdy : 1; 573 uint8_t src_a_vecm : 1; 574 uint8_t src_ffmt : 1; 575 uint8_t src_pulse : 1; 576 uint8_t src_lndprt : 1; 577 uint8_t src_trans : 1; 578 uint8_t src_fifo : 1; 579 uint8_t src_aslp : 1; 580 } b; 581 uint8_t w; 582 } FXOS8700_INT_SOURCE_t; 583 584 585 /* 586 ** INT_SOURCE - Bit field mask definitions 587 */ 588 #define FXOS8700_INT_SOURCE_SRC_DRDY_MASK ((uint8_t) 0x01) 589 #define FXOS8700_INT_SOURCE_SRC_DRDY_SHIFT ((uint8_t) 0) 590 591 #define FXOS8700_INT_SOURCE_SRC_A_VECM_MASK ((uint8_t) 0x02) 592 #define FXOS8700_INT_SOURCE_SRC_A_VECM_SHIFT ((uint8_t) 1) 593 594 #define FXOS8700_INT_SOURCE_SRC_FFMT_MASK ((uint8_t) 0x04) 595 #define FXOS8700_INT_SOURCE_SRC_FFMT_SHIFT ((uint8_t) 2) 596 597 #define FXOS8700_INT_SOURCE_SRC_PULSE_MASK ((uint8_t) 0x08) 598 #define FXOS8700_INT_SOURCE_SRC_PULSE_SHIFT ((uint8_t) 3) 599 600 #define FXOS8700_INT_SOURCE_SRC_LNDPRT_MASK ((uint8_t) 0x10) 601 #define FXOS8700_INT_SOURCE_SRC_LNDPRT_SHIFT ((uint8_t) 4) 602 603 #define FXOS8700_INT_SOURCE_SRC_TRANS_MASK ((uint8_t) 0x20) 604 #define FXOS8700_INT_SOURCE_SRC_TRANS_SHIFT ((uint8_t) 5) 605 606 #define FXOS8700_INT_SOURCE_SRC_FIFO_MASK ((uint8_t) 0x40) 607 #define FXOS8700_INT_SOURCE_SRC_FIFO_SHIFT ((uint8_t) 6) 608 609 #define FXOS8700_INT_SOURCE_SRC_ASLP_MASK ((uint8_t) 0x80) 610 #define FXOS8700_INT_SOURCE_SRC_ASLP_SHIFT ((uint8_t) 7) 611 612 613 /*------------------------------*/ 614 615 616 617 /*-------------------------------- 618 ** Register: WHO_AM_I 619 ** Enum: FXOS8700_WHO_AM_I 620 ** -- 621 ** Offset : 0x0D - Device ID. 622 ** ------------------------------*/ 623 typedef uint8_t FXOS8700_WHO_AM_I_t; 624 625 626 627 /*-------------------------------- 628 ** Register: XYZ_DATA_CFG 629 ** Enum: FXOS8700_XYZ_DATA_CFG 630 ** -- 631 ** Offset : 0x0E - Acceleration dynamic range and filter enable settings. 632 ** ------------------------------*/ 633 typedef union { 634 struct { 635 uint8_t fs : 2; 636 uint8_t _reserved_ : 2; 637 uint8_t hpf_out : 1; /* - Enable high-pass filter on acceleration output data */ 638 639 } b; 640 uint8_t w; 641 } FXOS8700_XYZ_DATA_CFG_t; 642 643 644 /* 645 ** XYZ_DATA_CFG - Bit field mask definitions 646 */ 647 #define FXOS8700_XYZ_DATA_CFG_FS_MASK ((uint8_t) 0x03) 648 #define FXOS8700_XYZ_DATA_CFG_FS_SHIFT ((uint8_t) 0) 649 650 #define FXOS8700_XYZ_DATA_CFG_HPF_OUT_MASK ((uint8_t) 0x10) 651 #define FXOS8700_XYZ_DATA_CFG_HPF_OUT_SHIFT ((uint8_t) 4) 652 653 654 /* 655 ** XYZ_DATA_CFG - Bit field value definitions 656 */ 657 #define FXOS8700_XYZ_DATA_CFG_HPF_OUT_EN ((uint8_t) 0x10) /* Enable high-pass filter on acceleration output */ 658 /* data */ 659 #define FXOS8700_XYZ_DATA_CFG_HPF_OUT_DISABLE ((uint8_t) 0x00) /* High-pass filter is disabled */ 660 #define FXOS8700_XYZ_DATA_CFG_FS_2G_0P244 ((uint8_t) 0x00) /* 0.244 mg/LSB */ 661 #define FXOS8700_XYZ_DATA_CFG_FS_4G_0P488 ((uint8_t) 0x01) /* 0.488 mg/LSB */ 662 #define FXOS8700_XYZ_DATA_CFG_FS_8G_0P976 ((uint8_t) 0x02) /* 0.976 mg/LSB */ 663 /*------------------------------*/ 664 665 666 667 /*-------------------------------- 668 ** Register: HP_FILTER_CUTOFF 669 ** Enum: FXOS8700_HP_FILTER_CUTOFF 670 ** -- 671 ** Offset : 0x0F - Pulse detection highpass and lowpass filter enabling bits. 672 ** ------------------------------*/ 673 typedef union { 674 struct { 675 uint8_t sel : 2; 676 uint8_t _reserved_ : 2; 677 uint8_t pulse_lpf_en : 1; 678 uint8_t pulse_hpf_byp : 1; 679 } b; 680 uint8_t w; 681 } FXOS8700_HP_FILTER_CUTOFF_t; 682 683 684 /* 685 ** HP_FILTER_CUTOFF - Bit field mask definitions 686 */ 687 #define FXOS8700_HP_FILTER_CUTOFF_SEL_MASK ((uint8_t) 0x03) 688 #define FXOS8700_HP_FILTER_CUTOFF_SEL_SHIFT ((uint8_t) 0) 689 690 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_LPF_EN_MASK ((uint8_t) 0x10) 691 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_LPF_EN_SHIFT ((uint8_t) 4) 692 693 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_HPF_BYP_MASK ((uint8_t) 0x20) 694 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_HPF_BYP_SHIFT ((uint8_t) 5) 695 696 697 /* 698 ** HP_FILTER_CUTOFF - Bit field value definitions 699 */ 700 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_HPF_BYP_EN ((uint8_t) 0x00) /* HPF enabled for pulse processing */ 701 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_HPF_BYP_BYPASS ((uint8_t) 0x20) /* HPF bypassed for pulse processing */ 702 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_LPF_EN_EN ((uint8_t) 0x10) /* LPF enabled for pulse processing */ 703 #define FXOS8700_HP_FILTER_CUTOFF_PULSE_LPF_EN_DISABLE ((uint8_t) 0x00) /* LPF bypassed for pulse processing */ 704 #define FXOS8700_HP_FILTER_CUTOFF_SEL_EN ((uint8_t) 0x01) /* HPF cutoff frequency selection Enabled */ 705 #define FXOS8700_HP_FILTER_CUTOFF_SEL_DISABLE ((uint8_t) 0x00) /* HPF cutoff frequency selection Disabled */ 706 /*------------------------------*/ 707 708 709 710 /*-------------------------------- 711 ** Register: PL_STATUS 712 ** Enum: FXOS8700_PL_STATUS 713 ** -- 714 ** Offset : 0x10 - Landscape/portrait orientation status. 715 ** ------------------------------*/ 716 typedef union { 717 struct { 718 uint8_t bafro : 1; 719 uint8_t lapo : 2; 720 uint8_t _reserved_ : 3; 721 uint8_t lo : 1; 722 uint8_t newlp : 1; 723 } b; 724 uint8_t w; 725 } FXOS8700_PL_STATUS_t; 726 727 728 /* 729 ** PL_STATUS - Bit field mask definitions 730 */ 731 #define FXOS8700_PL_STATUS_BAFRO_MASK ((uint8_t) 0x01) 732 #define FXOS8700_PL_STATUS_BAFRO_SHIFT ((uint8_t) 0) 733 734 #define FXOS8700_PL_STATUS_LAPO_MASK ((uint8_t) 0x06) 735 #define FXOS8700_PL_STATUS_LAPO_SHIFT ((uint8_t) 1) 736 737 #define FXOS8700_PL_STATUS_LO_MASK ((uint8_t) 0x40) 738 #define FXOS8700_PL_STATUS_LO_SHIFT ((uint8_t) 6) 739 740 #define FXOS8700_PL_STATUS_NEWLP_MASK ((uint8_t) 0x80) 741 #define FXOS8700_PL_STATUS_NEWLP_SHIFT ((uint8_t) 7) 742 743 744 /*------------------------------*/ 745 746 747 748 /*-------------------------------- 749 ** Register: PL_CFG 750 ** Enum: FXOS8700_PL_CFG 751 ** -- 752 ** Offset : 0x11 - Landscape/portrait configuration. 753 ** ------------------------------*/ 754 typedef union { 755 struct { 756 uint8_t _reserved_ : 6; 757 uint8_t pl_en : 1; 758 uint8_t dbcntm : 1; 759 } b; 760 uint8_t w; 761 } FXOS8700_PL_CFG_t; 762 763 764 /* 765 ** PL_CFG - Bit field mask definitions 766 */ 767 #define FXOS8700_PL_CFG_PL_EN_MASK ((uint8_t) 0x40) 768 #define FXOS8700_PL_CFG_PL_EN_SHIFT ((uint8_t) 6) 769 770 #define FXOS8700_PL_CFG_DBCNTM_MASK ((uint8_t) 0x80) 771 #define FXOS8700_PL_CFG_DBCNTM_SHIFT ((uint8_t) 7) 772 773 774 /* 775 ** PL_CFG - Bit field value definitions 776 */ 777 #define FXOS8700_PL_CFG_DBCNTM_DECREMENT_MODE ((uint8_t) 0x00) /* Decrements debounce whenever condition of interest is */ 778 /* no longer valid */ 779 #define FXOS8700_PL_CFG_DBCNTM_CLEAR_MODE ((uint8_t) 0x80) /* Clears counter whenever condition of interest is no */ 780 /* longer valid */ 781 #define FXOS8700_PL_CFG_PL_EN_DISABLE ((uint8_t) 0x00) /* Portrait/Landscape detection is disabled. */ 782 #define FXOS8700_PL_CFG_PL_EN_ENABLE ((uint8_t) 0x40) /* Portrait/Landscape detection is enabled. */ 783 /*------------------------------*/ 784 785 786 787 /*-------------------------------- 788 ** Register: PL_COUNT 789 ** Enum: FXOS8700_PL_COUNT 790 ** -- 791 ** Offset : 0x12 - Landscape/portrait debounce counter. 792 ** ------------------------------*/ 793 typedef union { 794 struct { 795 uint8_t dbnce; 796 } b; 797 uint8_t w; 798 } FXOS8700_PL_COUNT_t; 799 800 801 /* 802 ** PL_COUNT - Bit field mask definitions 803 */ 804 #define FXOS8700_PL_COUNT_DBNCE_MASK ((uint8_t) 0xFF) 805 #define FXOS8700_PL_COUNT_DBNCE_SHIFT ((uint8_t) 0) 806 807 808 /*------------------------------*/ 809 810 811 812 /*-------------------------------- 813 ** Register: PL_BF_ZCOMP 814 ** Enum: FXOS8700_PL_BF_ZCOMP 815 ** -- 816 ** Offset : 0x13 - Back/front trip angle threshold. 817 ** ------------------------------*/ 818 typedef union { 819 struct { 820 uint8_t zlock : 3; 821 uint8_t _reserved_ : 3; 822 uint8_t bkfr : 2; 823 } b; 824 uint8_t w; 825 } FXOS8700_PL_BF_ZCOMP_t; 826 827 828 /* 829 ** PL_BF_ZCOMP - Bit field mask definitions 830 */ 831 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_MASK ((uint8_t) 0x07) 832 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_SHIFT ((uint8_t) 0) 833 834 #define FXOS8700_PL_BF_ZCOMP_BKFR_MASK ((uint8_t) 0xC0) 835 #define FXOS8700_PL_BF_ZCOMP_BKFR_SHIFT ((uint8_t) 6) 836 837 838 /* 839 ** PL_BF_ZCOMP - Bit field value definitions 840 */ 841 #define FXOS8700_PL_BF_ZCOMP_BKFR_BF_LT80_GT280__FB_LT260_GT100 ((uint8_t) 0x00) 842 #define FXOS8700_PL_BF_ZCOMP_BKFR_BF_LT75_GT285__FB_LT255_GT105 ((uint8_t) 0x40) 843 #define FXOS8700_PL_BF_ZCOMP_BKFR_BF_LT70_GT290__FB_LT250_GT110 ((uint8_t) 0x80) 844 #define FXOS8700_PL_BF_ZCOMP_BKFR_BF_LT65_GT295__FB_LT245_GT115 ((uint8_t) 0xc0) 845 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_13P6MIN_14P5MAX ((uint8_t) 0x00) 846 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_17P1MIN_18P2MAX ((uint8_t) 0x01) 847 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_20P7MIN_22P0MAX ((uint8_t) 0x02) 848 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_24P4MIN_25P9MAX ((uint8_t) 0x04) 849 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_28P1MIN_30P0MAX ((uint8_t) 0x04) 850 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_32P0MIN_34P2MAX ((uint8_t) 0x05) 851 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_36P1MIN_38P7MAX ((uint8_t) 0x06) 852 #define FXOS8700_PL_BF_ZCOMP_ZLOCK_40P4MIN_43P4MAX ((uint8_t) 0x07) 853 /*------------------------------*/ 854 855 856 857 /*-------------------------------- 858 ** Register: PL_THS_REG 859 ** Enum: FXOS8700_PL_THS_REG 860 ** -- 861 ** Offset : 0x14 - Portrait to landscape trip threshold angle and hysteresis settings. 862 ** ------------------------------*/ 863 typedef union { 864 struct { 865 uint8_t hys : 3; 866 uint8_t pl_ths : 5; 867 } b; 868 uint8_t w; 869 } FXOS8700_PL_THS_REG_t; 870 871 872 /* 873 ** PL_THS_REG - Bit field mask definitions 874 */ 875 #define FXOS8700_PL_THS_REG_HYS_MASK ((uint8_t) 0x07) 876 #define FXOS8700_PL_THS_REG_HYS_SHIFT ((uint8_t) 0) 877 878 #define FXOS8700_PL_THS_REG_PL_THS_MASK ((uint8_t) 0xF8) 879 #define FXOS8700_PL_THS_REG_PL_THS_SHIFT ((uint8_t) 3) 880 881 882 /* 883 ** PL_THS_REG - Bit field value definitions 884 */ 885 #define FXOS8700_PL_THS_REG_PL_THS_15DEG ((uint8_t) 0x38) 886 #define FXOS8700_PL_THS_REG_PL_THS_20DEG ((uint8_t) 0x48) 887 #define FXOS8700_PL_THS_REG_PL_THS_30DEG ((uint8_t) 0x60) 888 #define FXOS8700_PL_THS_REG_PL_THS_35DEG ((uint8_t) 0x68) 889 #define FXOS8700_PL_THS_REG_PL_THS_40DEG ((uint8_t) 0x78) 890 #define FXOS8700_PL_THS_REG_PL_THS_45DEG ((uint8_t) 0x80) 891 #define FXOS8700_PL_THS_REG_PL_THS_55DEG ((uint8_t) 0x98) 892 #define FXOS8700_PL_THS_REG_PL_THS_60DEG ((uint8_t) 0xa0) 893 #define FXOS8700_PL_THS_REG_PL_THS_70DEG ((uint8_t) 0xb8) 894 #define FXOS8700_PL_THS_REG_PL_THS_75DEG ((uint8_t) 0xc8) 895 #define FXOS8700_PL_THS_REG_HYS_LP45_PL45 ((uint8_t) 0x00) 896 #define FXOS8700_PL_THS_REG_HYS_LP49_PL41 ((uint8_t) 0x01) 897 #define FXOS8700_PL_THS_REG_HYS_LP52_PL38 ((uint8_t) 0x02) 898 #define FXOS8700_PL_THS_REG_HYS_LP56_PL34 ((uint8_t) 0x03) 899 #define FXOS8700_PL_THS_REG_HYS_LP59_PL31 ((uint8_t) 0x04) 900 #define FXOS8700_PL_THS_REG_HYS_LP62_PL28 ((uint8_t) 0x05) 901 #define FXOS8700_PL_THS_REG_HYS_LP66_PL24 ((uint8_t) 0x06) 902 #define FXOS8700_PL_THS_REG_HYS_LP69_PL21 ((uint8_t) 0x07) 903 /*------------------------------*/ 904 905 906 907 /*-------------------------------- 908 ** Register: A_FFMT_CFG 909 ** Enum: FXOS8700_A_FFMT_CFG 910 ** -- 911 ** Offset : 0x15 - Freefall/motion function configuration. 912 ** ------------------------------*/ 913 typedef union { 914 struct { 915 uint8_t _reserved_ : 3; 916 uint8_t xefe : 1; 917 uint8_t yefe : 1; 918 uint8_t zefe : 1; 919 uint8_t oae : 1; 920 uint8_t ele : 1; 921 } b; 922 uint8_t w; 923 } FXOS8700_A_FFMT_CFG_t; 924 925 926 /* 927 ** A_FFMT_CFG - Bit field mask definitions 928 */ 929 #define FXOS8700_A_FFMT_CFG_XEFE_MASK ((uint8_t) 0x08) 930 #define FXOS8700_A_FFMT_CFG_XEFE_SHIFT ((uint8_t) 3) 931 932 #define FXOS8700_A_FFMT_CFG_YEFE_MASK ((uint8_t) 0x10) 933 #define FXOS8700_A_FFMT_CFG_YEFE_SHIFT ((uint8_t) 4) 934 935 #define FXOS8700_A_FFMT_CFG_ZEFE_MASK ((uint8_t) 0x20) 936 #define FXOS8700_A_FFMT_CFG_ZEFE_SHIFT ((uint8_t) 5) 937 938 #define FXOS8700_A_FFMT_CFG_OAE_MASK ((uint8_t) 0x40) 939 #define FXOS8700_A_FFMT_CFG_OAE_SHIFT ((uint8_t) 6) 940 941 #define FXOS8700_A_FFMT_CFG_ELE_MASK ((uint8_t) 0x80) 942 #define FXOS8700_A_FFMT_CFG_ELE_SHIFT ((uint8_t) 7) 943 944 945 /* 946 ** A_FFMT_CFG - Bit field value definitions 947 */ 948 #define FXOS8700_A_FFMT_CFG_ELE_EN ((uint8_t) 0x80) /* Event flag latch enabled */ 949 #define FXOS8700_A_FFMT_CFG_ELE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 950 #define FXOS8700_A_FFMT_CFG_OAE_FREEFALL ((uint8_t) 0x00) /* Freefall flag */ 951 #define FXOS8700_A_FFMT_CFG_OAE_MOTION ((uint8_t) 0x40) /* Motion flag */ 952 #define FXOS8700_A_FFMT_CFG_ZEFE_DIS ((uint8_t) 0x00) /* Event detection disabled */ 953 #define FXOS8700_A_FFMT_CFG_ZEFE_RAISE_EVENT ((uint8_t) 0x20) /* Raise event flag on measured Z-axis acceleration */ 954 /* above/below threshold */ 955 #define FXOS8700_A_FFMT_CFG_YEFE_DIS ((uint8_t) 0x00) /* Event detection disabled */ 956 #define FXOS8700_A_FFMT_CFG_YEFE_RAISE_EVENT ((uint8_t) 0x10) /* Raise event flag on measured Y-axis acceleration */ 957 /* above/below threshold */ 958 #define FXOS8700_A_FFMT_CFG_XEFE_DIS ((uint8_t) 0x00) /* Event detection disabled */ 959 #define FXOS8700_A_FFMT_CFG_XEFE_RAISE_EVENT ((uint8_t) 0x08) /* Raise event flag on measured X-axis acceleration */ 960 /* above/below threshold */ 961 /*------------------------------*/ 962 963 964 965 /*-------------------------------- 966 ** Register: A_FFMT_SRC 967 ** Enum: FXOS8700_A_FFMT_SRC 968 ** -- 969 ** Offset : 0x16 - Freefall/motion event source register. 970 ** ------------------------------*/ 971 typedef union { 972 struct { 973 uint8_t xhp : 1; 974 uint8_t xhe : 1; 975 uint8_t yhp : 1; 976 uint8_t yhe : 1; 977 uint8_t zhp : 1; 978 uint8_t zhe : 1; 979 uint8_t _reserved_ : 1; 980 uint8_t ea : 1; 981 } b; 982 uint8_t w; 983 } FXOS8700_A_FFMT_SRC_t; 984 985 986 /* 987 ** A_FFMT_SRC - Bit field mask definitions 988 */ 989 #define FXOS8700_A_FFMT_SRC_XHP_MASK ((uint8_t) 0x01) 990 #define FXOS8700_A_FFMT_SRC_XHP_SHIFT ((uint8_t) 0) 991 992 #define FXOS8700_A_FFMT_SRC_XHE_MASK ((uint8_t) 0x02) 993 #define FXOS8700_A_FFMT_SRC_XHE_SHIFT ((uint8_t) 1) 994 995 #define FXOS8700_A_FFMT_SRC_YHP_MASK ((uint8_t) 0x04) 996 #define FXOS8700_A_FFMT_SRC_YHP_SHIFT ((uint8_t) 2) 997 998 #define FXOS8700_A_FFMT_SRC_YHE_MASK ((uint8_t) 0x08) 999 #define FXOS8700_A_FFMT_SRC_YHE_SHIFT ((uint8_t) 3) 1000 1001 #define FXOS8700_A_FFMT_SRC_ZHP_MASK ((uint8_t) 0x10) 1002 #define FXOS8700_A_FFMT_SRC_ZHP_SHIFT ((uint8_t) 4) 1003 1004 #define FXOS8700_A_FFMT_SRC_ZHE_MASK ((uint8_t) 0x20) 1005 #define FXOS8700_A_FFMT_SRC_ZHE_SHIFT ((uint8_t) 5) 1006 1007 #define FXOS8700_A_FFMT_SRC_EA_MASK ((uint8_t) 0x80) 1008 #define FXOS8700_A_FFMT_SRC_EA_SHIFT ((uint8_t) 7) 1009 1010 1011 /*------------------------------*/ 1012 1013 1014 1015 /*-------------------------------- 1016 ** Register: A_FFMT_THS 1017 ** Enum: FXOS8700_A_FFMT_THS 1018 ** -- 1019 ** Offset : 0x17 - Freefall/motion threshold register. 1020 ** ------------------------------*/ 1021 typedef union { 1022 struct { 1023 uint8_t ths : 7; 1024 uint8_t dbcntm : 1; 1025 } b; 1026 uint8_t w; 1027 } FXOS8700_A_FFMT_THS_t; 1028 1029 1030 /* 1031 ** A_FFMT_THS - Bit field mask definitions 1032 */ 1033 #define FXOS8700_A_FFMT_THS_THS_MASK ((uint8_t) 0x7F) 1034 #define FXOS8700_A_FFMT_THS_THS_SHIFT ((uint8_t) 0) 1035 1036 #define FXOS8700_A_FFMT_THS_DBCNTM_MASK ((uint8_t) 0x80) 1037 #define FXOS8700_A_FFMT_THS_DBCNTM_SHIFT ((uint8_t) 7) 1038 1039 1040 /*------------------------------*/ 1041 1042 1043 1044 /*-------------------------------- 1045 ** Register: A_FFMT_COUNT 1046 ** Enum: FXOS8700_A_FFMT_COUNT 1047 ** -- 1048 ** Offset : 0x18 - Freefall/motion debounce counter. 1049 ** ------------------------------*/ 1050 typedef uint8_t FXOS8700_A_FFMT_COUNT_t; 1051 1052 1053 1054 1055 /*-------------------------------- 1056 ** Register: TRANSIENT_CFG 1057 ** Enum: FXOS8700_TRANSIENT_CFG 1058 ** -- 1059 ** Offset : 0x1D - Transient function configuration. 1060 ** ------------------------------*/ 1061 typedef union { 1062 struct { 1063 uint8_t hpf_byp : 1; 1064 uint8_t xtefe : 1; 1065 uint8_t ytefe : 1; 1066 uint8_t ztefe : 1; 1067 uint8_t tele : 1; 1068 } b; 1069 uint8_t w; 1070 } FXOS8700_TRANSIENT_CFG_t; 1071 1072 1073 /* 1074 ** TRANSIENT_CFG - Bit field mask definitions 1075 */ 1076 #define FXOS8700_TRANSIENT_CFG_HPF_BYP_MASK ((uint8_t) 0x01) 1077 #define FXOS8700_TRANSIENT_CFG_HPF_BYP_SHIFT ((uint8_t) 0) 1078 1079 #define FXOS8700_TRANSIENT_CFG_XTEFE_MASK ((uint8_t) 0x02) 1080 #define FXOS8700_TRANSIENT_CFG_XTEFE_SHIFT ((uint8_t) 1) 1081 1082 #define FXOS8700_TRANSIENT_CFG_YTEFE_MASK ((uint8_t) 0x04) 1083 #define FXOS8700_TRANSIENT_CFG_YTEFE_SHIFT ((uint8_t) 2) 1084 1085 #define FXOS8700_TRANSIENT_CFG_ZTEFE_MASK ((uint8_t) 0x08) 1086 #define FXOS8700_TRANSIENT_CFG_ZTEFE_SHIFT ((uint8_t) 3) 1087 1088 #define FXOS8700_TRANSIENT_CFG_TELE_MASK ((uint8_t) 0x10) 1089 #define FXOS8700_TRANSIENT_CFG_TELE_SHIFT ((uint8_t) 4) 1090 1091 1092 /* 1093 ** TRANSIENT_CFG - Bit field value definitions 1094 */ 1095 #define FXOS8700_TRANSIENT_CFG_TELE_EN ((uint8_t) 0x10) /* Event flag latch enabled: the transient */ 1096 /* interrupt event flag is latched and a read of */ 1097 /* the TRANSIENT_SRC register is required to */ 1098 /* clear the event flag */ 1099 #define FXOS8700_TRANSIENT_CFG_TELE_DIS ((uint8_t) 0x00) /* Event flag latch disabled: the transient */ 1100 /* interrupt flag reflects the real-time status */ 1101 /* of the function */ 1102 #define FXOS8700_TRANSIENT_CFG_ZTEFE_EN ((uint8_t) 0x08) /* Z-axis event detection enabled. Raise event */ 1103 /* flag on Z-axis acceleration value greater than */ 1104 /* threshold */ 1105 #define FXOS8700_TRANSIENT_CFG_ZTEFE_DIS ((uint8_t) 0x00) /* Z-axis event detection disabled */ 1106 #define FXOS8700_TRANSIENT_CFG_YTEFE_EN ((uint8_t) 0x04) /* Y-axis event detection enabled. Raise event */ 1107 /* flag on Y-axis acceleration value greater than */ 1108 /* threshold */ 1109 #define FXOS8700_TRANSIENT_CFG_YTEFE_DIS ((uint8_t) 0x00) /* Y-axis event detection disabled */ 1110 #define FXOS8700_TRANSIENT_CFG_XTEFE_EN ((uint8_t) 0x02) /* X-axis event detection enabled. Raise event */ 1111 /* flag on X-axis acceleration value greater than */ 1112 /* threshold */ 1113 #define FXOS8700_TRANSIENT_CFG_XTEFE_DIS ((uint8_t) 0x00) /* X-axis event detection disabled */ 1114 #define FXOS8700_TRANSIENT_CFG_HPF_BYP_EN ((uint8_t) 0x01) /* High-pass filter is not applied to */ 1115 /* accelerometer data input to the transient */ 1116 /* function */ 1117 #define FXOS8700_TRANSIENT_CFG_HPF_BYP_DIS ((uint8_t) 0x00) /* High-pass filter is applied to accelerometer */ 1118 /* data input to the transient function */ 1119 /*------------------------------*/ 1120 1121 1122 1123 /*-------------------------------- 1124 ** Register: TRANSIENT_SRC 1125 ** Enum: FXOS8700_TRANSIENT_SRC 1126 ** -- 1127 ** Offset : 0x1E - Transient event status register. 1128 ** ------------------------------*/ 1129 typedef union { 1130 struct { 1131 uint8_t trans_xpol : 1; 1132 uint8_t tran_xef : 1; 1133 uint8_t tran_ypol : 1; 1134 uint8_t tran_yef : 1; 1135 uint8_t tran_zpol : 1; 1136 uint8_t tran_zef : 1; 1137 uint8_t tran_ea : 1; 1138 } b; 1139 uint8_t w; 1140 } FXOS8700_TRANSIENT_SRC_t; 1141 1142 1143 /* 1144 ** TRANSIENT_SRC - Bit field mask definitions 1145 */ 1146 #define FXOS8700_TRANSIENT_SRC_TRANS_XPOL_MASK ((uint8_t) 0x01) 1147 #define FXOS8700_TRANSIENT_SRC_TRANS_XPOL_SHIFT ((uint8_t) 0) 1148 1149 #define FXOS8700_TRANSIENT_SRC_TRAN_XEF_MASK ((uint8_t) 0x02) 1150 #define FXOS8700_TRANSIENT_SRC_TRAN_XEF_SHIFT ((uint8_t) 1) 1151 1152 #define FXOS8700_TRANSIENT_SRC_TRAN_YPOL_MASK ((uint8_t) 0x04) 1153 #define FXOS8700_TRANSIENT_SRC_TRAN_YPOL_SHIFT ((uint8_t) 2) 1154 1155 #define FXOS8700_TRANSIENT_SRC_TRAN_YEF_MASK ((uint8_t) 0x08) 1156 #define FXOS8700_TRANSIENT_SRC_TRAN_YEF_SHIFT ((uint8_t) 3) 1157 1158 #define FXOS8700_TRANSIENT_SRC_TRAN_ZPOL_MASK ((uint8_t) 0x10) 1159 #define FXOS8700_TRANSIENT_SRC_TRAN_ZPOL_SHIFT ((uint8_t) 4) 1160 1161 #define FXOS8700_TRANSIENT_SRC_TRAN_ZEF_MASK ((uint8_t) 0x20) 1162 #define FXOS8700_TRANSIENT_SRC_TRAN_ZEF_SHIFT ((uint8_t) 5) 1163 1164 #define FXOS8700_TRANSIENT_SRC_TRAN_EA_MASK ((uint8_t) 0x40) 1165 #define FXOS8700_TRANSIENT_SRC_TRAN_EA_SHIFT ((uint8_t) 6) 1166 1167 1168 /*------------------------------*/ 1169 1170 1171 1172 /*-------------------------------- 1173 ** Register: TRANSIENT_THS 1174 ** Enum: FXOS8700_TRANSIENT_THS 1175 ** -- 1176 ** Offset : 0x1F - Transient event threshold. 1177 ** ------------------------------*/ 1178 typedef union { 1179 struct { 1180 uint8_t tr_ths : 7; 1181 uint8_t tr_dbcntm : 1; 1182 } b; 1183 uint8_t w; 1184 } FXOS8700_TRANSIENT_THS_t; 1185 1186 1187 /* 1188 ** TRANSIENT_THS - Bit field mask definitions 1189 */ 1190 #define FXOS8700_TRANSIENT_THS_TR_THS_MASK ((uint8_t) 0x7F) 1191 #define FXOS8700_TRANSIENT_THS_TR_THS_SHIFT ((uint8_t) 0) 1192 1193 #define FXOS8700_TRANSIENT_THS_TR_DBCNTM_MASK ((uint8_t) 0x80) 1194 #define FXOS8700_TRANSIENT_THS_TR_DBCNTM_SHIFT ((uint8_t) 7) 1195 1196 1197 /* 1198 ** TRANSIENT_THS - Bit field value definitions 1199 */ 1200 #define FXOS8700_TRANSIENT_THS_TR_THS_DECREMENTS ((uint8_t) 0x00) /* Decrements debounce counter when the transient */ 1201 /* event condition is not true during the current */ 1202 /* ODR period */ 1203 #define FXOS8700_TRANSIENT_THS_TR_THS_CLEAR ((uint8_t) 0x01) /* Clears debounce counter when the transient */ 1204 /* event condition is not true during the current */ 1205 /* ODR period */ 1206 /*------------------------------*/ 1207 1208 1209 1210 /*-------------------------------- 1211 ** Register: TRANSIENT_COUNT 1212 ** Enum: FXOS8700_TRANSIENT_COUNT 1213 ** -- 1214 ** Offset : 0x20 - Transient debounce counter. 1215 ** ------------------------------*/ 1216 typedef uint8_t FXOS8700_TRANSIENT_COUNT_t; 1217 1218 1219 1220 1221 1222 /*-------------------------------- 1223 ** Register: PULSE_CFG 1224 ** Enum: FXOS8700_PULSE_CFG 1225 ** -- 1226 ** Offset : 0x21 - Pulse function configuration. 1227 ** ------------------------------*/ 1228 typedef union { 1229 struct { 1230 uint8_t pls_xspefe : 1; 1231 uint8_t pls_xdpefe : 1; 1232 uint8_t pls_yspefe : 1; 1233 uint8_t pls_ydpefe : 1; 1234 uint8_t pls_zspefe : 1; 1235 uint8_t pls_zdpefe : 1; 1236 uint8_t pls_ele : 1; 1237 uint8_t pls_dpa : 1; 1238 } b; 1239 uint8_t w; 1240 } FXOS8700_PULSE_CFG_t; 1241 1242 1243 /* 1244 ** PULSE_CFG - Bit field mask definitions 1245 */ 1246 #define FXOS8700_PULSE_CFG_PLS_XSPEFE_MASK ((uint8_t) 0x01) 1247 #define FXOS8700_PULSE_CFG_PLS_XSPEFE_SHIFT ((uint8_t) 0) 1248 1249 #define FXOS8700_PULSE_CFG_PLS_XDPEFE_MASK ((uint8_t) 0x02) 1250 #define FXOS8700_PULSE_CFG_PLS_XDPEFE_SHIFT ((uint8_t) 1) 1251 1252 #define FXOS8700_PULSE_CFG_PLS_YSPEFE_MASK ((uint8_t) 0x04) 1253 #define FXOS8700_PULSE_CFG_PLS_YSPEFE_SHIFT ((uint8_t) 2) 1254 1255 #define FXOS8700_PULSE_CFG_PLS_YDPEFE_MASK ((uint8_t) 0x08) 1256 #define FXOS8700_PULSE_CFG_PLS_YDPEFE_SHIFT ((uint8_t) 3) 1257 1258 #define FXOS8700_PULSE_CFG_PLS_ZSPEFE_MASK ((uint8_t) 0x10) 1259 #define FXOS8700_PULSE_CFG_PLS_ZSPEFE_SHIFT ((uint8_t) 4) 1260 1261 #define FXOS8700_PULSE_CFG_PLS_ZDPEFE_MASK ((uint8_t) 0x20) 1262 #define FXOS8700_PULSE_CFG_PLS_ZDPEFE_SHIFT ((uint8_t) 5) 1263 1264 #define FXOS8700_PULSE_CFG_PLS_ELE_MASK ((uint8_t) 0x40) 1265 #define FXOS8700_PULSE_CFG_PLS_ELE_SHIFT ((uint8_t) 6) 1266 1267 #define FXOS8700_PULSE_CFG_PLS_DPA_MASK ((uint8_t) 0x80) 1268 #define FXOS8700_PULSE_CFG_PLS_DPA_SHIFT ((uint8_t) 7) 1269 1270 1271 /* 1272 ** PULSE_CFG - Bit field value definitions 1273 */ 1274 #define FXOS8700_PULSE_CFG_PLS_DPA_DIS ((uint8_t) 0x00) /* Setting the pls_dpa bit momentarily suspends the */ 1275 /* double-tap detection if the start of a pulse is */ 1276 /* detected during the time period specified by the */ 1277 /* PULSE_LTCY register and the pulse ends before the */ 1278 /* end of the time period specified by the PULSE_LTCY */ 1279 /* register */ 1280 #define FXOS8700_PULSE_CFG_PLS_DPA_EN ((uint8_t) 0x80) /* Double-pulse detection is not aborted if the start */ 1281 /* of a pulse is detected during the time period */ 1282 /* specified by the PULSE_LTCY register */ 1283 #define FXOS8700_PULSE_CFG_PLS_ELE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 1284 #define FXOS8700_PULSE_CFG_PLS_ELE_EN ((uint8_t) 0x40) /* Event flag latch enabled */ 1285 #define FXOS8700_PULSE_CFG_PLS_ZDPEFE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 1286 #define FXOS8700_PULSE_CFG_PLS_ZDPEFE_EN ((uint8_t) 0x20) /* Raise event flag on detection of double-pulse */ 1287 /* event on Z-axis */ 1288 #define FXOS8700_PULSE_CFG_PLS_ZSPEFE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 1289 #define FXOS8700_PULSE_CFG_PLS_ZSPEFE_EN ((uint8_t) 0x10) /* Raise event flag on detection of single-pulse */ 1290 /* event on Z-axis */ 1291 #define FXOS8700_PULSE_CFG_PLS_YDPEFE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 1292 #define FXOS8700_PULSE_CFG_PLS_YDPEFE_EN ((uint8_t) 0x08) /* Raise event flag on detection of double-pulse */ 1293 /* event on Y-axis */ 1294 #define FXOS8700_PULSE_CFG_PLS_YSPEFE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 1295 #define FXOS8700_PULSE_CFG_PLS_YSPEFE_EN ((uint8_t) 0x04) /* Raise event flag on detection of single-pulse */ 1296 /* event on Y-axis */ 1297 #define FXOS8700_PULSE_CFG_PLS_XDPEFE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 1298 #define FXOS8700_PULSE_CFG_PLS_XDPEFE_EN ((uint8_t) 0x02) /* Raise event flag on detection of double-pulse */ 1299 /* event on X-axis */ 1300 #define FXOS8700_PULSE_CFG_PLS_XSPEFE_DIS ((uint8_t) 0x00) /* Event flag latch disabled */ 1301 #define FXOS8700_PULSE_CFG_PLS_XSPEFE_EN ((uint8_t) 0x01) /* Raise event flag on detection of single-pulse */ 1302 /* event on X-axis */ 1303 /*------------------------------*/ 1304 1305 1306 1307 /*-------------------------------- 1308 ** Register: PULSE_SRC 1309 ** Enum: FXOS8700_PULSE_SRC 1310 ** -- 1311 ** Offset : 0x22 - Pulse function source register. 1312 ** ------------------------------*/ 1313 typedef union { 1314 struct { 1315 uint8_t pls_src_polx : 1; 1316 uint8_t pls_src_poly : 1; 1317 uint8_t pls_src_polz : 1; 1318 uint8_t pls_src_dpe : 1; 1319 uint8_t pls_src_axx : 1; 1320 uint8_t pls_src_axy : 1; 1321 uint8_t pls_src_axz : 1; 1322 uint8_t pls_src_ea : 1; 1323 } b; 1324 uint8_t w; 1325 } FXOS8700_PULSE_SRC_t; 1326 1327 1328 /* 1329 ** PULSE_SRC - Bit field mask definitions 1330 */ 1331 #define FXOS8700_PULSE_SRC_PLS_SRC_POLX_MASK ((uint8_t) 0x01) 1332 #define FXOS8700_PULSE_SRC_PLS_SRC_POLX_SHIFT ((uint8_t) 0) 1333 1334 #define FXOS8700_PULSE_SRC_PLS_SRC_POLY_MASK ((uint8_t) 0x02) 1335 #define FXOS8700_PULSE_SRC_PLS_SRC_POLY_SHIFT ((uint8_t) 1) 1336 1337 #define FXOS8700_PULSE_SRC_PLS_SRC_POLZ_MASK ((uint8_t) 0x04) 1338 #define FXOS8700_PULSE_SRC_PLS_SRC_POLZ_SHIFT ((uint8_t) 2) 1339 1340 #define FXOS8700_PULSE_SRC_PLS_SRC_DPE_MASK ((uint8_t) 0x08) 1341 #define FXOS8700_PULSE_SRC_PLS_SRC_DPE_SHIFT ((uint8_t) 3) 1342 1343 #define FXOS8700_PULSE_SRC_PLS_SRC_AXX_MASK ((uint8_t) 0x10) 1344 #define FXOS8700_PULSE_SRC_PLS_SRC_AXX_SHIFT ((uint8_t) 4) 1345 1346 #define FXOS8700_PULSE_SRC_PLS_SRC_AXY_MASK ((uint8_t) 0x20) 1347 #define FXOS8700_PULSE_SRC_PLS_SRC_AXY_SHIFT ((uint8_t) 5) 1348 1349 #define FXOS8700_PULSE_SRC_PLS_SRC_AXZ_MASK ((uint8_t) 0x40) 1350 #define FXOS8700_PULSE_SRC_PLS_SRC_AXZ_SHIFT ((uint8_t) 6) 1351 1352 #define FXOS8700_PULSE_SRC_PLS_SRC_EA_MASK ((uint8_t) 0x80) 1353 #define FXOS8700_PULSE_SRC_PLS_SRC_EA_SHIFT ((uint8_t) 7) 1354 1355 1356 /*------------------------------*/ 1357 1358 1359 1360 /*-------------------------------- 1361 ** Register: PULSE_THSX 1362 ** Enum: FXOS8700_PULSE_THSX 1363 ** -- 1364 ** Offset : 0x23 - X-axis pulse threshold. 1365 ** ------------------------------*/ 1366 typedef union { 1367 struct { 1368 uint8_t pls_thsx : 7; 1369 } b; 1370 uint8_t w; 1371 } FXOS8700_PULSE_THSX_t; 1372 1373 1374 /* 1375 ** PULSE_THSX - Bit field mask definitions 1376 */ 1377 #define FXOS8700_PULSE_THSX_PLS_THSX_MASK ((uint8_t) 0x7F) 1378 #define FXOS8700_PULSE_THSX_PLS_THSX_SHIFT ((uint8_t) 0) 1379 1380 1381 /*------------------------------*/ 1382 1383 1384 1385 /*-------------------------------- 1386 ** Register: PULSE_THSY 1387 ** Enum: FXOS8700_PULSE_THSY 1388 ** -- 1389 ** Offset : 0x24 - Y-axis pulse threshold. 1390 ** ------------------------------*/ 1391 typedef union { 1392 struct { 1393 uint8_t pls_thsy : 7; 1394 } b; 1395 uint8_t w; 1396 } FXOS8700_PULSE_THSY_t; 1397 1398 1399 /* 1400 ** PULSE_THSY - Bit field mask definitions 1401 */ 1402 #define FXOS8700_PULSE_THSY_PLS_THSY_MASK ((uint8_t) 0x7F) 1403 #define FXOS8700_PULSE_THSY_PLS_THSY_SHIFT ((uint8_t) 0) 1404 1405 1406 /*------------------------------*/ 1407 1408 1409 1410 /*-------------------------------- 1411 ** Register: PULSE_THSZ 1412 ** Enum: FXOS8700_PULSE_THSZ 1413 ** -- 1414 ** Offset : 0x25 - Z-axis pulse threshold. 1415 ** ------------------------------*/ 1416 typedef union { 1417 struct { 1418 uint8_t pls_thsz : 7; 1419 } b; 1420 uint8_t w; 1421 } FXOS8700_PULSE_THSZ_t; 1422 1423 1424 /* 1425 ** PULSE_THSZ - Bit field mask definitions 1426 */ 1427 #define FXOS8700_PULSE_THSZ_PLS_THSZ_MASK ((uint8_t) 0x7F) 1428 #define FXOS8700_PULSE_THSZ_PLS_THSZ_SHIFT ((uint8_t) 0) 1429 1430 1431 /*------------------------------*/ 1432 1433 1434 1435 /*-------------------------------- 1436 ** Register: PULSE_TMLT 1437 ** Enum: FXOS8700_PULSE_TMLT 1438 ** -- 1439 ** Offset : 0x26 - Time limit for pulse detection. 1440 ** ------------------------------*/ 1441 typedef uint8_t FXOS8700_PULSE_TMLT_t; 1442 1443 1444 1445 /*-------------------------------- 1446 ** Register: PULSE_LTCY 1447 ** Enum: FXOS8700_PULSE_LTCY 1448 ** -- 1449 ** Offset : 0x27 - Latency time for second pulse detection. 1450 ** ------------------------------*/ 1451 typedef uint8_t FXOS8700_PULSE_LTCY_t; 1452 1453 1454 /*-------------------------------- 1455 ** Register: PULSE_WIND 1456 ** Enum: FXOS8700_PULSE_WIND 1457 ** -- 1458 ** Offset : 0x28 - Window time for second pulse detection. 1459 ** ------------------------------*/ 1460 typedef uint8_t FXOS8700_PULSE_WIND_t; 1461 1462 1463 1464 /*-------------------------------- 1465 ** Register: ASLP_COUNT 1466 ** Enum: FXOS8700_ASLP_COUNT 1467 ** -- 1468 ** Offset : 0x29 - The counter setting for auto-sleep period. 1469 ** ------------------------------*/ 1470 typedef uint8_t FXOS8700_ASLP_COUNT_t; 1471 1472 1473 1474 /*-------------------------------- 1475 ** Register: CTRL_REG1 1476 ** Enum: FXOS8700_CTRL_REG1 1477 ** -- 1478 ** Offset : 0x2A - System ODR, accelerometer OSR (Output sample rate), operating mode. 1479 ** ------------------------------*/ 1480 typedef union { 1481 struct { 1482 uint8_t active : 1; 1483 uint8_t f_read : 1; 1484 uint8_t lnoise : 1; 1485 uint8_t dr : 3; 1486 uint8_t aslp_rate : 2; 1487 } b; 1488 uint8_t w; 1489 } FXOS8700_CTRL_REG1_t; 1490 1491 1492 /* 1493 ** CTRL_REG1 - Bit field mask definitions 1494 */ 1495 #define FXOS8700_CTRL_REG1_ACTIVE_MASK ((uint8_t) 0x01) 1496 #define FXOS8700_CTRL_REG1_ACTIVE_SHIFT ((uint8_t) 0) 1497 1498 #define FXOS8700_CTRL_REG1_F_READ_MASK ((uint8_t) 0x02) 1499 #define FXOS8700_CTRL_REG1_F_READ_SHIFT ((uint8_t) 1) 1500 1501 #define FXOS8700_CTRL_REG1_LNOISE_MASK ((uint8_t) 0x04) 1502 #define FXOS8700_CTRL_REG1_LNOISE_SHIFT ((uint8_t) 2) 1503 1504 #define FXOS8700_CTRL_REG1_DR_MASK ((uint8_t) 0x38) 1505 #define FXOS8700_CTRL_REG1_DR_SHIFT ((uint8_t) 3) 1506 1507 #define FXOS8700_CTRL_REG1_ASLP_RATE_MASK ((uint8_t) 0xC0) 1508 #define FXOS8700_CTRL_REG1_ASLP_RATE_SHIFT ((uint8_t) 6) 1509 1510 1511 /* 1512 ** CTRL_REG1 - Bit field value definitions 1513 */ 1514 #define FXOS8700_CTRL_REG1_ASLP_RATE_50_HZ ((uint8_t) 0x00) 1515 #define FXOS8700_CTRL_REG1_ASLP_RATE_12P5_HZ ((uint8_t) 0x40) 1516 #define FXOS8700_CTRL_REG1_ASLP_RATE_6P25_HZ ((uint8_t) 0x80) 1517 #define FXOS8700_CTRL_REG1_ASLP_RATE_1P56_HZ ((uint8_t) 0xc0) 1518 #define FXOS8700_CTRL_REG1_DR_SINGLE_800_HZ ((uint8_t) 0x00) 1519 #define FXOS8700_CTRL_REG1_DR_SINGLE_400_HZ ((uint8_t) 0x08) 1520 #define FXOS8700_CTRL_REG1_DR_SINGLE_200_HZ ((uint8_t) 0x10) 1521 #define FXOS8700_CTRL_REG1_DR_SINGLE_100_HZ ((uint8_t) 0x18) 1522 #define FXOS8700_CTRL_REG1_DR_SINGLE_50_HZ ((uint8_t) 0x20) 1523 #define FXOS8700_CTRL_REG1_DR_SINGLE_12P5_HZ ((uint8_t) 0x28) 1524 #define FXOS8700_CTRL_REG1_DR_SINGLE_6P25_HZ ((uint8_t) 0x30) 1525 #define FXOS8700_CTRL_REG1_DR_SINGLE_1P5625_HZ ((uint8_t) 0x38) 1526 #define FXOS8700_CTRL_REG1_DR_HYBRID_400_HZ ((uint8_t) 0x00) 1527 #define FXOS8700_CTRL_REG1_DR_HYBRID_200_HZ ((uint8_t) 0x08) 1528 #define FXOS8700_CTRL_REG1_DR_HYBRID_100_HZ ((uint8_t) 0x10) 1529 #define FXOS8700_CTRL_REG1_DR_HYBRID_50_HZ ((uint8_t) 0x18) 1530 #define FXOS8700_CTRL_REG1_DR_HYBRID_25_HZ ((uint8_t) 0x20) 1531 #define FXOS8700_CTRL_REG1_DR_HYBRID_6P25_HZ ((uint8_t) 0x28) 1532 #define FXOS8700_CTRL_REG1_DR_HYBRID_3P125_HZ ((uint8_t) 0x30) 1533 #define FXOS8700_CTRL_REG1_DR_HYBRID_0P7813_HZ ((uint8_t) 0x38) 1534 #define FXOS8700_CTRL_REG1_LNOISE_NORMAL ((uint8_t) 0x00) /* Normal mode */ 1535 #define FXOS8700_CTRL_REG1_LNOISE_REDUCED_NOISE ((uint8_t) 0x04) /* Reduced noise mode; Note that the FSR setting is */ 1536 /* restricted to ±2 g or ±4 g mode. This feature */ 1537 /* cannot be used in ±8 g mode */ 1538 #define FXOS8700_CTRL_REG1_F_READ_NORMAL ((uint8_t) 0x00) /* Normal mode */ 1539 #define FXOS8700_CTRL_REG1_F_READ_FAST ((uint8_t) 0x02) /* Fast-read mode */ 1540 #define FXOS8700_CTRL_REG1_ACTIVE_ACTIVE_MODE ((uint8_t) 0x01) /* Active mode */ 1541 #define FXOS8700_CTRL_REG1_ACTIVE_STANDBY_MODE ((uint8_t) 0x00) /* Standby mode */ 1542 /*------------------------------*/ 1543 1544 1545 1546 /*-------------------------------- 1547 ** Register: CTRL_REG2 1548 ** Enum: FXOS8700_CTRL_REG2 1549 ** -- 1550 ** Offset : 0x2B - Self-test, reset, accelerometer OSR, and sleep mode settings. 1551 ** ------------------------------*/ 1552 typedef union { 1553 struct { 1554 uint8_t mods : 2; 1555 uint8_t slpe : 1; 1556 uint8_t smods : 2; 1557 uint8_t _reserved_ : 1; 1558 uint8_t rst : 1; 1559 uint8_t st : 1; 1560 } b; 1561 uint8_t w; 1562 } FXOS8700_CTRL_REG2_t; 1563 1564 1565 /* 1566 ** CTRL_REG2 - Bit field mask definitions 1567 */ 1568 #define FXOS8700_CTRL_REG2_MODS_MASK ((uint8_t) 0x03) 1569 #define FXOS8700_CTRL_REG2_MODS_SHIFT ((uint8_t) 0) 1570 1571 #define FXOS8700_CTRL_REG2_SLPE_MASK ((uint8_t) 0x04) 1572 #define FXOS8700_CTRL_REG2_SLPE_SHIFT ((uint8_t) 2) 1573 1574 #define FXOS8700_CTRL_REG2_SMODS_MASK ((uint8_t) 0x18) 1575 #define FXOS8700_CTRL_REG2_SMODS_SHIFT ((uint8_t) 3) 1576 1577 #define FXOS8700_CTRL_REG2_RST_MASK ((uint8_t) 0x40) 1578 #define FXOS8700_CTRL_REG2_RST_SHIFT ((uint8_t) 6) 1579 1580 #define FXOS8700_CTRL_REG2_ST_MASK ((uint8_t) 0x80) 1581 #define FXOS8700_CTRL_REG2_ST_SHIFT ((uint8_t) 7) 1582 1583 1584 /* 1585 ** CTRL_REG2 - Bit field value definitions 1586 */ 1587 #define FXOS8700_CTRL_REG2_ST_DIS ((uint8_t) 0x00) /* Self-test disabled */ 1588 #define FXOS8700_CTRL_REG2_ST_EN ((uint8_t) 0x80) /* Self-test enabled */ 1589 #define FXOS8700_CTRL_REG2_RST_EN ((uint8_t) 0x40) /* Device reset enabled */ 1590 #define FXOS8700_CTRL_REG2_RST_DIS ((uint8_t) 0x00) /* Device reset disabled */ 1591 #define FXOS8700_CTRL_REG2_SMODS_NORMAL ((uint8_t) 0x00) 1592 #define FXOS8700_CTRL_REG2_SMODS_LOW_NOISE_LOW_POWER ((uint8_t) 0x08) 1593 #define FXOS8700_CTRL_REG2_SMODS_HIGH_RES ((uint8_t) 0x10) 1594 #define FXOS8700_CTRL_REG2_SMODS_LOW_POWER ((uint8_t) 0x18) 1595 #define FXOS8700_CTRL_REG2_SLPE_EN ((uint8_t) 0x04) 1596 #define FXOS8700_CTRL_REG2_SLPE_DISABLE ((uint8_t) 0x00) 1597 #define FXOS8700_CTRL_REG2_MODS_NORMAL ((uint8_t) 0x00) 1598 #define FXOS8700_CTRL_REG2_MODS_LOW_NOISE_LOW_POWER ((uint8_t) 0x01) 1599 #define FXOS8700_CTRL_REG2_MODS_HIGH_RES ((uint8_t) 0x02) 1600 #define FXOS8700_CTRL_REG2_MODS_LOW_POWER ((uint8_t) 0x03) 1601 /*------------------------------*/ 1602 1603 1604 1605 /*-------------------------------- 1606 ** Register: CTRL_REG3 1607 ** Enum: FXOS8700_CTRL_REG3 1608 ** -- 1609 ** Offset : 0x2C - Sleep mode interrupt wake enable, interrupt polarity, push-pull/open drain configuration. 1610 ** ------------------------------*/ 1611 typedef union { 1612 struct { 1613 uint8_t pp_od : 1; 1614 uint8_t ipol : 1; 1615 uint8_t wake_a_vecm : 1; 1616 uint8_t wake_ffmt : 1; 1617 uint8_t wake_pulse : 1; 1618 uint8_t wake_lndprt : 1; 1619 uint8_t wake_trans : 1; 1620 uint8_t fifo_gate : 1; 1621 } b; 1622 uint8_t w; 1623 } FXOS8700_CTRL_REG3_t; 1624 1625 1626 /* 1627 ** CTRL_REG3 - Bit field mask definitions 1628 */ 1629 #define FXOS8700_CTRL_REG3_PP_OD_MASK ((uint8_t) 0x01) 1630 #define FXOS8700_CTRL_REG3_PP_OD_SHIFT ((uint8_t) 0) 1631 1632 #define FXOS8700_CTRL_REG3_IPOL_MASK ((uint8_t) 0x02) 1633 #define FXOS8700_CTRL_REG3_IPOL_SHIFT ((uint8_t) 1) 1634 1635 #define FXOS8700_CTRL_REG3_WAKE_A_VECM_MASK ((uint8_t) 0x04) 1636 #define FXOS8700_CTRL_REG3_WAKE_A_VECM_SHIFT ((uint8_t) 2) 1637 1638 #define FXOS8700_CTRL_REG3_WAKE_FFMT_MASK ((uint8_t) 0x08) 1639 #define FXOS8700_CTRL_REG3_WAKE_FFMT_SHIFT ((uint8_t) 3) 1640 1641 #define FXOS8700_CTRL_REG3_WAKE_PULSE_MASK ((uint8_t) 0x10) 1642 #define FXOS8700_CTRL_REG3_WAKE_PULSE_SHIFT ((uint8_t) 4) 1643 1644 #define FXOS8700_CTRL_REG3_WAKE_LNDPRT_MASK ((uint8_t) 0x20) 1645 #define FXOS8700_CTRL_REG3_WAKE_LNDPRT_SHIFT ((uint8_t) 5) 1646 1647 #define FXOS8700_CTRL_REG3_WAKE_TRANS_MASK ((uint8_t) 0x40) 1648 #define FXOS8700_CTRL_REG3_WAKE_TRANS_SHIFT ((uint8_t) 6) 1649 1650 #define FXOS8700_CTRL_REG3_FIFO_GATE_MASK ((uint8_t) 0x80) 1651 #define FXOS8700_CTRL_REG3_FIFO_GATE_SHIFT ((uint8_t) 7) 1652 1653 1654 /* 1655 ** CTRL_REG3 - Bit field value definitions 1656 */ 1657 #define FXOS8700_CTRL_REG3_FIFO_GATE_BYPASSED ((uint8_t) 0x00) /* FIFO gate is bypassed */ 1658 #define FXOS8700_CTRL_REG3_FIFO_GATE_BLOCKED ((uint8_t) 0x80) /* The FIFO input buffer is blocked from accepting */ 1659 /* new samples when transitioning from wake-to-sleep */ 1660 /* mode or from sleep-to-wake mode until the FIFO is */ 1661 /* flushed */ 1662 #define FXOS8700_CTRL_REG3_WAKE_TRANS_DIS ((uint8_t) 0x00) /* Transient function is disabled in sleep mode */ 1663 #define FXOS8700_CTRL_REG3_WAKE_TRANS_EN ((uint8_t) 0x40) /* Transient function is enabled in sleep mode and */ 1664 /* can generate an interrupt to wake the system */ 1665 #define FXOS8700_CTRL_REG3_WAKE_LNDPRT_DIS ((uint8_t) 0x00) /* Orientation function is disabled sleep mode */ 1666 #define FXOS8700_CTRL_REG3_WAKE_LNDPRT_EN ((uint8_t) 0x20) /* Orientation function is enabled in sleep mode and */ 1667 /* can generate an interrupt to wake the system */ 1668 #define FXOS8700_CTRL_REG3_WAKE_PULSE_DIS ((uint8_t) 0x00) /* Pulse function is disabled in sleep mode */ 1669 #define FXOS8700_CTRL_REG3_WAKE_PULSE_EN ((uint8_t) 0x10) /* Pulse function is enabled in sleep mode and can */ 1670 /* generate an interrupt to wake the system */ 1671 #define FXOS8700_CTRL_REG3_WAKE_FFMT_DIS ((uint8_t) 0x00) /* Freefall/motion function is disabled in sleep mode */ 1672 #define FXOS8700_CTRL_REG3_WAKE_FFMT_EN ((uint8_t) 0x08) /* Freefall/motion function is enabled in sleep mode */ 1673 /* and can generate an interrupt to wake the system */ 1674 #define FXOS8700_CTRL_REG3_WAKE_A_VECM_DIS ((uint8_t) 0x00) /* Acceleration vector-magnitude function is disabled */ 1675 /* in sleep mode */ 1676 #define FXOS8700_CTRL_REG3_WAKE_A_VECM_EN ((uint8_t) 0x04) /* Acceleration vector-magnitude function is enabled */ 1677 /* in sleep mode and can generate an interrupt to */ 1678 /* wake the system */ 1679 #define FXOS8700_CTRL_REG3_IPOL_ACTIVE_LOW ((uint8_t) 0x00) /* Active Low */ 1680 #define FXOS8700_CTRL_REG3_IPOL_ACTIVE_HIGH ((uint8_t) 0x02) /* Active High */ 1681 #define FXOS8700_CTRL_REG3_PP_OD_PUSH_PULL ((uint8_t) 0x00) /* Push-pull */ 1682 #define FXOS8700_CTRL_REG3_PP_OD_OPEN_DRAIN ((uint8_t) 0x01) /* Open Drain */ 1683 /*------------------------------*/ 1684 1685 1686 1687 /*-------------------------------- 1688 ** Register: CTRL_REG4 1689 ** Enum: FXOS8700_CTRL_REG4 1690 ** -- 1691 ** Offset : 0x2D - Interrupt enable register. 1692 ** ------------------------------*/ 1693 typedef union { 1694 struct { 1695 uint8_t int_en_drdy : 1; 1696 uint8_t int_en_a_vecm : 1; 1697 uint8_t int_en_ffmt : 1; 1698 uint8_t int_en_pulse : 1; 1699 uint8_t int_en_lndprt : 1; 1700 uint8_t int_en_trans : 1; 1701 uint8_t int_en_fifo : 1; 1702 uint8_t int_en_aslp : 1; 1703 } b; 1704 uint8_t w; 1705 } FXOS8700_CTRL_REG4_t; 1706 1707 1708 /* 1709 ** CTRL_REG4 - Bit field mask definitions 1710 */ 1711 #define FXOS8700_CTRL_REG4_INT_EN_DRDY_MASK ((uint8_t) 0x01) 1712 #define FXOS8700_CTRL_REG4_INT_EN_DRDY_SHIFT ((uint8_t) 0) 1713 1714 #define FXOS8700_CTRL_REG4_INT_EN_A_VECM_MASK ((uint8_t) 0x02) 1715 #define FXOS8700_CTRL_REG4_INT_EN_A_VECM_SHIFT ((uint8_t) 1) 1716 1717 #define FXOS8700_CTRL_REG4_INT_EN_FFMT_MASK ((uint8_t) 0x04) 1718 #define FXOS8700_CTRL_REG4_INT_EN_FFMT_SHIFT ((uint8_t) 2) 1719 1720 #define FXOS8700_CTRL_REG4_INT_EN_PULSE_MASK ((uint8_t) 0x08) 1721 #define FXOS8700_CTRL_REG4_INT_EN_PULSE_SHIFT ((uint8_t) 3) 1722 1723 #define FXOS8700_CTRL_REG4_INT_EN_LNDPRT_MASK ((uint8_t) 0x10) 1724 #define FXOS8700_CTRL_REG4_INT_EN_LNDPRT_SHIFT ((uint8_t) 4) 1725 1726 #define FXOS8700_CTRL_REG4_INT_EN_TRANS_MASK ((uint8_t) 0x20) 1727 #define FXOS8700_CTRL_REG4_INT_EN_TRANS_SHIFT ((uint8_t) 5) 1728 1729 #define FXOS8700_CTRL_REG4_INT_EN_FIFO_MASK ((uint8_t) 0x40) 1730 #define FXOS8700_CTRL_REG4_INT_EN_FIFO_SHIFT ((uint8_t) 6) 1731 1732 #define FXOS8700_CTRL_REG4_INT_EN_ASLP_MASK ((uint8_t) 0x80) 1733 #define FXOS8700_CTRL_REG4_INT_EN_ASLP_SHIFT ((uint8_t) 7) 1734 1735 1736 /* 1737 ** CTRL_REG4 - Bit field value definitions 1738 */ 1739 #define FXOS8700_CTRL_REG4_INT_EN_ASLP_DIS ((uint8_t) 0x00) /* Auto-sleep/wake interrupt disabled */ 1740 #define FXOS8700_CTRL_REG4_INT_EN_ASLP_EN ((uint8_t) 0x80) /* Auto-sleep/wake interrupt Enabled */ 1741 #define FXOS8700_CTRL_REG4_INT_EN_FIFO_DIS ((uint8_t) 0x00) /* FIFO interrupt disabled */ 1742 #define FXOS8700_CTRL_REG4_INT_EN_FIFO_EN ((uint8_t) 0x40) /* FIFO interrupt enabled */ 1743 #define FXOS8700_CTRL_REG4_INT_EN_TRANS_DIS ((uint8_t) 0x00) /* Transient interrupt disabled */ 1744 #define FXOS8700_CTRL_REG4_INT_EN_TRANS_EN ((uint8_t) 0x20) /* Transient interrupt enabled */ 1745 #define FXOS8700_CTRL_REG4_INT_EN_LNDPRT_DIS ((uint8_t) 0x00) /* Orientation (landscape/portrait) interrupt */ 1746 /* disabled */ 1747 #define FXOS8700_CTRL_REG4_INT_EN_LNDPRT_EN ((uint8_t) 0x10) /* Orientation (landscape/portrait) interrupt enabled */ 1748 #define FXOS8700_CTRL_REG4_INT_EN_PULSE_DIS ((uint8_t) 0x00) /* Pulse detection interrupt disabled */ 1749 #define FXOS8700_CTRL_REG4_INT_EN_PULSE_EN ((uint8_t) 0x08) /* Pulse detection interrupt enabled */ 1750 #define FXOS8700_CTRL_REG4_INT_EN_FFMT_DIS ((uint8_t) 0x00) /* Freefall/motion interrupt disabled */ 1751 #define FXOS8700_CTRL_REG4_INT_EN_FFMT_EN ((uint8_t) 0x04) /* Freefall/motion interrupt enabled */ 1752 #define FXOS8700_CTRL_REG4_INT_EN_A_VECM_DIS ((uint8_t) 0x00) /* Acceleration vector-magnitude interrupt disabled */ 1753 #define FXOS8700_CTRL_REG4_INT_EN_A_VECM_EN ((uint8_t) 0x02) /* Acceleration vector-magnitude interrupt disabled */ 1754 #define FXOS8700_CTRL_REG4_INT_EN_DRDY_DIS ((uint8_t) 0x00) /* Data-ready interrupt disabled */ 1755 #define FXOS8700_CTRL_REG4_INT_EN_DRDY_EN ((uint8_t) 0x01) /* Data-ready interrupt Enabled */ 1756 /*------------------------------*/ 1757 1758 1759 1760 /*-------------------------------- 1761 ** Register: CTRL_REG5 1762 ** Enum: FXOS8700_CTRL_REG5 1763 ** -- 1764 ** Offset : 0x2E - Interrupt pin (INT1/INT2) map. 1765 ** ------------------------------*/ 1766 typedef union { 1767 struct { 1768 uint8_t int_cfg_drdy : 1; 1769 uint8_t int_cfg_a_vecm : 1; 1770 uint8_t int_cfg_ffmt : 1; 1771 uint8_t int_cfg_pulse : 1; 1772 uint8_t int_cfg_lndprt : 1; 1773 uint8_t int_cfg_trans : 1; 1774 uint8_t int_cfg_fifo : 1; 1775 uint8_t int_cfg_aslp : 1; 1776 } b; 1777 uint8_t w; 1778 } FXOS8700_CTRL_REG5_t; 1779 1780 1781 /* 1782 ** CTRL_REG5 - Bit field mask definitions 1783 */ 1784 #define FXOS8700_CTRL_REG5_INT_CFG_DRDY_MASK ((uint8_t) 0x01) 1785 #define FXOS8700_CTRL_REG5_INT_CFG_DRDY_SHIFT ((uint8_t) 0) 1786 1787 #define FXOS8700_CTRL_REG5_INT_CFG_A_VECM_MASK ((uint8_t) 0x02) 1788 #define FXOS8700_CTRL_REG5_INT_CFG_A_VECM_SHIFT ((uint8_t) 1) 1789 1790 #define FXOS8700_CTRL_REG5_INT_CFG_FFMT_MASK ((uint8_t) 0x04) 1791 #define FXOS8700_CTRL_REG5_INT_CFG_FFMT_SHIFT ((uint8_t) 2) 1792 1793 #define FXOS8700_CTRL_REG5_INT_CFG_PULSE_MASK ((uint8_t) 0x08) 1794 #define FXOS8700_CTRL_REG5_INT_CFG_PULSE_SHIFT ((uint8_t) 3) 1795 1796 #define FXOS8700_CTRL_REG5_INT_CFG_LNDPRT_MASK ((uint8_t) 0x10) 1797 #define FXOS8700_CTRL_REG5_INT_CFG_LNDPRT_SHIFT ((uint8_t) 4) 1798 1799 #define FXOS8700_CTRL_REG5_INT_CFG_TRANS_MASK ((uint8_t) 0x20) 1800 #define FXOS8700_CTRL_REG5_INT_CFG_TRANS_SHIFT ((uint8_t) 5) 1801 1802 #define FXOS8700_CTRL_REG5_INT_CFG_FIFO_MASK ((uint8_t) 0x40) 1803 #define FXOS8700_CTRL_REG5_INT_CFG_FIFO_SHIFT ((uint8_t) 6) 1804 1805 #define FXOS8700_CTRL_REG5_INT_CFG_ASLP_MASK ((uint8_t) 0x80) 1806 #define FXOS8700_CTRL_REG5_INT_CFG_ASLP_SHIFT ((uint8_t) 7) 1807 1808 1809 /* 1810 ** CTRL_REG5 - Bit field value definitions 1811 */ 1812 #define FXOS8700_CTRL_REG5_INT_CFG_ASLP_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1813 #define FXOS8700_CTRL_REG5_INT_CFG_ASLP_INT1 ((uint8_t) 0x80) /* Interrupt is routed to INT1 pin */ 1814 #define FXOS8700_CTRL_REG5_INT_CFG_FIFO_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1815 #define FXOS8700_CTRL_REG5_INT_CFG_FIFO_INT1 ((uint8_t) 0x40) /* Interrupt is routed to INT1 pin */ 1816 #define FXOS8700_CTRL_REG5_INT_CFG_TRANS_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1817 #define FXOS8700_CTRL_REG5_INT_CFG_TRANS_INT1 ((uint8_t) 0x20) /* Interrupt is routed to INT1 pin */ 1818 #define FXOS8700_CTRL_REG5_INT_CFG_LNDPRT_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1819 #define FXOS8700_CTRL_REG5_INT_CFG_LNDPRT_INT1 ((uint8_t) 0x10) /* Interrupt is routed to INT1 pin */ 1820 #define FXOS8700_CTRL_REG5_INT_CFG_PULSE_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1821 #define FXOS8700_CTRL_REG5_INT_CFG_PULSE_INT1 ((uint8_t) 0x08) /* Interrupt is routed to INT1 pin */ 1822 #define FXOS8700_CTRL_REG5_INT_CFG_FFMT_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1823 #define FXOS8700_CTRL_REG5_INT_CFG_FFMT_INT1 ((uint8_t) 0x04) /* Interrupt is routed to INT1 pin */ 1824 #define FXOS8700_CTRL_REG5_INT_CFG_A_VECM_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1825 #define FXOS8700_CTRL_REG5_INT_CFG_A_VECM_INT1 ((uint8_t) 0x02) /* Interrupt is routed to INT1 pin */ 1826 #define FXOS8700_CTRL_REG5_INT_CFG_DRDY_INT2 ((uint8_t) 0x00) /* Interrupt is routed to INT2 pin */ 1827 #define FXOS8700_CTRL_REG5_INT_CFG_DRDY_INT1 ((uint8_t) 0x01) /* Interrupt is routed to INT1 pin */ 1828 /*------------------------------*/ 1829 1830 1831 1832 /*-------------------------------- 1833 ** Register: OFF_X 1834 ** Enum: FXOS8700_OFF_X 1835 ** -- 1836 ** Offset : 0x2F - X-axis accelerometer offset adjust. 1837 ** ------------------------------*/ 1838 typedef uint8_t FXOS8700_OFF_X_t; 1839 1840 1841 /*-------------------------------- 1842 ** Register: OFF_Y 1843 ** Enum: FXOS8700_OFF_Y 1844 ** -- 1845 ** Offset : 0x30 - Y-axis accelerometer offset adjust. 1846 ** ------------------------------*/ 1847 typedef uint8_t FXOS8700_OFF_Y_t; 1848 1849 1850 /*-------------------------------- 1851 ** Register: OFF_Z 1852 ** Enum: FXOS8700_OFF_Z 1853 ** -- 1854 ** Offset : 0x31 - Z-axis accelerometer offset adjust. 1855 ** ------------------------------*/ 1856 typedef uint8_t FXOS8700_OFF_Z_t; 1857 1858 1859 1860 /*-------------------------------- 1861 ** Register: M_DR_STATUS 1862 ** Enum: FXOS8700_M_DR_STATUS 1863 ** -- 1864 ** Offset : 0x32 - The magnetometer data ready status. 1865 ** ------------------------------*/ 1866 typedef union { 1867 struct { 1868 uint8_t xdr : 1; 1869 uint8_t ydr : 1; 1870 uint8_t zdr : 1; 1871 uint8_t zyxdr : 1; 1872 uint8_t xow : 1; 1873 uint8_t yow : 1; 1874 uint8_t zow : 1; 1875 uint8_t zyxow : 1; 1876 } b; 1877 uint8_t w; 1878 } FXOS8700_M_DR_STATUS_t; 1879 1880 1881 /* 1882 ** M_DR_STATUS - Bit field mask definitions 1883 */ 1884 #define FXOS8700_M_DR_STATUS_XDR_MASK ((uint8_t) 0x01) 1885 #define FXOS8700_M_DR_STATUS_XDR_SHIFT ((uint8_t) 0) 1886 1887 #define FXOS8700_M_DR_STATUS_YDR_MASK ((uint8_t) 0x02) 1888 #define FXOS8700_M_DR_STATUS_YDR_SHIFT ((uint8_t) 1) 1889 1890 #define FXOS8700_M_DR_STATUS_ZDR_MASK ((uint8_t) 0x04) 1891 #define FXOS8700_M_DR_STATUS_ZDR_SHIFT ((uint8_t) 2) 1892 1893 #define FXOS8700_M_DR_STATUS_ZYXDR_MASK ((uint8_t) 0x08) 1894 #define FXOS8700_M_DR_STATUS_ZYXDR_SHIFT ((uint8_t) 3) 1895 1896 #define FXOS8700_M_DR_STATUS_XOW_MASK ((uint8_t) 0x10) 1897 #define FXOS8700_M_DR_STATUS_XOW_SHIFT ((uint8_t) 4) 1898 1899 #define FXOS8700_M_DR_STATUS_YOW_MASK ((uint8_t) 0x20) 1900 #define FXOS8700_M_DR_STATUS_YOW_SHIFT ((uint8_t) 5) 1901 1902 #define FXOS8700_M_DR_STATUS_ZOW_MASK ((uint8_t) 0x40) 1903 #define FXOS8700_M_DR_STATUS_ZOW_SHIFT ((uint8_t) 6) 1904 1905 #define FXOS8700_M_DR_STATUS_ZYXOW_MASK ((uint8_t) 0x80) 1906 #define FXOS8700_M_DR_STATUS_ZYXOW_SHIFT ((uint8_t) 7) 1907 1908 1909 /*------------------------------*/ 1910 1911 1912 1913 /*-------------------------------- 1914 ** Register: M_OUT_X_MSB 1915 ** Enum: FXOS8700_M_OUT_X_MSB 1916 ** -- 1917 ** Offset : 0x33 - MSB of the 16-bit magnetometer data for X-axis. 1918 ** ------------------------------*/ 1919 typedef uint8_t FXOS8700_M_OUT_X_MSB_t; 1920 1921 1922 /*-------------------------------- 1923 ** Register: M_OUT_X_LSB 1924 ** Enum: FXOS8700_M_OUT_X_LSB 1925 ** -- 1926 ** Offset : 0x34 - LSB of the 16-bit magnetometer data for X-axis. 1927 ** ------------------------------*/ 1928 typedef uint8_t FXOS8700_M_OUT_X_LSB_t; 1929 1930 1931 /*-------------------------------- 1932 ** Register: M_OUT_Y_MSB 1933 ** Enum: FXOS8700_M_OUT_Y_MSB 1934 ** -- 1935 ** Offset : 0x35 - MSB of the 16-bit magnetometer data for Y-axis. 1936 ** ------------------------------*/ 1937 typedef uint8_t FXOS8700_M_OUT_Y_MSB_t; 1938 1939 1940 /*-------------------------------- 1941 ** Register: M_OUT_Y_LSB 1942 ** Enum: FXOS8700_M_OUT_Y_LSB 1943 ** -- 1944 ** Offset : 0x36 - LSB of the 16-bit magnetometer data for Y-axis. 1945 ** ------------------------------*/ 1946 typedef uint8_t FXOS8700_M_OUT_Y_LSB_t; 1947 1948 1949 /*-------------------------------- 1950 ** Register: M_OUT_Z_MSB 1951 ** Enum: FXOS8700_M_OUT_Z_MSB 1952 ** -- 1953 ** Offset : 0x37 - MSB of the 16-bit magnetometer data for Z-axis. 1954 ** ------------------------------*/ 1955 typedef uint8_t FXOS8700_M_OUT_Z_MSB_t; 1956 1957 1958 /*-------------------------------- 1959 ** Register: M_OUT_Z_LSB 1960 ** Enum: FXOS8700_M_OUT_Z_LSB 1961 ** -- 1962 ** Offset : 0x38 - LSB of the 16-bit magnetometer data for Z-axis. 1963 ** ------------------------------*/ 1964 typedef uint8_t FXOS8700_M_OUT_Z_LSB_t; 1965 1966 1967 1968 /*-------------------------------- 1969 ** Register: CMP_X_MSB 1970 ** Enum: FXOS8700_CMP_X_MSB 1971 ** -- 1972 ** Offset : 0x39 - Bits [13:8] of integrated X-axis acceleration data. 1973 ** ------------------------------*/ 1974 typedef union { 1975 struct { 1976 uint8_t cmp_x : 6; 1977 } b; 1978 uint8_t w; 1979 } FXOS8700_CMP_X_MSB_t; 1980 1981 1982 /* 1983 ** CMP_X_MSB - Bit field mask definitions 1984 */ 1985 #define FXOS8700_CMP_X_MSB_CMP_X_MASK ((uint8_t) 0x3F) 1986 #define FXOS8700_CMP_X_MSB_CMP_X_SHIFT ((uint8_t) 0) 1987 1988 1989 /*------------------------------*/ 1990 1991 1992 1993 /*-------------------------------- 1994 ** Register: CMP_X_LSB 1995 ** Enum: FXOS8700_CMP_X_LSB 1996 ** -- 1997 ** Offset : 0x3A - Bits [7:0] of integrated X-axis acceleration data. 1998 ** ------------------------------*/ 1999 typedef uint8_t FXOS8700_CMP_X_LSB_t; 2000 2001 2002 /*-------------------------------- 2003 ** Register: CMP_Y_MSB 2004 ** Enum: FXOS8700_CMP_Y_MSB 2005 ** -- 2006 ** Offset : 0x3B - Bits [13:8] of integrated Y-axis acceleration data. 2007 ** ------------------------------*/ 2008 typedef union { 2009 struct { 2010 uint8_t cmp_y : 6; 2011 } b; 2012 uint8_t w; 2013 } FXOS8700_CMP_Y_MSB_t; 2014 2015 2016 /* 2017 ** CMP_Y_MSB - Bit field mask definitions 2018 */ 2019 #define FXOS8700_CMP_Y_MSB_CMP_Y_MASK ((uint8_t) 0x3F) 2020 #define FXOS8700_CMP_Y_MSB_CMP_Y_SHIFT ((uint8_t) 0) 2021 2022 2023 /*------------------------------*/ 2024 2025 2026 2027 /*-------------------------------- 2028 ** Register: CMP_Y_LSB 2029 ** Enum: FXOS8700_CMP_Y_LSB 2030 ** -- 2031 ** Offset : 0x3C - Bits [7:0] of integrated Y-axis acceleration data. 2032 ** ------------------------------*/ 2033 typedef uint8_t FXOS8700_CMP_Y_LSB_t; 2034 2035 2036 /*-------------------------------- 2037 ** Register: CMP_Z_MSB 2038 ** Enum: FXOS8700_CMP_Z_MSB 2039 ** -- 2040 ** Offset : 0x3D - Bits [13:8] of integrated Z-axis acceleration data. 2041 ** ------------------------------*/ 2042 typedef union { 2043 struct { 2044 uint8_t cmp_z : 6; 2045 } b; 2046 uint8_t w; 2047 } FXOS8700_CMP_Z_MSB_t; 2048 2049 2050 /* 2051 ** CMP_Z_MSB - Bit field mask definitions 2052 */ 2053 #define FXOS8700_CMP_Z_MSB_CMP_Z_MASK ((uint8_t) 0x3F) 2054 #define FXOS8700_CMP_Z_MSB_CMP_Z_SHIFT ((uint8_t) 0) 2055 2056 2057 /*------------------------------*/ 2058 2059 2060 2061 /*-------------------------------- 2062 ** Register: CMP_Z_LSB 2063 ** Enum: FXOS8700_CMP_Z_LSB 2064 ** -- 2065 ** Offset : 0x3E - Bits [7:0] of integrated Z-axis acceleration data. 2066 ** ------------------------------*/ 2067 typedef uint8_t FXOS8700_CMP_Z_LSB_t; 2068 2069 2070 /*-------------------------------- 2071 ** Register: M_OFF_X_MSB 2072 ** Enum: FXOS8700_M_OFF_X_MSB 2073 ** -- 2074 ** Offset : 0x3F - MSB of magnetometer X-axis offset. 2075 ** ------------------------------*/ 2076 typedef uint8_t FXOS8700_M_OFF_X_MSB_t; 2077 2078 2079 /*-------------------------------- 2080 ** Register: M_OFF_X_LSB 2081 ** Enum: FXOS8700_M_OFF_X_LSB 2082 ** -- 2083 ** Offset : 0x40 - LSB of magnetometer X-axis offset. 2084 ** ------------------------------*/ 2085 typedef union { 2086 struct { 2087 uint8_t _reserved_ : 1; 2088 uint8_t m_off_x : 7; 2089 } b; 2090 uint8_t w; 2091 } FXOS8700_M_OFF_X_LSB_t; 2092 2093 2094 /* 2095 ** M_OFF_X_LSB - Bit field mask definitions 2096 */ 2097 #define FXOS8700_M_OFF_X_LSB_M_OFF_X_MASK ((uint8_t) 0xFE) 2098 #define FXOS8700_M_OFF_X_LSB_M_OFF_X_SHIFT ((uint8_t) 1) 2099 2100 2101 /*------------------------------*/ 2102 2103 2104 2105 /*-------------------------------- 2106 ** Register: M_OFF_Y_MSB 2107 ** Enum: FXOS8700_M_OFF_Y_MSB 2108 ** -- 2109 ** Offset : 0x41 - MSB of magnetometer Y-axis offset. 2110 ** ------------------------------*/ 2111 typedef uint8_t FXOS8700_M_OFF_Y_MSB_t; 2112 2113 2114 /*-------------------------------- 2115 ** Register: M_OFF_Y_LSB 2116 ** Enum: FXOS8700_M_OFF_Y_LSB 2117 ** -- 2118 ** Offset : 0x42 - LSB of magnetometer Y-axis offset. 2119 ** ------------------------------*/ 2120 typedef union { 2121 struct { 2122 uint8_t _reserved_ : 1; 2123 uint8_t m_off_y : 7; 2124 } b; 2125 uint8_t w; 2126 } FXOS8700_M_OFF_Y_LSB_t; 2127 2128 2129 /* 2130 ** M_OFF_Y_LSB - Bit field mask definitions 2131 */ 2132 #define FXOS8700_M_OFF_Y_LSB_M_OFF_Y_MASK ((uint8_t) 0xFE) 2133 #define FXOS8700_M_OFF_Y_LSB_M_OFF_Y_SHIFT ((uint8_t) 1) 2134 2135 2136 /*------------------------------*/ 2137 2138 2139 2140 /*-------------------------------- 2141 ** Register: M_OFF_Z_MSB 2142 ** Enum: FXOS8700_M_OFF_Z_MSB 2143 ** -- 2144 ** Offset : 0x43 - MSB of magnetometer Z-axis offset. 2145 ** ------------------------------*/ 2146 typedef uint8_t FXOS8700_M_OFF_Z_MSB_t; 2147 2148 2149 /*-------------------------------- 2150 ** Register: M_OFF_Z_LSB 2151 ** Enum: FXOS8700_M_OFF_Z_LSB 2152 ** -- 2153 ** Offset : 0x44 - LSB of magnetometer Z-axis offset. 2154 ** ------------------------------*/ 2155 typedef union { 2156 struct { 2157 uint8_t _reserved_ : 1; 2158 uint8_t m_off_z : 7; 2159 } b; 2160 uint8_t w; 2161 } FXOS8700_M_OFF_Z_LSB_t; 2162 2163 2164 /* 2165 ** M_OFF_Z_LSB - Bit field mask definitions 2166 */ 2167 #define FXOS8700_M_OFF_Z_LSB_M_OFF_Z_MASK ((uint8_t) 0xFE) 2168 #define FXOS8700_M_OFF_Z_LSB_M_OFF_Z_SHIFT ((uint8_t) 1) 2169 2170 2171 /*------------------------------*/ 2172 2173 2174 2175 /*-------------------------------- 2176 ** Register: MAX_X_MSB 2177 ** Enum: FXOS8700_MAX_X_MSB 2178 ** -- 2179 ** Offset : 0x45 - Magnetometer X-axis maximum value MSB. 2180 ** ------------------------------*/ 2181 typedef uint8_t FXOS8700_MAX_X_MSB_t; 2182 2183 2184 /*-------------------------------- 2185 ** Register: MAX_X_LSB 2186 ** Enum: FXOS8700_MAX_X_LSB 2187 ** -- 2188 ** Offset : 0x46 - Magnetometer X-axis maximum value LSB. 2189 ** ------------------------------*/ 2190 typedef uint8_t FXOS8700_MAX_X_LSB_t; 2191 2192 2193 /*-------------------------------- 2194 ** Register: MAX_Y_MSB 2195 ** Enum: FXOS8700_MAX_Y_MSB 2196 ** -- 2197 ** Offset : 0x47 - Magnetometer Y-axis maximum value MSB. 2198 ** ------------------------------*/ 2199 typedef uint8_t FXOS8700_MAX_Y_MSB_t; 2200 2201 2202 /*-------------------------------- 2203 ** Register: MAX_Y_LSB 2204 ** Enum: FXOS8700_MAX_Y_LSB 2205 ** -- 2206 ** Offset : 0x48 - Magnetometer Y-axis maximum value LSB. 2207 ** ------------------------------*/ 2208 typedef uint8_t FXOS8700_MAX_Y_LSB_t; 2209 2210 2211 /*-------------------------------- 2212 ** Register: MAX_Z_MSB 2213 ** Enum: FXOS8700_MAX_Z_MSB 2214 ** -- 2215 ** Offset : 0x49 - Magnetometer Z-axis maximum value MSB. 2216 ** ------------------------------*/ 2217 typedef uint8_t FXOS8700_MAX_Z_MSB_t; 2218 2219 2220 /*-------------------------------- 2221 ** Register: MAX_Z_LSB 2222 ** Enum: FXOS8700_MAX_Z_LSB 2223 ** -- 2224 ** Offset : 0x4A - Magnetometer Z-axis maximum value LSB. 2225 ** ------------------------------*/ 2226 typedef uint8_t FXOS8700_MAX_Z_LSB_t; 2227 2228 2229 /*-------------------------------- 2230 ** Register: MIN_X_MSB 2231 ** Enum: FXOS8700_MIN_X_MSB 2232 ** -- 2233 ** Offset : 0x4B - Magnetometer X-axis minimum value MSB. 2234 ** ------------------------------*/ 2235 typedef uint8_t FXOS8700_MIN_X_MSB_t; 2236 2237 2238 /*-------------------------------- 2239 ** Register: MIN_X_LSB 2240 ** Enum: FXOS8700_MIN_X_LSB 2241 ** -- 2242 ** Offset : 0x4C - Magnetometer X-axis minimum value LSB. 2243 ** ------------------------------*/ 2244 typedef uint8_t FXOS8700_MIN_X_LSB_t; 2245 2246 2247 /*-------------------------------- 2248 ** Register: MIN_Y_MSB 2249 ** Enum: FXOS8700_MIN_Y_MSB 2250 ** -- 2251 ** Offset : 0x4D - Magnetometer Y-axis minimum value MSB. 2252 ** ------------------------------*/ 2253 typedef uint8_t FXOS8700_MIN_Y_MSB_t; 2254 2255 2256 /*-------------------------------- 2257 ** Register: MIN_Y_LSB 2258 ** Enum: FXOS8700_MIN_Y_LSB 2259 ** -- 2260 ** Offset : 0x4E - Magnetometer Y-axis minimum value LSB. 2261 ** ------------------------------*/ 2262 typedef uint8_t FXOS8700_MIN_Y_LSB_t; 2263 2264 2265 /*-------------------------------- 2266 ** Register: MIN_Z_MSB 2267 ** Enum: FXOS8700_MIN_Z_MSB 2268 ** -- 2269 ** Offset : 0x4F - Magnetometer Z-axis minimum value MSB. 2270 ** ------------------------------*/ 2271 typedef uint8_t FXOS8700_MIN_Z_MSB_t; 2272 2273 2274 /*-------------------------------- 2275 ** Register: MIN_Z_LSB 2276 ** Enum: FXOS8700_MIN_Z_LSB 2277 ** -- 2278 ** Offset : 0x50 - Magnetometer Z-axis minimum value LSB. 2279 ** ------------------------------*/ 2280 typedef uint8_t FXOS8700_MIN_Z_LSB_t; 2281 2282 2283 2284 /*-------------------------------- 2285 ** Register: TEMP 2286 ** Enum: FXOS8700_TEMP 2287 ** -- 2288 ** Offset : 0x51 - Device temperature with a valid range of -128 to 127 degrees C. 2289 ** ------------------------------*/ 2290 typedef union { 2291 struct { 2292 uint8_t die_temperature; 2293 } b; 2294 uint8_t w; 2295 } FXOS8700_TEMP_t; 2296 2297 2298 /* 2299 ** TEMP - Bit field mask definitions 2300 */ 2301 #define FXOS8700_TEMP_DIE_TEMPERATURE_MASK ((uint8_t) 0xFF) 2302 #define FXOS8700_TEMP_DIE_TEMPERATURE_SHIFT ((uint8_t) 0) 2303 2304 2305 /*------------------------------*/ 2306 2307 2308 2309 /*-------------------------------- 2310 ** Register: M_THS_CFG 2311 ** Enum: FXOS8700_M_THS_CFG 2312 ** -- 2313 ** Offset : 0x52 - Magnetic threshold detection function configuration. 2314 ** ------------------------------*/ 2315 typedef union { 2316 struct { 2317 uint8_t m_ths_int_cfg : 1; 2318 uint8_t m_ths_int_en : 1; 2319 uint8_t m_ths_wake_en : 1; 2320 uint8_t m_ths_xefe : 1; 2321 uint8_t m_ths_yefe : 1; 2322 uint8_t m_ths_zefe : 1; 2323 uint8_t m_ths_oae : 1; 2324 uint8_t m_ths_ele : 1; 2325 } b; 2326 uint8_t w; 2327 } FXOS8700_M_THS_CFG_t; 2328 2329 2330 /* 2331 ** M_THS_CFG - Bit field mask definitions 2332 */ 2333 #define FXOS8700_M_THS_CFG_M_THS_INT_CFG_MASK ((uint8_t) 0x01) 2334 #define FXOS8700_M_THS_CFG_M_THS_INT_CFG_SHIFT ((uint8_t) 0) 2335 2336 #define FXOS8700_M_THS_CFG_M_THS_INT_EN_MASK ((uint8_t) 0x02) 2337 #define FXOS8700_M_THS_CFG_M_THS_INT_EN_SHIFT ((uint8_t) 1) 2338 2339 #define FXOS8700_M_THS_CFG_M_THS_WAKE_EN_MASK ((uint8_t) 0x04) 2340 #define FXOS8700_M_THS_CFG_M_THS_WAKE_EN_SHIFT ((uint8_t) 2) 2341 2342 #define FXOS8700_M_THS_CFG_M_THS_XEFE_MASK ((uint8_t) 0x08) 2343 #define FXOS8700_M_THS_CFG_M_THS_XEFE_SHIFT ((uint8_t) 3) 2344 2345 #define FXOS8700_M_THS_CFG_M_THS_YEFE_MASK ((uint8_t) 0x10) 2346 #define FXOS8700_M_THS_CFG_M_THS_YEFE_SHIFT ((uint8_t) 4) 2347 2348 #define FXOS8700_M_THS_CFG_M_THS_ZEFE_MASK ((uint8_t) 0x20) 2349 #define FXOS8700_M_THS_CFG_M_THS_ZEFE_SHIFT ((uint8_t) 5) 2350 2351 #define FXOS8700_M_THS_CFG_M_THS_OAE_MASK ((uint8_t) 0x40) 2352 #define FXOS8700_M_THS_CFG_M_THS_OAE_SHIFT ((uint8_t) 6) 2353 2354 #define FXOS8700_M_THS_CFG_M_THS_ELE_MASK ((uint8_t) 0x80) 2355 #define FXOS8700_M_THS_CFG_M_THS_ELE_SHIFT ((uint8_t) 7) 2356 2357 2358 /*------------------------------*/ 2359 2360 2361 2362 /*-------------------------------- 2363 ** Register: M_THS_SRC 2364 ** Enum: FXOS8700_M_THS_SRC 2365 ** -- 2366 ** Offset : 0x53 - Magnetic threshold event source register. 2367 ** ------------------------------*/ 2368 typedef union { 2369 struct { 2370 uint8_t m_ths_xhp : 1; 2371 uint8_t m_ths_xhe : 1; 2372 uint8_t m_ths_yhp : 1; 2373 uint8_t m_ths_yhe : 1; 2374 uint8_t m_ths_zhp : 1; 2375 uint8_t m_ths_zhe : 1; 2376 uint8_t _reserved_ : 1; 2377 uint8_t m_ths_ea : 1; 2378 } b; 2379 uint8_t w; 2380 } FXOS8700_M_THS_SRC_t; 2381 2382 2383 /* 2384 ** M_THS_SRC - Bit field mask definitions 2385 */ 2386 #define FXOS8700_M_THS_SRC_M_THS_XHP_MASK ((uint8_t) 0x01) 2387 #define FXOS8700_M_THS_SRC_M_THS_XHP_SHIFT ((uint8_t) 0) 2388 2389 #define FXOS8700_M_THS_SRC_M_THS_XHE_MASK ((uint8_t) 0x02) 2390 #define FXOS8700_M_THS_SRC_M_THS_XHE_SHIFT ((uint8_t) 1) 2391 2392 #define FXOS8700_M_THS_SRC_M_THS_YHP_MASK ((uint8_t) 0x04) 2393 #define FXOS8700_M_THS_SRC_M_THS_YHP_SHIFT ((uint8_t) 2) 2394 2395 #define FXOS8700_M_THS_SRC_M_THS_YHE_MASK ((uint8_t) 0x08) 2396 #define FXOS8700_M_THS_SRC_M_THS_YHE_SHIFT ((uint8_t) 3) 2397 2398 #define FXOS8700_M_THS_SRC_M_THS_ZHP_MASK ((uint8_t) 0x10) 2399 #define FXOS8700_M_THS_SRC_M_THS_ZHP_SHIFT ((uint8_t) 4) 2400 2401 #define FXOS8700_M_THS_SRC_M_THS_ZHE_MASK ((uint8_t) 0x20) 2402 #define FXOS8700_M_THS_SRC_M_THS_ZHE_SHIFT ((uint8_t) 5) 2403 2404 #define FXOS8700_M_THS_SRC_M_THS_EA_MASK ((uint8_t) 0x80) 2405 #define FXOS8700_M_THS_SRC_M_THS_EA_SHIFT ((uint8_t) 7) 2406 2407 2408 /*------------------------------*/ 2409 2410 2411 2412 /*-------------------------------- 2413 ** Register: M_THS_X_MSB 2414 ** Enum: FXOS8700_M_THS_X_MSB 2415 ** -- 2416 ** Offset : 0x54 - X-axis magnetic threshold MSB. 2417 ** ------------------------------*/ 2418 typedef union { 2419 struct { 2420 uint8_t m_ths_x : 7; 2421 } b; 2422 uint8_t w; 2423 } FXOS8700_M_THS_X_MSB_t; 2424 2425 2426 /* 2427 ** M_THS_X_MSB - Bit field mask definitions 2428 */ 2429 #define FXOS8700_M_THS_X_MSB_M_THS_X_MASK ((uint8_t) 0x7F) 2430 #define FXOS8700_M_THS_X_MSB_M_THS_X_SHIFT ((uint8_t) 0) 2431 2432 2433 /*------------------------------*/ 2434 2435 2436 2437 /*-------------------------------- 2438 ** Register: M_THS_X_LSB 2439 ** Enum: FXOS8700_M_THS_X_LSB 2440 ** -- 2441 ** Offset : 0x55 - X-axis magnetic threshold LSB. 2442 ** ------------------------------*/ 2443 typedef uint8_t FXOS8700_M_THS_X_LSB_t; 2444 2445 2446 /*-------------------------------- 2447 ** Register: M_THS_Y_MSB 2448 ** Enum: FXOS8700_M_THS_Y_MSB 2449 ** -- 2450 ** Offset : 0x56 - Y-axis magnetic threshold MSB. 2451 ** ------------------------------*/ 2452 typedef union { 2453 struct { 2454 uint8_t m_ths_y : 7; 2455 } b; 2456 uint8_t w; 2457 } FXOS8700_M_THS_Y_MSB_t; 2458 2459 2460 /* 2461 ** M_THS_Y_MSB - Bit field mask definitions 2462 */ 2463 #define FXOS8700_M_THS_Y_MSB_M_THS_Y_MASK ((uint8_t) 0x7F) 2464 #define FXOS8700_M_THS_Y_MSB_M_THS_Y_SHIFT ((uint8_t) 0) 2465 2466 2467 /*------------------------------*/ 2468 2469 2470 2471 /*-------------------------------- 2472 ** Register: M_THS_Y_LSB 2473 ** Enum: FXOS8700_M_THS_Y_LSB 2474 ** -- 2475 ** Offset : 0x57 - Y-axis magnetic threshold LSB. 2476 ** ------------------------------*/ 2477 typedef uint8_t FXOS8700_M_THS_Y_LSB_t; 2478 2479 2480 /*-------------------------------- 2481 ** Register: M_THS_Z_MSB 2482 ** Enum: FXOS8700_M_THS_Z_MSB 2483 ** -- 2484 ** Offset : 0x58 - Z-axis magnetic threshold MSB. 2485 ** ------------------------------*/ 2486 typedef union { 2487 struct { 2488 uint8_t m_ths_z : 7; 2489 } b; 2490 uint8_t w; 2491 } FXOS8700_M_THS_Z_MSB_t; 2492 2493 2494 /* 2495 ** M_THS_Z_MSB - Bit field mask definitions 2496 */ 2497 #define FXOS8700_M_THS_Z_MSB_M_THS_Z_MASK ((uint8_t) 0x7F) 2498 #define FXOS8700_M_THS_Z_MSB_M_THS_Z_SHIFT ((uint8_t) 0) 2499 2500 2501 /*------------------------------*/ 2502 2503 2504 2505 /*-------------------------------- 2506 ** Register: M_THS_Z_LSB 2507 ** Enum: FXOS8700_M_THS_Z_LSB 2508 ** -- 2509 ** Offset : 0x59 - Z-axis magnetic threshold LSB. 2510 ** ------------------------------*/ 2511 typedef uint8_t FXOS8700_M_THS_Z_LSB_t; 2512 2513 2514 /*-------------------------------- 2515 ** Register: M_THS_COUNT 2516 ** Enum: FXOS8700_M_THS_COUNT 2517 ** -- 2518 ** Offset : 0x5A - Magnetic threshold debounce counter. 2519 ** ------------------------------*/ 2520 typedef uint8_t FXOS8700_M_THS_COUNT_t; 2521 2522 2523 2524 /*-------------------------------- 2525 ** Register: M_CTRL_REG1 2526 ** Enum: FXOS8700_M_CTRL_REG1 2527 ** -- 2528 ** Offset : 0x5B - Control for magnetometer sensor functions. 2529 ** ------------------------------*/ 2530 typedef union { 2531 struct { 2532 uint8_t m_hms : 2; 2533 uint8_t m_os : 3; /* M-cell oversample ratio */ 2534 2535 uint8_t m_ost : 1; /* One-shot triggered magnetic measurement mode: */ 2536 2537 uint8_t m_rst : 1; 2538 uint8_t m_acal : 1; 2539 } b; 2540 uint8_t w; 2541 } FXOS8700_M_CTRL_REG1_t; 2542 2543 2544 /* 2545 ** M_CTRL_REG1 - Bit field mask definitions 2546 */ 2547 #define FXOS8700_M_CTRL_REG1_M_HMS_MASK ((uint8_t) 0x03) 2548 #define FXOS8700_M_CTRL_REG1_M_HMS_SHIFT ((uint8_t) 0) 2549 2550 #define FXOS8700_M_CTRL_REG1_M_OS_MASK ((uint8_t) 0x1C) 2551 #define FXOS8700_M_CTRL_REG1_M_OS_SHIFT ((uint8_t) 2) 2552 2553 #define FXOS8700_M_CTRL_REG1_M_OST_MASK ((uint8_t) 0x20) 2554 #define FXOS8700_M_CTRL_REG1_M_OST_SHIFT ((uint8_t) 5) 2555 2556 #define FXOS8700_M_CTRL_REG1_M_RST_MASK ((uint8_t) 0x40) 2557 #define FXOS8700_M_CTRL_REG1_M_RST_SHIFT ((uint8_t) 6) 2558 2559 #define FXOS8700_M_CTRL_REG1_M_ACAL_MASK ((uint8_t) 0x80) 2560 #define FXOS8700_M_CTRL_REG1_M_ACAL_SHIFT ((uint8_t) 7) 2561 2562 2563 /* 2564 ** M_CTRL_REG1 - Bit field value definitions 2565 */ 2566 #define FXOS8700_M_CTRL_REG1_M_ACAL_EN ((uint8_t) 0x80) /* Auto-calibration feature enabled */ 2567 #define FXOS8700_M_CTRL_REG1_M_ACAL_DISABLE ((uint8_t) 0x00) /* Auto-calibration feature disabled */ 2568 #define FXOS8700_M_CTRL_REG1_M_RST_EN ((uint8_t) 0x40) /* One-shot magnetic sensor reset enabled, hw */ 2569 /* cleared when complete */ 2570 #define FXOS8700_M_CTRL_REG1_M_RST_DISABLE ((uint8_t) 0x00) /* No magnetic sensor reset active */ 2571 #define FXOS8700_M_CTRL_REG1_M_OST_EN ((uint8_t) 0x20) /* If device is in Active mode no action is taken. */ 2572 /* If device is in Standby mode, take one set of */ 2573 /* magnetic measurements, clear this bit, and */ 2574 /* return to Standby mode. */ 2575 #define FXOS8700_M_CTRL_REG1_M_OST_DISABLE ((uint8_t) 0x00) /* No action taken, or one-shot measurement */ 2576 /* complete */ 2577 #define FXOS8700_M_CTRL_REG1_M_OS_OSR0 ((uint8_t) 0x00) /* 1.56=16, 6.25=4, 12.5=2, 50=2, 100=2, 200=2, */ 2578 /* 400=2, 800=2 */ 2579 #define FXOS8700_M_CTRL_REG1_M_OS_OSR1 ((uint8_t) 0x04) /* 1.56=16, 6.25=4, 12.5=2, 50=2, 100=2, 200=2, */ 2580 /* 400=2, 800=2 */ 2581 #define FXOS8700_M_CTRL_REG1_M_OS_OSR2 ((uint8_t) 0x08) /* 1.56=32, 6.25=8, 12.5=4, 50=2, 100=2, 200=2, */ 2582 /* 400=2, 800=2 */ 2583 #define FXOS8700_M_CTRL_REG1_M_OS_OSR3 ((uint8_t) 0x0c) /* 1.56=64, 6.25=16, 12.5=8, 50=2, 100=2, 200=2, */ 2584 /* 400=2, 800=2 */ 2585 #define FXOS8700_M_CTRL_REG1_M_OS_OSR4 ((uint8_t) 0x10) /* 1.56=128, 6.25=32, 12.5=16, 50=4, 100=2, 200=2, */ 2586 /* 400=2, 800=2 */ 2587 #define FXOS8700_M_CTRL_REG1_M_OS_OSR5 ((uint8_t) 0x14) /* 1.56=256, 6.25=64, 12.5=32, 50=8, 100=4, 200=2, */ 2588 /* 400=2, 800=2 */ 2589 #define FXOS8700_M_CTRL_REG1_M_OS_OSR6 ((uint8_t) 0x18) /* 1.56=512, 6.25=128, 12.5=64, 50=16, 100=8, */ 2590 /* 200=4, 400=2, 800=2 */ 2591 #define FXOS8700_M_CTRL_REG1_M_OS_OSR7 ((uint8_t) 0x1c) /* 1.56=1024, 6.25=256, 12.5=128, 50=32, 100=16, */ 2592 /* 200=8, 400=4, 800=2 */ 2593 #define FXOS8700_M_CTRL_REG1_M_HMS_ACCEL_ONLY ((uint8_t) 0x00) /* 0b00 = Only accelerometer sensor is active */ 2594 #define FXOS8700_M_CTRL_REG1_M_HMS_MAG_ONLY ((uint8_t) 0x01) /* 0b01 = Only magnetometer sensor is active */ 2595 #define FXOS8700_M_CTRL_REG1_M_HMS_HYBRID_MODE ((uint8_t) 0x03) /* 0b11 = Hybrid mode, both accelerometer and */ 2596 /* magnetometer sensors are active */ 2597 /*------------------------------*/ 2598 2599 2600 2601 /*-------------------------------- 2602 ** Register: M_CTRL_REG2 2603 ** Enum: FXOS8700_M_CTRL_REG2 2604 ** -- 2605 ** Offset : 0x5C - Control for magnetometer sensor functions. 2606 ** ------------------------------*/ 2607 typedef union { 2608 struct { 2609 uint8_t m_rst_cnt : 2; 2610 uint8_t m_maxmin_rst : 1; 2611 uint8_t m_maxmin_dis_ths : 1; 2612 uint8_t m_maxmin_dis : 1; 2613 uint8_t m_autoinc : 1; 2614 } b; 2615 uint8_t w; 2616 } FXOS8700_M_CTRL_REG2_t; 2617 2618 2619 /* 2620 ** M_CTRL_REG2 - Bit field mask definitions 2621 */ 2622 #define FXOS8700_M_CTRL_REG2_M_RST_CNT_MASK ((uint8_t) 0x03) 2623 #define FXOS8700_M_CTRL_REG2_M_RST_CNT_SHIFT ((uint8_t) 0) 2624 2625 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_RST_MASK ((uint8_t) 0x04) 2626 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_RST_SHIFT ((uint8_t) 2) 2627 2628 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_THS_MASK ((uint8_t) 0x08) 2629 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_THS_SHIFT ((uint8_t) 3) 2630 2631 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_MASK ((uint8_t) 0x10) 2632 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_SHIFT ((uint8_t) 4) 2633 2634 #define FXOS8700_M_CTRL_REG2_M_AUTOINC_MASK ((uint8_t) 0x20) 2635 #define FXOS8700_M_CTRL_REG2_M_AUTOINC_SHIFT ((uint8_t) 5) 2636 2637 2638 /* 2639 ** M_CTRL_REG2 - Bit field value definitions 2640 */ 2641 #define FXOS8700_M_CTRL_REG2_M_AUTOINC_HYBRID_MODE ((uint8_t) 0x20) /* With hyb_autoinc_mode = 1 and fast-read mode is */ 2642 /* disabled (CTRL_REG1 [f_read] = 0), the register */ 2643 /* address will automatically advance to register */ 2644 /* x33 (M_OUT_X_MSB) after reading register x06 */ 2645 /* (OUT_Z_LSB) in burst-read mode. */ 2646 /* For hyb_autoinc_mode = 1 and fast read mode */ 2647 /* enabled (CTRL_REG1[f_read = 1) the register */ 2648 /* address will automatically advance to register */ 2649 /* x33 (M_OUT_X_MSB) after reading register x05 */ 2650 /* (OUT_Z_MSB) during a burstread mode. Please */ 2651 /* refer to the register map auto-increment address */ 2652 /* column for further information. */ 2653 #define FXOS8700_M_CTRL_REG2_M_AUTOINC_ACCEL_ONLY_MODE ((uint8_t) 0x00) /* hyb_autoinc_mode = 0 */ 2654 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_DIS ((uint8_t) 0x00) /* Magnetic min/max detection function is enabled */ 2655 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_EN ((uint8_t) 0x10) /* Magnetic min/max detection function is disabled */ 2656 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_THS_DIS ((uint8_t) 0x00) /* No impact to magnetic min/max detection function */ 2657 /* on a magnetic threshold event */ 2658 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_DIS_THS_EN ((uint8_t) 0x08) /* Magnetic min/max detection function is disabled */ 2659 /* when magnetic threshold event is triggered */ 2660 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_RST_NO_SEQUENCE ((uint8_t) 0x00) /* No reset sequence is active */ 2661 #define FXOS8700_M_CTRL_REG2_M_MAXMIN_RST_SET ((uint8_t) 0x04) /* Setting this bit resets the MIN_X/Y/Z and */ 2662 /* MAX_X/Y/Z registers to 0x7FFF and 0x8000 */ 2663 #define FXOS8700_M_CTRL_REG2_M_RST_CNT_EVERY1 ((uint8_t) 0x00) /* Automatic magnetic reset at the beginning of */ 2664 /* each ODR cycle (default). */ 2665 #define FXOS8700_M_CTRL_REG2_M_RST_CNT_EVERY16 ((uint8_t) 0x01) /* Automatic magnetic reset every 16 ODR cycles */ 2666 #define FXOS8700_M_CTRL_REG2_M_RST_CNT_EVERY512 ((uint8_t) 0x02) /* Automatic magnetic reset every 512 ODR cycles */ 2667 #define FXOS8700_M_CTRL_REG2_M_RST_CNT_DISABLE ((uint8_t) 0x03) /* Automatic magnetic reset is disabled. Magnetic */ 2668 /* reset only occurs automatically on a transition */ 2669 /* from Standby to Active mode, or can be triggered */ 2670 /* manually by setting M_CTRL_REG1[m_rst] = 1 */ 2671 /*------------------------------*/ 2672 2673 2674 2675 2676 /*-------------------------------- 2677 ** Register: M_CTRL_REG3 2678 ** Enum: FXOS8700_M_CTRL_REG3 2679 ** -- 2680 ** Offset : 0x5D - Control for magnetometer sensor functions. 2681 ** ------------------------------*/ 2682 typedef union { 2683 struct { 2684 uint8_t m_st_xy : 2; 2685 uint8_t m_st_z : 1; 2686 uint8_t m_ths_xyz_update : 1; 2687 uint8_t m_aslp_os : 3; 2688 uint8_t m_raw : 1; 2689 } b; 2690 uint8_t w; 2691 } FXOS8700_M_CTRL_REG3_t; 2692 2693 2694 /* 2695 ** M_CTRL_REG3 - Bit field mask definitions 2696 */ 2697 #define FXOS8700_M_CTRL_REG3_M_ST_XY_MASK ((uint8_t) 0x03) 2698 #define FXOS8700_M_CTRL_REG3_M_ST_XY_SHIFT ((uint8_t) 0) 2699 2700 #define FXOS8700_M_CTRL_REG3_M_ST_Z_MASK ((uint8_t) 0x04) 2701 #define FXOS8700_M_CTRL_REG3_M_ST_Z_SHIFT ((uint8_t) 2) 2702 2703 #define FXOS8700_M_CTRL_REG3_M_THS_XYZ_UPDATE_MASK ((uint8_t) 0x08) 2704 #define FXOS8700_M_CTRL_REG3_M_THS_XYZ_UPDATE_SHIFT ((uint8_t) 3) 2705 2706 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_MASK ((uint8_t) 0x70) 2707 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_SHIFT ((uint8_t) 4) 2708 2709 #define FXOS8700_M_CTRL_REG3_M_RAW_MASK ((uint8_t) 0x80) 2710 #define FXOS8700_M_CTRL_REG3_M_RAW_SHIFT ((uint8_t) 7) 2711 2712 2713 /* 2714 ** M_CTRL_REG3 - Bit field value definitions 2715 */ 2716 #define FXOS8700_M_CTRL_REG3_M_RAW_EN ((uint8_t) 0x80) /* Values stored in the M_OFF_X/Y/Z registers are */ 2717 /* applied to the magnetic sample data */ 2718 #define FXOS8700_M_CTRL_REG3_M_RAW_DIS ((uint8_t) 0x00) /* Values stored in M_OFF_X/Y/Z are not applied to */ 2719 /* the magnetic sample data */ 2720 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_0 ((uint8_t) 0x00) /* OSR 0 look at table 203 */ 2721 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_1 ((uint8_t) 0x10) /* OSR 1 look at table 203 */ 2722 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_2 ((uint8_t) 0x20) /* OSR 2 look at table 203 */ 2723 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_3 ((uint8_t) 0x30) /* OSR 3 look at table 203 */ 2724 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_4 ((uint8_t) 0x40) /* OSR 4 look at table 203 */ 2725 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_5 ((uint8_t) 0x50) /* OSR 5 look at table 203 */ 2726 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_6 ((uint8_t) 0x60) /* OSR 6 look at table 203 */ 2727 #define FXOS8700_M_CTRL_REG3_M_ASLP_OS_OSR_7 ((uint8_t) 0x70) /* OSR look at table 203 */ 2728 #define FXOS8700_M_CTRL_REG3_M_THS_XYZ_UPDATE_EN ((uint8_t) 0x08) /* Only the reference value for the axis that */ 2729 /* triggered the detection event is updated */ 2730 #define FXOS8700_M_CTRL_REG3_M_THS_XYZ_UPDATE_DIS ((uint8_t) 0x00) /* X, Y and Z reference values are all updated when */ 2731 /* the function triggers on any of the X, Y, or Z */ 2732 /* axes */ 2733 /*------------------------------*/ 2734 2735 2736 2737 /*-------------------------------- 2738 ** Register: M_INT_SRC 2739 ** Enum: FXOS8700_M_INT_SRC 2740 ** -- 2741 ** Offset : 0x5E - Magnetometer interrupt source. 2742 ** ------------------------------*/ 2743 typedef union { 2744 struct { 2745 uint8_t src_m_drdy : 1; 2746 uint8_t src_m_vecm : 1; 2747 uint8_t src_m_ths : 1; 2748 } b; 2749 uint8_t w; 2750 } FXOS8700_M_INT_SRC_t; 2751 2752 2753 /* 2754 ** M_INT_SRC - Bit field mask definitions 2755 */ 2756 #define FXOS8700_M_INT_SRC_SRC_M_DRDY_MASK ((uint8_t) 0x01) 2757 #define FXOS8700_M_INT_SRC_SRC_M_DRDY_SHIFT ((uint8_t) 0) 2758 2759 #define FXOS8700_M_INT_SRC_SRC_M_VECM_MASK ((uint8_t) 0x02) 2760 #define FXOS8700_M_INT_SRC_SRC_M_VECM_SHIFT ((uint8_t) 1) 2761 2762 #define FXOS8700_M_INT_SRC_SRC_M_THS_MASK ((uint8_t) 0x04) 2763 #define FXOS8700_M_INT_SRC_SRC_M_THS_SHIFT ((uint8_t) 2) 2764 2765 2766 /*------------------------------*/ 2767 2768 2769 2770 /*-------------------------------- 2771 ** Register: A_VECM_CFG 2772 ** Enum: FXOS8700_A_VECM_CFG 2773 ** -- 2774 ** Offset : 0x5F - Acceleration vector magnitude configuration register. 2775 ** ------------------------------*/ 2776 typedef union { 2777 struct { 2778 uint8_t _reserved_ : 4; 2779 uint8_t a_vecm_updm : 1; 2780 uint8_t a_vecm_initm : 1; 2781 uint8_t a_vecm_ele : 1; 2782 uint8_t a_vecm_en : 1; 2783 } b; 2784 uint8_t w; 2785 } FXOS8700_A_VECM_CFG_t; 2786 2787 2788 /* 2789 ** A_VECM_CFG - Bit field mask definitions 2790 */ 2791 #define FXOS8700_A_VECM_CFG_A_VECM_UPDM_MASK ((uint8_t) 0x10) 2792 #define FXOS8700_A_VECM_CFG_A_VECM_UPDM_SHIFT ((uint8_t) 4) 2793 2794 #define FXOS8700_A_VECM_CFG_A_VECM_INITM_MASK ((uint8_t) 0x20) 2795 #define FXOS8700_A_VECM_CFG_A_VECM_INITM_SHIFT ((uint8_t) 5) 2796 2797 #define FXOS8700_A_VECM_CFG_A_VECM_ELE_MASK ((uint8_t) 0x40) 2798 #define FXOS8700_A_VECM_CFG_A_VECM_ELE_SHIFT ((uint8_t) 6) 2799 2800 #define FXOS8700_A_VECM_CFG_A_VECM_EN_MASK ((uint8_t) 0x80) 2801 #define FXOS8700_A_VECM_CFG_A_VECM_EN_SHIFT ((uint8_t) 7) 2802 2803 2804 /*------------------------------*/ 2805 2806 2807 2808 /*-------------------------------- 2809 ** Register: A_VECM_THS_MSB 2810 ** Enum: FXOS8700_A_VECM_THS_MSB 2811 ** -- 2812 ** Offset : 0x60 - Acceleration vector magnitude threshold MSB. 2813 ** ------------------------------*/ 2814 typedef union { 2815 struct { 2816 uint8_t a_vbecm_ths : 5; 2817 uint8_t _reserved_ : 2; 2818 uint8_t a_vbecm_dbcntm : 1; 2819 } b; 2820 uint8_t w; 2821 } FXOS8700_A_VECM_THS_MSB_t; 2822 2823 2824 /* 2825 ** A_VECM_THS_MSB - Bit field mask definitions 2826 */ 2827 #define FXOS8700_A_VECM_THS_MSB_A_VBECM_THS_MASK ((uint8_t) 0x1F) 2828 #define FXOS8700_A_VECM_THS_MSB_A_VBECM_THS_SHIFT ((uint8_t) 0) 2829 2830 #define FXOS8700_A_VECM_THS_MSB_A_VBECM_DBCNTM_MASK ((uint8_t) 0x80) 2831 #define FXOS8700_A_VECM_THS_MSB_A_VBECM_DBCNTM_SHIFT ((uint8_t) 7) 2832 2833 2834 /*------------------------------*/ 2835 2836 2837 2838 /*-------------------------------- 2839 ** Register: A_VECM_THS_LSB 2840 ** Enum: FXOS8700_A_VECM_THS_LSB 2841 ** -- 2842 ** Offset : 0x61 - Acceleration vector magnitude threshold LSB. 2843 ** ------------------------------*/ 2844 typedef uint8_t FXOS8700_A_VECM_THS_LSB_t; 2845 2846 2847 /*-------------------------------- 2848 ** Register: A_VECM_CNT 2849 ** Enum: FXOS8700_A_VECM_CNT 2850 ** -- 2851 ** Offset : 0x62 - Acceleration vector magnitude debounce count. 2852 ** ------------------------------*/ 2853 typedef uint8_t FXOS8700_A_VECM_CNT_t; 2854 2855 2856 2857 /*-------------------------------- 2858 ** Register: A_VECM_INITX_MSB 2859 ** Enum: FXOS8700_A_VECM_INITX_MSB 2860 ** -- 2861 ** Offset : 0x63 - Acceleration vector magnitude X-axis reference value MSB. 2862 ** ------------------------------*/ 2863 typedef union { 2864 struct { 2865 uint8_t a_vecm_initx : 6; 2866 } b; 2867 uint8_t w; 2868 } FXOS8700_A_VECM_INITX_MSB_t; 2869 2870 2871 /* 2872 ** A_VECM_INITX_MSB - Bit field mask definitions 2873 */ 2874 #define FXOS8700_A_VECM_INITX_MSB_A_VECM_INITX_MASK ((uint8_t) 0x3F) 2875 #define FXOS8700_A_VECM_INITX_MSB_A_VECM_INITX_SHIFT ((uint8_t) 0) 2876 2877 2878 /*------------------------------*/ 2879 2880 2881 2882 /*-------------------------------- 2883 ** Register: A_VECM_INITX_LSB 2884 ** Enum: FXOS8700_A_VECM_INITX_LSB 2885 ** -- 2886 ** Offset : 0x64 - Acceleration vector magnitude X-axis reference value LSB. 2887 ** ------------------------------*/ 2888 typedef uint8_t FXOS8700_A_VECM_INITX_LSB_t; 2889 2890 2891 /*-------------------------------- 2892 ** Register: A_VECM_INITY_MSB 2893 ** Enum: FXOS8700_A_VECM_INITY_MSB 2894 ** -- 2895 ** Offset : 0x65 - Acceleration vector magnitude Y-axis reference value MSB. 2896 ** ------------------------------*/ 2897 typedef union { 2898 struct { 2899 uint8_t a_vecm_inity : 6; 2900 } b; 2901 uint8_t w; 2902 } FXOS8700_A_VECM_INITY_MSB_t; 2903 2904 2905 /* 2906 ** A_VECM_INITY_MSB - Bit field mask definitions 2907 */ 2908 #define FXOS8700_A_VECM_INITY_MSB_A_VECM_INITY_MASK ((uint8_t) 0x3F) 2909 #define FXOS8700_A_VECM_INITY_MSB_A_VECM_INITY_SHIFT ((uint8_t) 0) 2910 2911 2912 /*------------------------------*/ 2913 2914 2915 2916 /*-------------------------------- 2917 ** Register: A_VECM_INITY_LSB 2918 ** Enum: FXOS8700_A_VECM_INITY_LSB 2919 ** -- 2920 ** Offset : 0x66 - Acceleration vector magnitude Y-axis reference value LSB. 2921 ** ------------------------------*/ 2922 typedef uint8_t FXOS8700_A_VECM_INITY_LSB_t; 2923 2924 2925 /*-------------------------------- 2926 ** Register: A_VECM_INITZ_MSB 2927 ** Enum: FXOS8700_A_VECM_INITZ_MSB 2928 ** -- 2929 ** Offset : 0x67 - Acceleration vector magnitude Z-axis reference value MSB. 2930 ** ------------------------------*/ 2931 typedef union { 2932 struct { 2933 uint8_t a_vecm_initz : 6; 2934 } b; 2935 uint8_t w; 2936 } FXOS8700_A_VECM_INITZ_MSB_t; 2937 2938 2939 /* 2940 ** A_VECM_INITZ_MSB - Bit field mask definitions 2941 */ 2942 #define FXOS8700_A_VECM_INITZ_MSB_A_VECM_INITZ_MASK ((uint8_t) 0x3F) 2943 #define FXOS8700_A_VECM_INITZ_MSB_A_VECM_INITZ_SHIFT ((uint8_t) 0) 2944 2945 2946 /*------------------------------*/ 2947 2948 2949 2950 /*-------------------------------- 2951 ** Register: A_VECM_INITZ_LSB 2952 ** Enum: FXOS8700_A_VECM_INITZ_LSB 2953 ** -- 2954 ** Offset : 0x68 - Acceleration vector magnitude Z-axis reference value LSB. 2955 ** ------------------------------*/ 2956 typedef uint8_t FXOS8700_A_VECM_INITZ_LSB_t; 2957 2958 2959 /*-------------------------------- 2960 ** Register: M_VECM_CFG 2961 ** Enum: FXOS8700_M_VECM_CFG 2962 ** -- 2963 ** Offset : 0x69 - Magnetic vector magnitude configuration register. 2964 ** ------------------------------*/ 2965 typedef union { 2966 struct { 2967 uint8_t m_vecm_init_cfg : 1; 2968 uint8_t m_vecm_int_en : 1; 2969 uint8_t m_vecm_wake_en : 1; 2970 uint8_t a_vecm_en : 1; 2971 uint8_t m_vecm_updm : 1; 2972 uint8_t m_vecm_initm : 1; 2973 uint8_t m_vecm_ele : 1; 2974 uint8_t reserved : 1; 2975 } b; 2976 uint8_t w; 2977 } FXOS8700_M_VECM_CFG_t; 2978 2979 2980 /* 2981 ** M_VECM_CFG - Bit field mask definitions 2982 */ 2983 #define FXOS8700_M_VECM_CFG_M_VECM_INIT_CFG_MASK ((uint8_t) 0x01) 2984 #define FXOS8700_M_VECM_CFG_M_VECM_INIT_CFG_SHIFT ((uint8_t) 0) 2985 2986 #define FXOS8700_M_VECM_CFG_M_VECM_INT_EN_MASK ((uint8_t) 0x02) 2987 #define FXOS8700_M_VECM_CFG_M_VECM_INT_EN_SHIFT ((uint8_t) 1) 2988 2989 #define FXOS8700_M_VECM_CFG_M_VECM_WAKE_EN_MASK ((uint8_t) 0x04) 2990 #define FXOS8700_M_VECM_CFG_M_VECM_WAKE_EN_SHIFT ((uint8_t) 2) 2991 2992 #define FXOS8700_M_VECM_CFG_A_VECM_EN_MASK ((uint8_t) 0x08) 2993 #define FXOS8700_M_VECM_CFG_A_VECM_EN_SHIFT ((uint8_t) 3) 2994 2995 #define FXOS8700_M_VECM_CFG_M_VECM_UPDM_MASK ((uint8_t) 0x10) 2996 #define FXOS8700_M_VECM_CFG_M_VECM_UPDM_SHIFT ((uint8_t) 4) 2997 2998 #define FXOS8700_M_VECM_CFG_M_VECM_INITM_MASK ((uint8_t) 0x20) 2999 #define FXOS8700_M_VECM_CFG_M_VECM_INITM_SHIFT ((uint8_t) 5) 3000 3001 #define FXOS8700_M_VECM_CFG_M_VECM_ELE_MASK ((uint8_t) 0x40) 3002 #define FXOS8700_M_VECM_CFG_M_VECM_ELE_SHIFT ((uint8_t) 6) 3003 3004 #define FXOS8700_M_VECM_CFG_RESERVED_MASK ((uint8_t) 0x80) 3005 #define FXOS8700_M_VECM_CFG_RESERVED_SHIFT ((uint8_t) 7) 3006 3007 3008 /* 3009 ** M_VECM_CFG - Bit field value definitions 3010 */ 3011 #define FXOS8700_M_VECM_CFG_M_VECM_ELE_DIS ((uint8_t) 0x00) /* Event latch disabled */ 3012 #define FXOS8700_M_VECM_CFG_M_VECM_ELE_EN ((uint8_t) 0x40) /* Event latch enabled */ 3013 #define FXOS8700_M_VECM_CFG_M_VECM_INITM_OUT ((uint8_t) 0x00) /* The ASIC uses the current magnetic output data as */ 3014 /* the initial reference values at the time the */ 3015 /* m_vecm_en bit is set */ 3016 #define FXOS8700_M_VECM_CFG_M_VECM_INITM_STORED ((uint8_t) 0x20) /* The ASIC uses the data stored in the */ 3017 /* M_VECM_X/Y/Z_INIT registers as the initial */ 3018 /* reference values at the time the m_vecm_en bit is */ 3019 /* set */ 3020 #define FXOS8700_M_VECM_CFG_M_VECM_UPDM_DIS ((uint8_t) 0x00) /* The function updates the reference values with */ 3021 /* the current X, Y, and Z magnetic data when the */ 3022 /* event is triggered */ 3023 #define FXOS8700_M_VECM_CFG_M_VECM_UPDM_EN ((uint8_t) 0x10) /* The function does not update the reference values */ 3024 /* when the event is triggered */ 3025 #define FXOS8700_M_VECM_CFG_A_VECM_EN_EN ((uint8_t) 0x00) /* Function is disabled */ 3026 #define FXOS8700_M_VECM_CFG_A_VECM_EN_DIS ((uint8_t) 0x08) /* Function is enabled */ 3027 #define FXOS8700_M_VECM_CFG_M_VECM_WAKE_EN_EN ((uint8_t) 0x00) /* The system excludes the src_m_vecm event flag */ 3028 /* when evaluating the auto-sleep function */ 3029 #define FXOS8700_M_VECM_CFG_M_VECM_WAKE_EN_DIS ((uint8_t) 0x04) /* The system includes the src_m_vecm event flag */ 3030 /* when evaluating the auto-sleep function */ 3031 #define FXOS8700_M_VECM_CFG_M_VECM_INT_EN_EN ((uint8_t) 0x00) /* Magnetic vector-magnitude interrupt is disabled */ 3032 #define FXOS8700_M_VECM_CFG_M_VECM_INT_EN_DIS ((uint8_t) 0x02) /* Magnetic vector-magnitude interrupt is enabled */ 3033 #define FXOS8700_M_VECM_CFG_M_VECM_INIT_CFG_INT2 ((uint8_t) 0x00) /* Magnetic vector-magnitude interrupt is output on */ 3034 /* INT2 pin */ 3035 #define FXOS8700_M_VECM_CFG_M_VECM_INIT_CFG_INT1 ((uint8_t) 0x01) /* Magnetic vector-magnitude interrupt is output on */ 3036 /* INT1 pin. */ 3037 #define FXOS8700_M_VECM_CFG_M_VECM_INIT_CFG_DIS ((uint8_t) 0x01) /* Function is enabled */ 3038 /*------------------------------*/ 3039 3040 3041 3042 /*-------------------------------- 3043 ** Register: M_VECM_THS_MSB 3044 ** Enum: FXOS8700_M_VECM_THS_MSB 3045 ** -- 3046 ** Offset : 0x6A - Magnetic vector magnitude threshold MSB. 3047 ** ------------------------------*/ 3048 typedef union { 3049 struct { 3050 uint8_t m_vecm_ths : 7; 3051 } b; 3052 uint8_t w; 3053 } FXOS8700_M_VECM_THS_MSB_t; 3054 3055 3056 /* 3057 ** M_VECM_THS_MSB - Bit field mask definitions 3058 */ 3059 #define FXOS8700_M_VECM_THS_MSB_M_VECM_THS_MASK ((uint8_t) 0x7F) 3060 #define FXOS8700_M_VECM_THS_MSB_M_VECM_THS_SHIFT ((uint8_t) 0) 3061 3062 3063 /*------------------------------*/ 3064 3065 3066 3067 /*-------------------------------- 3068 ** Register: M_VECM_THS_LSB 3069 ** Enum: FXOS8700_M_VECM_THS_LSB 3070 ** -- 3071 ** Offset : 0x6B - Magnetic vector magnitude threshold LSB. 3072 ** ------------------------------*/ 3073 typedef uint8_t FXOS8700_M_VECM_THS_LSB_t; 3074 3075 3076 /*-------------------------------- 3077 ** Register: M_VECM_CNT 3078 ** Enum: FXOS8700_M_VECM_CNT 3079 ** -- 3080 ** Offset : 0x6C - Magnetic vector magnitude debounce count. 3081 ** ------------------------------*/ 3082 typedef uint8_t FXOS8700_M_VECM_CNT_t; 3083 3084 3085 /*-------------------------------- 3086 ** Register: M_VECM_INITX_MSB 3087 ** Enum: FXOS8700_M_VECM_INITX_MSB 3088 ** -- 3089 ** Offset : 0x6D - Magnetic vector magnitude X-axis reference value MSB. 3090 ** ------------------------------*/ 3091 typedef uint8_t FXOS8700_M_VECM_INITX_MSB_t; 3092 3093 3094 /*-------------------------------- 3095 ** Register: M_VECM_INITX_LSB 3096 ** Enum: FXOS8700_M_VECM_INITX_LSB 3097 ** -- 3098 ** Offset : 0x6E - Magnetic vector magnitude X-axis reference value LSB. 3099 ** ------------------------------*/ 3100 typedef uint8_t FXOS8700_M_VECM_INITX_LSB_t; 3101 3102 3103 /*-------------------------------- 3104 ** Register: M_VECM_INITY_MSB 3105 ** Enum: FXOS8700_M_VECM_INITY_MSB 3106 ** -- 3107 ** Offset : 0x6F - Magnetic vector magnitude Y-axis reference value MSB. 3108 ** ------------------------------*/ 3109 typedef uint8_t FXOS8700_M_VECM_INITY_MSB_t; 3110 3111 3112 /*-------------------------------- 3113 ** Register: M_VECM_INITY_LSB 3114 ** Enum: FXOS8700_M_VECM_INITY_LSB 3115 ** -- 3116 ** Offset : 0x70 - Magnetic vector magnitude Y-axis reference value LSB. 3117 ** ------------------------------*/ 3118 typedef uint8_t FXOS8700_M_VECM_INITY_LSB_t; 3119 3120 3121 /*-------------------------------- 3122 ** Register: M_VECM_INITZ_MSB 3123 ** Enum: FXOS8700_M_VECM_INITZ_MSB 3124 ** -- 3125 ** Offset : 0x71 - Magnetic vector magnitude Z-axis reference value MSB. 3126 ** ------------------------------*/ 3127 typedef uint8_t FXOS8700_M_VECM_INITZ_MSB_t; 3128 3129 3130 /*-------------------------------- 3131 ** Register: M_VECM_INITZ_LSB 3132 ** Enum: FXOS8700_M_VECM_INITZ_LSB 3133 ** -- 3134 ** Offset : 0x72 - Magnetic vector magnitude Z-axis reference value LSB. 3135 ** ------------------------------*/ 3136 typedef uint8_t FXOS8700_M_VECM_INITZ_LSB_t; 3137 3138 3139 /*-------------------------------- 3140 ** Register: A_FFMT_THS_X_MSB 3141 ** Enum: FXOS8700_A_FFMT_THS_X_MSB 3142 ** -- 3143 ** Offset : 0x73 - X-axis FFMT threshold MSB. 3144 ** ------------------------------*/ 3145 typedef uint8_t FXOS8700_A_FFMT_THS_X_MSB_t; 3146 3147 3148 3149 /*-------------------------------- 3150 ** Register: A_FFMT_THS_X_LSB 3151 ** Enum: FXOS8700_A_FFMT_THS_X_LSB 3152 ** -- 3153 ** Offset : 0x74 - X-axis FFMT threshold LSB. 3154 ** ------------------------------*/ 3155 typedef union { 3156 struct { 3157 uint8_t a_ffmt_ths_x : 7; 3158 } b; 3159 uint8_t w; 3160 } FXOS8700_A_FFMT_THS_X_LSB_t; 3161 3162 3163 /* 3164 ** A_FFMT_THS_X_LSB - Bit field mask definitions 3165 */ 3166 #define FXOS8700_A_FFMT_THS_X_LSB_A_FFMT_THS_X_MASK ((uint8_t) 0x7F) 3167 #define FXOS8700_A_FFMT_THS_X_LSB_A_FFMT_THS_X_SHIFT ((uint8_t) 0) 3168 3169 3170 /*------------------------------*/ 3171 3172 3173 3174 /*-------------------------------- 3175 ** Register: A_FFMT_THS_Y_MSB 3176 ** Enum: FXOS8700_A_FFMT_THS_Y_MSB 3177 ** -- 3178 ** Offset : 0x75 - Y-axis FFMT threshold MSB. 3179 ** ------------------------------*/ 3180 typedef uint8_t FXOS8700_A_FFMT_THS_Y_MSB_t; 3181 3182 3183 /*-------------------------------- 3184 ** Register: A_FFMT_THS_Y_LSB 3185 ** Enum: FXOS8700_A_FFMT_THS_Y_LSB 3186 ** -- 3187 ** Offset : 0x76 - Y-axis FFMT threshold LSB. 3188 ** ------------------------------*/ 3189 typedef union { 3190 struct { 3191 uint8_t a_ffmt_ths_y : 7; 3192 } b; 3193 uint8_t w; 3194 } FXOS8700_A_FFMT_THS_Y_LSB_t; 3195 3196 3197 /* 3198 ** A_FFMT_THS_Y_LSB - Bit field mask definitions 3199 */ 3200 #define FXOS8700_A_FFMT_THS_Y_LSB_A_FFMT_THS_Y_MASK ((uint8_t) 0x7F) 3201 #define FXOS8700_A_FFMT_THS_Y_LSB_A_FFMT_THS_Y_SHIFT ((uint8_t) 0) 3202 3203 3204 /*------------------------------*/ 3205 3206 3207 3208 /*-------------------------------- 3209 ** Register: A_FFMT_THS_Z_MSB 3210 ** Enum: FXOS8700_A_FFMT_THS_Z_MSB 3211 ** -- 3212 ** Offset : 0x77 - Z-axis FFMT threshold MSB. 3213 ** ------------------------------*/ 3214 typedef uint8_t FXOS8700_A_FFMT_THS_Z_MSB_t; 3215 3216 3217 /*-------------------------------- 3218 ** Register: A_FFMT_THS_Z_LSB 3219 ** Enum: FXOS8700_A_FFMT_THS_Z_LSB 3220 ** -- 3221 ** Offset : 0x78 - Z-axis FFMT threshold LSB. 3222 ** ------------------------------*/ 3223 typedef union { 3224 struct { 3225 uint8_t a_ffmt_ths_z : 7; 3226 } b; 3227 uint8_t w; 3228 } FXOS8700_A_FFMT_THS_Z_LSB_t; 3229 3230 3231 /* 3232 ** A_FFMT_THS_Z_LSB - Bit field mask definitions 3233 */ 3234 #define FXOS8700_A_FFMT_THS_Z_LSB_A_FFMT_THS_Z_MASK ((uint8_t) 0x7F) 3235 #define FXOS8700_A_FFMT_THS_Z_LSB_A_FFMT_THS_Z_SHIFT ((uint8_t) 0) 3236 3237 3238 /*------------------------------*/ 3239 3240 3241 #endif /* FXOS8700_H_ */ 3242 3243 // STATUS : 0x00 3244