Ultra-compact high-performance eCompass module: ultra-low power 3D accelerometer and 3D magnetometer.
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Dependents: HelloWorld_ST_Sensors MOTENV_Mbed mbed-os-mqtt-client LSM303AGR_JS ... more
LSM303AGR_mag_driver.h
00001 /** 00002 ****************************************************************************** 00003 * @file LSM303AGR_mag_driver.h 00004 * @author MEMS Application Team 00005 * @version V1.1 00006 * @date 25-February-2016 00007 * @brief LSM303AGR Magnetometer header driver file 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> 00012 * 00013 * Redistribution and use in source and binary forms, with or without modification, 00014 * are permitted provided that the following conditions are met: 00015 * 1. Redistributions of source code must retain the above copyright notice, 00016 * this list of conditions and the following disclaimer. 00017 * 2. Redistributions in binary form must reproduce the above copyright notice, 00018 * this list of conditions and the following disclaimer in the documentation 00019 * and/or other materials provided with the distribution. 00020 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00021 * may be used to endorse or promote products derived from this software 00022 * without specific prior written permission. 00023 * 00024 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00025 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00026 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00027 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00028 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00029 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00030 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00031 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00032 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00033 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00034 * 00035 ****************************************************************************** 00036 */ 00037 00038 /* Define to prevent recursive inclusion -------------------------------------*/ 00039 #ifndef __LSM303AGR_MAG_DRIVER__H 00040 #define __LSM303AGR_MAG_DRIVER__H 00041 00042 /* Includes ------------------------------------------------------------------*/ 00043 #include <stdint.h> 00044 00045 /* Exported types ------------------------------------------------------------*/ 00046 00047 #ifdef __cplusplus 00048 extern "C" { 00049 #endif 00050 00051 //these could change accordingly with the architecture 00052 00053 #ifndef __ARCHDEP__TYPES 00054 #define __ARCHDEP__TYPES 00055 00056 typedef unsigned char u8_t; 00057 typedef unsigned short int u16_t; 00058 typedef unsigned int u32_t; 00059 typedef int i32_t; 00060 typedef short int i16_t; 00061 typedef signed char i8_t; 00062 00063 #endif /*__ARCHDEP__TYPES*/ 00064 00065 /* Exported common structure --------------------------------------------------------*/ 00066 00067 #ifndef __SHARED__TYPES 00068 #define __SHARED__TYPES 00069 00070 typedef union{ 00071 i16_t i16bit[3]; 00072 u8_t u8bit[6]; 00073 } Type3Axis16bit_U; 00074 00075 typedef union{ 00076 i16_t i16bit; 00077 u8_t u8bit[2]; 00078 } Type1Axis16bit_U; 00079 00080 typedef union{ 00081 i32_t i32bit; 00082 u8_t u8bit[4]; 00083 } Type1Axis32bit_U; 00084 00085 typedef enum { 00086 MEMS_SUCCESS = 0x01, 00087 MEMS_ERROR = 0x00 00088 } mems_status_t; 00089 00090 #endif /*__SHARED__TYPES*/ 00091 00092 /* Exported macro ------------------------------------------------------------*/ 00093 00094 /* Exported constants --------------------------------------------------------*/ 00095 00096 /************** I2C Address *****************/ 00097 00098 #define LSM303AGR_MAG_I2C_ADDRESS 0x3C 00099 00100 /************** Who am I *******************/ 00101 00102 #define LSM303AGR_MAG_WHO_AM_I 0x40 00103 00104 /* Private Function Prototype -------------------------------------------------------*/ 00105 00106 void LSM303AGR_MAG_SwapHighLowByte(u8_t *bufferToSwap, u8_t numberOfByte, u8_t dimension); 00107 00108 /* Public Function Prototypes -------------------------------------------------------*/ 00109 00110 mems_status_t LSM303AGR_MAG_read_reg( void *handle, u8_t Reg, u8_t* Data ); 00111 mems_status_t LSM303AGR_MAG_write_reg( void *handle, u8_t Reg, u8_t Data ); 00112 00113 00114 /************** Device Register *******************/ 00115 #define LSM303AGR_MAG_OFFSET_X_REG_L 0X45 00116 #define LSM303AGR_MAG_OFFSET_X_REG_H 0X46 00117 #define LSM303AGR_MAG_OFFSET_Y_REG_L 0X47 00118 #define LSM303AGR_MAG_OFFSET_Y_REG_H 0X48 00119 #define LSM303AGR_MAG_OFFSET_Z_REG_L 0X49 00120 #define LSM303AGR_MAG_OFFSET_Z_REG_H 0X4A 00121 #define LSM303AGR_MAG_WHO_AM_I_REG 0X4F 00122 #define LSM303AGR_MAG_CFG_REG_A 0X60 00123 #define LSM303AGR_MAG_CFG_REG_B 0X61 00124 #define LSM303AGR_MAG_CFG_REG_C 0X62 00125 #define LSM303AGR_MAG_INT_CTRL_REG 0X63 00126 #define LSM303AGR_MAG_INT_SOURCE_REG 0X64 00127 #define LSM303AGR_MAG_INT_THS_L_REG 0X65 00128 #define LSM303AGR_MAG_INT_THS_H_REG 0X66 00129 #define LSM303AGR_MAG_STATUS_REG 0X67 00130 #define LSM303AGR_MAG_OUTX_L_REG 0X68 00131 #define LSM303AGR_MAG_OUTX_H_REG 0X69 00132 #define LSM303AGR_MAG_OUTY_L_REG 0X6A 00133 #define LSM303AGR_MAG_OUTY_H_REG 0X6B 00134 #define LSM303AGR_MAG_OUTZ_L_REG 0X6C 00135 #define LSM303AGR_MAG_OUTZ_H_REG 0X6D 00136 00137 /******************************************************************************* 00138 * Register : OFFSET_X_REG_L 00139 * Address : 0X45 00140 * Bit Group Name: OFF_X_L 00141 * Permission : RW 00142 *******************************************************************************/ 00143 #define LSM303AGR_MAG_OFF_X_L_MASK 0xFF 00144 #define LSM303AGR_MAG_OFF_X_L_POSITION 0 00145 mems_status_t LSM303AGR_MAG_W_OFF_X_L(void *handle, u8_t newValue); 00146 mems_status_t LSM303AGR_MAG_R_OFF_X_L(void *handle, u8_t *value); 00147 00148 /******************************************************************************* 00149 * Register : OFFSET_X_REG_H 00150 * Address : 0X46 00151 * Bit Group Name: OFF_X_H 00152 * Permission : RW 00153 *******************************************************************************/ 00154 #define LSM303AGR_MAG_OFF_X_H_MASK 0xFF 00155 #define LSM303AGR_MAG_OFF_X_H_POSITION 0 00156 mems_status_t LSM303AGR_MAG_W_OFF_X_H(void *handle, u8_t newValue); 00157 mems_status_t LSM303AGR_MAG_R_OFF_X_H(void *handle, u8_t *value); 00158 00159 /******************************************************************************* 00160 * Register : OFFSET_Y_REG_L 00161 * Address : 0X47 00162 * Bit Group Name: OFF_Y_L 00163 * Permission : RW 00164 *******************************************************************************/ 00165 #define LSM303AGR_MAG_OFF_Y_L_MASK 0xFF 00166 #define LSM303AGR_MAG_OFF_Y_L_POSITION 0 00167 mems_status_t LSM303AGR_MAG_W_OFF_Y_L(void *handle, u8_t newValue); 00168 mems_status_t LSM303AGR_MAG_R_OFF_Y_L(void *handle, u8_t *value); 00169 00170 /******************************************************************************* 00171 * Register : OFFSET_Y_REG_H 00172 * Address : 0X48 00173 * Bit Group Name: OFF_Y_H 00174 * Permission : RW 00175 *******************************************************************************/ 00176 #define LSM303AGR_MAG_OFF_Y_H_MASK 0xFF 00177 #define LSM303AGR_MAG_OFF_Y_H_POSITION 0 00178 mems_status_t LSM303AGR_MAG_W_OFF_Y_H(void *handle, u8_t newValue); 00179 mems_status_t LSM303AGR_MAG_R_OFF_Y_H(void *handle, u8_t *value); 00180 00181 /******************************************************************************* 00182 * Register : OFFSET_Z_REG_L 00183 * Address : 0X49 00184 * Bit Group Name: OFF_Z_L 00185 * Permission : RW 00186 *******************************************************************************/ 00187 #define LSM303AGR_MAG_OFF_Z_L_MASK 0xFF 00188 #define LSM303AGR_MAG_OFF_Z_L_POSITION 0 00189 mems_status_t LSM303AGR_MAG_W_OFF_Z_L(void *handle, u8_t newValue); 00190 mems_status_t LSM303AGR_MAG_R_OFF_Z_L(void *handle, u8_t *value); 00191 00192 /******************************************************************************* 00193 * Register : OFFSET_Z_REG_H 00194 * Address : 0X4A 00195 * Bit Group Name: OFF_Z_H 00196 * Permission : RW 00197 *******************************************************************************/ 00198 #define LSM303AGR_MAG_OFF_Z_H_MASK 0xFF 00199 #define LSM303AGR_MAG_OFF_Z_H_POSITION 0 00200 mems_status_t LSM303AGR_MAG_W_OFF_Z_H(void *handle, u8_t newValue); 00201 mems_status_t LSM303AGR_MAG_R_OFF_Z_H(void *handle, u8_t *value); 00202 00203 /******************************************************************************* 00204 * Set/Get the Magnetic offsets 00205 *******************************************************************************/ 00206 mems_status_t LSM303AGR_MAG_Get_MagOff(void *handle, u16_t *magx_off, u16_t *magy_off, u16_t *magz_off); 00207 mems_status_t LSM303AGR_MAG_Set_MagOff(void *handle, u16_t magx_off, u16_t magy_off, u16_t magz_off); 00208 00209 /******************************************************************************* 00210 * Register : WHO_AM_I_REG 00211 * Address : 0X4F 00212 * Bit Group Name: WHO_AM_I 00213 * Permission : RO 00214 *******************************************************************************/ 00215 #define LSM303AGR_MAG_WHO_AM_I_MASK 0xFF 00216 #define LSM303AGR_MAG_WHO_AM_I_POSITION 0 00217 mems_status_t LSM303AGR_MAG_R_WHO_AM_I(void *handle, u8_t *value); 00218 00219 /******************************************************************************* 00220 * Register : CFG_REG_A 00221 * Address : 0X60 00222 * Bit Group Name: MD 00223 * Permission : RW 00224 *******************************************************************************/ 00225 typedef enum { 00226 LSM303AGR_MAG_MD_CONTINUOS_MODE =0x00, 00227 LSM303AGR_MAG_MD_SINGLE_MODE =0x01, 00228 LSM303AGR_MAG_MD_IDLE1_MODE =0x02, 00229 LSM303AGR_MAG_MD_IDLE2_MODE =0x03, 00230 } LSM303AGR_MAG_MD_t; 00231 00232 #define LSM303AGR_MAG_MD_MASK 0x03 00233 mems_status_t LSM303AGR_MAG_W_MD(void *handle, LSM303AGR_MAG_MD_t newValue); 00234 mems_status_t LSM303AGR_MAG_R_MD(void *handle, LSM303AGR_MAG_MD_t *value); 00235 00236 /******************************************************************************* 00237 * Register : CFG_REG_A 00238 * Address : 0X60 00239 * Bit Group Name: ODR 00240 * Permission : RW 00241 *******************************************************************************/ 00242 typedef enum { 00243 LSM303AGR_MAG_ODR_10Hz =0x00, 00244 LSM303AGR_MAG_ODR_20Hz =0x04, 00245 LSM303AGR_MAG_ODR_50Hz =0x08, 00246 LSM303AGR_MAG_ODR_100Hz =0x0C, 00247 } LSM303AGR_MAG_ODR_t; 00248 00249 #define LSM303AGR_MAG_ODR_MASK 0x0C 00250 mems_status_t LSM303AGR_MAG_W_ODR(void *handle, LSM303AGR_MAG_ODR_t newValue); 00251 mems_status_t LSM303AGR_MAG_R_ODR(void *handle, LSM303AGR_MAG_ODR_t *value); 00252 00253 /******************************************************************************* 00254 * Register : CFG_REG_A 00255 * Address : 0X60 00256 * Bit Group Name: LP 00257 * Permission : RW 00258 *******************************************************************************/ 00259 typedef enum { 00260 LSM303AGR_MAG_HR_MODE =0x00, 00261 LSM303AGR_MAG_LP_MODE =0x10, 00262 } LSM303AGR_MAG_LP_t; 00263 00264 #define LSM303AGR_MAG_LP_MASK 0x10 00265 mems_status_t LSM303AGR_MAG_W_LP(void *handle, LSM303AGR_MAG_LP_t newValue); 00266 mems_status_t LSM303AGR_MAG_R_LP(void *handle, LSM303AGR_MAG_LP_t *value); 00267 00268 /******************************************************************************* 00269 * Register : CFG_REG_A 00270 * Address : 0X60 00271 * Bit Group Name: SOFT_RST 00272 * Permission : RW 00273 *******************************************************************************/ 00274 typedef enum { 00275 LSM303AGR_MAG_SOFT_RST_DISABLED =0x00, 00276 LSM303AGR_MAG_SOFT_RST_ENABLED =0x20, 00277 } LSM303AGR_MAG_SOFT_RST_t; 00278 00279 #define LSM303AGR_MAG_SOFT_RST_MASK 0x20 00280 mems_status_t LSM303AGR_MAG_W_SOFT_RST(void *handle, LSM303AGR_MAG_SOFT_RST_t newValue); 00281 mems_status_t LSM303AGR_MAG_R_SOFT_RST(void *handle, LSM303AGR_MAG_SOFT_RST_t *value); 00282 00283 /******************************************************************************* 00284 * Register : CFG_REG_B 00285 * Address : 0X61 00286 * Bit Group Name: LPF 00287 * Permission : RW 00288 *******************************************************************************/ 00289 typedef enum { 00290 LSM303AGR_MAG_LPF_DISABLED =0x00, 00291 LSM303AGR_MAG_LPF_ENABLED =0x01, 00292 } LSM303AGR_MAG_LPF_t; 00293 00294 #define LSM303AGR_MAG_LPF_MASK 0x01 00295 mems_status_t LSM303AGR_MAG_W_LPF(void *handle, LSM303AGR_MAG_LPF_t newValue); 00296 mems_status_t LSM303AGR_MAG_R_LPF(void *handle, LSM303AGR_MAG_LPF_t *value); 00297 00298 /******************************************************************************* 00299 * Register : CFG_REG_B 00300 * Address : 0X61 00301 * Bit Group Name: OFF_CANC 00302 * Permission : RW 00303 *******************************************************************************/ 00304 typedef enum { 00305 LSM303AGR_MAG_OFF_CANC_DISABLED =0x00, 00306 LSM303AGR_MAG_OFF_CANC_ENABLED =0x02, 00307 } LSM303AGR_MAG_OFF_CANC_t; 00308 00309 #define LSM303AGR_MAG_OFF_CANC_MASK 0x02 00310 mems_status_t LSM303AGR_MAG_W_OFF_CANC(void *handle, LSM303AGR_MAG_OFF_CANC_t newValue); 00311 mems_status_t LSM303AGR_MAG_R_OFF_CANC(void *handle, LSM303AGR_MAG_OFF_CANC_t *value); 00312 00313 /******************************************************************************* 00314 * Register : CFG_REG_B 00315 * Address : 0X61 00316 * Bit Group Name: SET_FREQ 00317 * Permission : RW 00318 *******************************************************************************/ 00319 typedef enum { 00320 LSM303AGR_MAG_SET_FREQ_CONTINUOS =0x00, 00321 LSM303AGR_MAG_SET_FREQ_SINGLE =0x04, 00322 } LSM303AGR_MAG_SET_FREQ_t; 00323 00324 #define LSM303AGR_MAG_SET_FREQ_MASK 0x04 00325 mems_status_t LSM303AGR_MAG_W_SET_FREQ(void *handle, LSM303AGR_MAG_SET_FREQ_t newValue); 00326 mems_status_t LSM303AGR_MAG_R_SET_FREQ(void *handle, LSM303AGR_MAG_SET_FREQ_t *value); 00327 00328 /******************************************************************************* 00329 * Register : CFG_REG_B 00330 * Address : 0X61 00331 * Bit Group Name: INT_ON_DATAOFF 00332 * Permission : RW 00333 *******************************************************************************/ 00334 typedef enum { 00335 LSM303AGR_MAG_INT_ON_DATAOFF_DISABLED =0x00, 00336 LSM303AGR_MAG_INT_ON_DATAOFF_ENABLED =0x08, 00337 } LSM303AGR_MAG_INT_ON_DATAOFF_t; 00338 00339 #define LSM303AGR_MAG_INT_ON_DATAOFF_MASK 0x08 00340 mems_status_t LSM303AGR_MAG_W_INT_ON_DATAOFF(void *handle, LSM303AGR_MAG_INT_ON_DATAOFF_t newValue); 00341 mems_status_t LSM303AGR_MAG_R_INT_ON_DATAOFF(void *handle, LSM303AGR_MAG_INT_ON_DATAOFF_t *value); 00342 00343 /******************************************************************************* 00344 * Register : CFG_REG_C 00345 * Address : 0X62 00346 * Bit Group Name: INT_MAG 00347 * Permission : RW 00348 *******************************************************************************/ 00349 typedef enum { 00350 LSM303AGR_MAG_INT_MAG_DISABLED =0x00, 00351 LSM303AGR_MAG_INT_MAG_ENABLED =0x01, 00352 } LSM303AGR_MAG_INT_MAG_t; 00353 00354 #define LSM303AGR_MAG_INT_MAG_MASK 0x01 00355 mems_status_t LSM303AGR_MAG_W_INT_MAG(void *handle, LSM303AGR_MAG_INT_MAG_t newValue); 00356 mems_status_t LSM303AGR_MAG_R_INT_MAG(void *handle, LSM303AGR_MAG_INT_MAG_t *value); 00357 00358 /******************************************************************************* 00359 * Register : CFG_REG_C 00360 * Address : 0X62 00361 * Bit Group Name: ST 00362 * Permission : RW 00363 *******************************************************************************/ 00364 typedef enum { 00365 LSM303AGR_MAG_ST_DISABLED =0x00, 00366 LSM303AGR_MAG_ST_ENABLED =0x02, 00367 } LSM303AGR_MAG_ST_t; 00368 00369 #define LSM303AGR_MAG_ST_MASK 0x02 00370 mems_status_t LSM303AGR_MAG_W_ST(void *handle, LSM303AGR_MAG_ST_t newValue); 00371 mems_status_t LSM303AGR_MAG_R_ST(void *handle, LSM303AGR_MAG_ST_t *value); 00372 00373 /******************************************************************************* 00374 * Register : CFG_REG_C 00375 * Address : 0X62 00376 * Bit Group Name: BLE 00377 * Permission : RW 00378 *******************************************************************************/ 00379 typedef enum { 00380 LSM303AGR_MAG_BLE_DISABLED =0x00, 00381 LSM303AGR_MAG_BLE_ENABLED =0x08, 00382 } LSM303AGR_MAG_BLE_t; 00383 00384 #define LSM303AGR_MAG_BLE_MASK 0x08 00385 mems_status_t LSM303AGR_MAG_W_BLE(void *handle, LSM303AGR_MAG_BLE_t newValue); 00386 mems_status_t LSM303AGR_MAG_R_BLE(void *handle, LSM303AGR_MAG_BLE_t *value); 00387 00388 /******************************************************************************* 00389 * Register : CFG_REG_C 00390 * Address : 0X62 00391 * Bit Group Name: BDU 00392 * Permission : RW 00393 *******************************************************************************/ 00394 typedef enum { 00395 LSM303AGR_MAG_BDU_DISABLED =0x00, 00396 LSM303AGR_MAG_BDU_ENABLED =0x10, 00397 } LSM303AGR_MAG_BDU_t; 00398 00399 #define LSM303AGR_MAG_BDU_MASK 0x10 00400 mems_status_t LSM303AGR_MAG_W_BDU(void *handle, LSM303AGR_MAG_BDU_t newValue); 00401 mems_status_t LSM303AGR_MAG_R_BDU(void *handle, LSM303AGR_MAG_BDU_t *value); 00402 00403 /******************************************************************************* 00404 * Register : CFG_REG_C 00405 * Address : 0X62 00406 * Bit Group Name: I2C_DIS 00407 * Permission : RW 00408 *******************************************************************************/ 00409 typedef enum { 00410 LSM303AGR_MAG_I2C_ENABLED =0x00, 00411 LSM303AGR_MAG_I2C_DISABLED =0x20, 00412 } LSM303AGR_MAG_I2C_DIS_t; 00413 00414 #define LSM303AGR_MAG_I2C_DIS_MASK 0x20 00415 mems_status_t LSM303AGR_MAG_W_I2C_DIS(void *handle, LSM303AGR_MAG_I2C_DIS_t newValue); 00416 mems_status_t LSM303AGR_MAG_R_I2C_DIS(void *handle, LSM303AGR_MAG_I2C_DIS_t *value); 00417 00418 /******************************************************************************* 00419 * Register : CFG_REG_C 00420 * Address : 0X62 00421 * Bit Group Name: INT_MAG_PIN 00422 * Permission : RW 00423 *******************************************************************************/ 00424 typedef enum { 00425 LSM303AGR_MAG_INT_MAG_PIN_DISABLED =0x00, 00426 LSM303AGR_MAG_INT_MAG_PIN_ENABLED =0x40, 00427 } LSM303AGR_MAG_INT_MAG_PIN_t; 00428 00429 #define LSM303AGR_MAG_INT_MAG_PIN_MASK 0x40 00430 mems_status_t LSM303AGR_MAG_W_INT_MAG_PIN(void *handle, LSM303AGR_MAG_INT_MAG_PIN_t newValue); 00431 mems_status_t LSM303AGR_MAG_R_INT_MAG_PIN(void *handle, LSM303AGR_MAG_INT_MAG_PIN_t *value); 00432 00433 /******************************************************************************* 00434 * Register : INT_CTRL_REG 00435 * Address : 0X63 00436 * Bit Group Name: IEN 00437 * Permission : RW 00438 *******************************************************************************/ 00439 typedef enum { 00440 LSM303AGR_MAG_IEN_DISABLED =0x00, 00441 LSM303AGR_MAG_IEN_ENABLED =0x01, 00442 } LSM303AGR_MAG_IEN_t; 00443 00444 #define LSM303AGR_MAG_IEN_MASK 0x01 00445 mems_status_t LSM303AGR_MAG_W_IEN(void *handle, LSM303AGR_MAG_IEN_t newValue); 00446 mems_status_t LSM303AGR_MAG_R_IEN(void *handle, LSM303AGR_MAG_IEN_t *value); 00447 00448 /******************************************************************************* 00449 * Register : INT_CTRL_REG 00450 * Address : 0X63 00451 * Bit Group Name: IEL 00452 * Permission : RW 00453 *******************************************************************************/ 00454 typedef enum { 00455 LSM303AGR_MAG_IEL_PULSED =0x00, 00456 LSM303AGR_MAG_IEL_LATCHED =0x02, 00457 } LSM303AGR_MAG_IEL_t; 00458 00459 #define LSM303AGR_MAG_IEL_MASK 0x02 00460 mems_status_t LSM303AGR_MAG_W_IEL(void *handle, LSM303AGR_MAG_IEL_t newValue); 00461 mems_status_t LSM303AGR_MAG_R_IEL(void *handle, LSM303AGR_MAG_IEL_t *value); 00462 00463 /******************************************************************************* 00464 * Register : INT_CTRL_REG 00465 * Address : 0X63 00466 * Bit Group Name: IEA 00467 * Permission : RW 00468 *******************************************************************************/ 00469 typedef enum { 00470 LSM303AGR_MAG_IEA_ACTIVE_LO =0x00, 00471 LSM303AGR_MAG_IEA_ACTIVE_HI =0x04, 00472 } LSM303AGR_MAG_IEA_t; 00473 00474 #define LSM303AGR_MAG_IEA_MASK 0x04 00475 mems_status_t LSM303AGR_MAG_W_IEA(void *handle, LSM303AGR_MAG_IEA_t newValue); 00476 mems_status_t LSM303AGR_MAG_R_IEA(void *handle, LSM303AGR_MAG_IEA_t *value); 00477 00478 /******************************************************************************* 00479 * Register : INT_CTRL_REG 00480 * Address : 0X63 00481 * Bit Group Name: ZIEN 00482 * Permission : RW 00483 *******************************************************************************/ 00484 typedef enum { 00485 LSM303AGR_MAG_ZIEN_DISABLED =0x00, 00486 LSM303AGR_MAG_ZIEN_ENABLED =0x20, 00487 } LSM303AGR_MAG_ZIEN_t; 00488 00489 #define LSM303AGR_MAG_ZIEN_MASK 0x20 00490 mems_status_t LSM303AGR_MAG_W_ZIEN(void *handle, LSM303AGR_MAG_ZIEN_t newValue); 00491 mems_status_t LSM303AGR_MAG_R_ZIEN(void *handle, LSM303AGR_MAG_ZIEN_t *value); 00492 00493 /******************************************************************************* 00494 * Register : INT_CTRL_REG 00495 * Address : 0X63 00496 * Bit Group Name: YIEN 00497 * Permission : RW 00498 *******************************************************************************/ 00499 typedef enum { 00500 LSM303AGR_MAG_YIEN_DISABLED =0x00, 00501 LSM303AGR_MAG_YIEN_ENABLED =0x40, 00502 } LSM303AGR_MAG_YIEN_t; 00503 00504 #define LSM303AGR_MAG_YIEN_MASK 0x40 00505 mems_status_t LSM303AGR_MAG_W_YIEN(void *handle, LSM303AGR_MAG_YIEN_t newValue); 00506 mems_status_t LSM303AGR_MAG_R_YIEN(void *handle, LSM303AGR_MAG_YIEN_t *value); 00507 00508 /******************************************************************************* 00509 * Register : INT_CTRL_REG 00510 * Address : 0X63 00511 * Bit Group Name: XIEN 00512 * Permission : RW 00513 *******************************************************************************/ 00514 typedef enum { 00515 LSM303AGR_MAG_XIEN_DISABLED =0x00, 00516 LSM303AGR_MAG_XIEN_ENABLED =0x80, 00517 } LSM303AGR_MAG_XIEN_t; 00518 00519 #define LSM303AGR_MAG_XIEN_MASK 0x80 00520 mems_status_t LSM303AGR_MAG_W_XIEN(void *handle, LSM303AGR_MAG_XIEN_t newValue); 00521 mems_status_t LSM303AGR_MAG_R_XIEN(void *handle, LSM303AGR_MAG_XIEN_t *value); 00522 00523 /******************************************************************************* 00524 * Register : INT_SOURCE_REG 00525 * Address : 0X64 00526 * Bit Group Name: INT 00527 * Permission : RO 00528 *******************************************************************************/ 00529 typedef enum { 00530 LSM303AGR_MAG_INT_EV_OFF =0x00, 00531 LSM303AGR_MAG_INT_EV_ON =0x01, 00532 } LSM303AGR_MAG_INT_t; 00533 00534 #define LSM303AGR_MAG_INT_MASK 0x01 00535 mems_status_t LSM303AGR_MAG_R_INT(void *handle, LSM303AGR_MAG_INT_t *value); 00536 00537 /******************************************************************************* 00538 * Register : INT_SOURCE_REG 00539 * Address : 0X64 00540 * Bit Group Name: MROI 00541 * Permission : RO 00542 *******************************************************************************/ 00543 typedef enum { 00544 LSM303AGR_MAG_MROI_EV_OFF =0x00, 00545 LSM303AGR_MAG_MROI_EV_ON =0x02, 00546 } LSM303AGR_MAG_MROI_t; 00547 00548 #define LSM303AGR_MAG_MROI_MASK 0x02 00549 mems_status_t LSM303AGR_MAG_R_MROI(void *handle, LSM303AGR_MAG_MROI_t *value); 00550 00551 /******************************************************************************* 00552 * Register : INT_SOURCE_REG 00553 * Address : 0X64 00554 * Bit Group Name: N_TH_S_Z 00555 * Permission : RO 00556 *******************************************************************************/ 00557 typedef enum { 00558 LSM303AGR_MAG_N_TH_S_Z_EV_OFF =0x00, 00559 LSM303AGR_MAG_N_TH_S_Z_EV_ON =0x04, 00560 } LSM303AGR_MAG_N_TH_S_Z_t; 00561 00562 #define LSM303AGR_MAG_N_TH_S_Z_MASK 0x04 00563 mems_status_t LSM303AGR_MAG_R_N_TH_S_Z(void *handle, LSM303AGR_MAG_N_TH_S_Z_t *value); 00564 00565 /******************************************************************************* 00566 * Register : INT_SOURCE_REG 00567 * Address : 0X64 00568 * Bit Group Name: N_TH_S_Y 00569 * Permission : RO 00570 *******************************************************************************/ 00571 typedef enum { 00572 LSM303AGR_MAG_N_TH_S_Y_EV_OFF =0x00, 00573 LSM303AGR_MAG_N_TH_S_Y_EV_ON =0x08, 00574 } LSM303AGR_MAG_N_TH_S_Y_t; 00575 00576 #define LSM303AGR_MAG_N_TH_S_Y_MASK 0x08 00577 mems_status_t LSM303AGR_MAG_R_N_TH_S_Y(void *handle, LSM303AGR_MAG_N_TH_S_Y_t *value); 00578 00579 /******************************************************************************* 00580 * Register : INT_SOURCE_REG 00581 * Address : 0X64 00582 * Bit Group Name: N_TH_S_X 00583 * Permission : RO 00584 *******************************************************************************/ 00585 typedef enum { 00586 LSM303AGR_MAG_N_TH_S_X_EV_OFF =0x00, 00587 LSM303AGR_MAG_N_TH_S_X_EV_ON =0x10, 00588 } LSM303AGR_MAG_N_TH_S_X_t; 00589 00590 #define LSM303AGR_MAG_N_TH_S_X_MASK 0x10 00591 mems_status_t LSM303AGR_MAG_R_N_TH_S_X(void *handle, LSM303AGR_MAG_N_TH_S_X_t *value); 00592 00593 /******************************************************************************* 00594 * Register : INT_SOURCE_REG 00595 * Address : 0X64 00596 * Bit Group Name: P_TH_S_Z 00597 * Permission : RO 00598 *******************************************************************************/ 00599 typedef enum { 00600 LSM303AGR_MAG_P_TH_S_Z_EV_OFF =0x00, 00601 LSM303AGR_MAG_P_TH_S_Z_EV_ON =0x20, 00602 } LSM303AGR_MAG_P_TH_S_Z_t; 00603 00604 #define LSM303AGR_MAG_P_TH_S_Z_MASK 0x20 00605 mems_status_t LSM303AGR_MAG_R_P_TH_S_Z(void *handle, LSM303AGR_MAG_P_TH_S_Z_t *value); 00606 00607 /******************************************************************************* 00608 * Register : INT_SOURCE_REG 00609 * Address : 0X64 00610 * Bit Group Name: P_TH_S_Y 00611 * Permission : RO 00612 *******************************************************************************/ 00613 typedef enum { 00614 LSM303AGR_MAG_P_TH_S_Y_EV_OFF =0x00, 00615 LSM303AGR_MAG_P_TH_S_Y_EV_ON =0x40, 00616 } LSM303AGR_MAG_P_TH_S_Y_t; 00617 00618 #define LSM303AGR_MAG_P_TH_S_Y_MASK 0x40 00619 mems_status_t LSM303AGR_MAG_R_P_TH_S_Y(void *handle, LSM303AGR_MAG_P_TH_S_Y_t *value); 00620 00621 /******************************************************************************* 00622 * Register : INT_SOURCE_REG 00623 * Address : 0X64 00624 * Bit Group Name: P_TH_S_X 00625 * Permission : RO 00626 *******************************************************************************/ 00627 typedef enum { 00628 LSM303AGR_MAG_P_TH_S_X_EV_OFF =0x00, 00629 LSM303AGR_MAG_P_TH_S_X_EV_ON =0x80, 00630 } LSM303AGR_MAG_P_TH_S_X_t; 00631 00632 #define LSM303AGR_MAG_P_TH_S_X_MASK 0x80 00633 mems_status_t LSM303AGR_MAG_R_P_TH_S_X(void *handle, LSM303AGR_MAG_P_TH_S_X_t *value); 00634 00635 /******************************************************************************* 00636 * Register : STATUS_REG 00637 * Address : 0X67 00638 * Bit Group Name: XDA 00639 * Permission : RO 00640 *******************************************************************************/ 00641 typedef enum { 00642 LSM303AGR_MAG_XDA_EV_OFF =0x00, 00643 LSM303AGR_MAG_XDA_EV_ON =0x01, 00644 } LSM303AGR_MAG_XDA_t; 00645 00646 #define LSM303AGR_MAG_XDA_MASK 0x01 00647 mems_status_t LSM303AGR_MAG_R_XDA(void *handle, LSM303AGR_MAG_XDA_t *value); 00648 00649 /******************************************************************************* 00650 * Register : STATUS_REG 00651 * Address : 0X67 00652 * Bit Group Name: YDA 00653 * Permission : RO 00654 *******************************************************************************/ 00655 typedef enum { 00656 LSM303AGR_MAG_YDA_EV_OFF =0x00, 00657 LSM303AGR_MAG_YDA_EV_ON =0x02, 00658 } LSM303AGR_MAG_YDA_t; 00659 00660 #define LSM303AGR_MAG_YDA_MASK 0x02 00661 mems_status_t LSM303AGR_MAG_R_YDA(void *handle, LSM303AGR_MAG_YDA_t *value); 00662 00663 /******************************************************************************* 00664 * Register : STATUS_REG 00665 * Address : 0X67 00666 * Bit Group Name: ZDA 00667 * Permission : RO 00668 *******************************************************************************/ 00669 typedef enum { 00670 LSM303AGR_MAG_ZDA_EV_OFF =0x00, 00671 LSM303AGR_MAG_ZDA_EV_ON =0x04, 00672 } LSM303AGR_MAG_ZDA_t; 00673 00674 #define LSM303AGR_MAG_ZDA_MASK 0x04 00675 mems_status_t LSM303AGR_MAG_R_ZDA(void *handle, LSM303AGR_MAG_ZDA_t *value); 00676 00677 /******************************************************************************* 00678 * Register : STATUS_REG 00679 * Address : 0X67 00680 * Bit Group Name: ZYXDA 00681 * Permission : RO 00682 *******************************************************************************/ 00683 typedef enum { 00684 LSM303AGR_MAG_ZYXDA_EV_OFF =0x00, 00685 LSM303AGR_MAG_ZYXDA_EV_ON =0x08, 00686 } LSM303AGR_MAG_ZYXDA_t; 00687 00688 #define LSM303AGR_MAG_ZYXDA_MASK 0x08 00689 mems_status_t LSM303AGR_MAG_R_ZYXDA(void *handle, LSM303AGR_MAG_ZYXDA_t *value); 00690 00691 /******************************************************************************* 00692 * Register : STATUS_REG 00693 * Address : 0X67 00694 * Bit Group Name: XOR 00695 * Permission : RO 00696 *******************************************************************************/ 00697 typedef enum { 00698 LSM303AGR_MAG_XOR_EV_OFF =0x00, 00699 LSM303AGR_MAG_XOR_EV_ON =0x10, 00700 } LSM303AGR_MAG_XOR_t; 00701 00702 #define LSM303AGR_MAG_XOR_MASK 0x10 00703 mems_status_t LSM303AGR_MAG_R_XOR(void *handle, LSM303AGR_MAG_XOR_t *value); 00704 00705 /******************************************************************************* 00706 * Register : STATUS_REG 00707 * Address : 0X67 00708 * Bit Group Name: YOR 00709 * Permission : RO 00710 *******************************************************************************/ 00711 typedef enum { 00712 LSM303AGR_MAG_YOR_EV_OFF =0x00, 00713 LSM303AGR_MAG_YOR_EV_ON =0x20, 00714 } LSM303AGR_MAG_YOR_t; 00715 00716 #define LSM303AGR_MAG_YOR_MASK 0x20 00717 mems_status_t LSM303AGR_MAG_R_YOR(void *handle, LSM303AGR_MAG_YOR_t *value); 00718 00719 /******************************************************************************* 00720 * Register : STATUS_REG 00721 * Address : 0X67 00722 * Bit Group Name: ZOR 00723 * Permission : RO 00724 *******************************************************************************/ 00725 typedef enum { 00726 LSM303AGR_MAG_ZOR_EV_OFF =0x00, 00727 LSM303AGR_MAG_ZOR_EV_ON =0x40, 00728 } LSM303AGR_MAG_ZOR_t; 00729 00730 #define LSM303AGR_MAG_ZOR_MASK 0x40 00731 mems_status_t LSM303AGR_MAG_R_ZOR(void *handle, LSM303AGR_MAG_ZOR_t *value); 00732 00733 /******************************************************************************* 00734 * Register : STATUS_REG 00735 * Address : 0X67 00736 * Bit Group Name: ZYXOR 00737 * Permission : RO 00738 *******************************************************************************/ 00739 typedef enum { 00740 LSM303AGR_MAG_ZYXOR_EV_OFF =0x00, 00741 LSM303AGR_MAG_ZYXOR_EV_ON =0x80, 00742 } LSM303AGR_MAG_ZYXOR_t; 00743 00744 #define LSM303AGR_MAG_ZYXOR_MASK 0x80 00745 mems_status_t LSM303AGR_MAG_R_ZYXOR(void *handle, LSM303AGR_MAG_ZYXOR_t *value); 00746 /******************************************************************************* 00747 * Register : <REGISTER_L> - <REGISTER_H> 00748 * Output Type : Magnetic 00749 * Permission : ro 00750 *******************************************************************************/ 00751 mems_status_t LSM303AGR_MAG_Get_Raw_Magnetic(void *handle, u8_t *buff); 00752 mems_status_t LSM303AGR_MAG_Get_Magnetic(void *handle, int *buff); 00753 00754 /******************************************************************************* 00755 * Register : <REGISTER_L> - <REGISTER_H> 00756 * Output Type : IntThreshld 00757 * Permission : rw 00758 *******************************************************************************/ 00759 mems_status_t LSM303AGR_MAG_Get_IntThreshld(void *handle, u8_t *buff); 00760 mems_status_t LSM303AGR_MAG_Set_IntThreshld(void *handle, u8_t *buff); 00761 00762 #ifdef __cplusplus 00763 } 00764 #endif 00765 00766 #endif
Generated on Tue Jul 12 2022 23:32:14 by 1.7.2