BSP Drivers

Dependencies:   CMSIS_STM32L4xx CMSIS_DSP_401 STM32L4xx_HAL_Driver

Dependents:   DiscoAudioRecord

Committer:
EricLew
Date:
Mon Nov 02 19:38:36 2015 +0000
Revision:
0:ad9dfc0179dc
commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EricLew 0:ad9dfc0179dc 1 /**
EricLew 0:ad9dfc0179dc 2 ******************************************************************************
EricLew 0:ad9dfc0179dc 3 * @file lsm303c.h
EricLew 0:ad9dfc0179dc 4 * @author MCD Application Team
EricLew 0:ad9dfc0179dc 5 * @version V1.0.0
EricLew 0:ad9dfc0179dc 6 * @date 24-June-2015
EricLew 0:ad9dfc0179dc 7 * @brief This file contains all the functions prototypes for the LSM303C.c driver.
EricLew 0:ad9dfc0179dc 8 ******************************************************************************
EricLew 0:ad9dfc0179dc 9 * @attention
EricLew 0:ad9dfc0179dc 10 *
EricLew 0:ad9dfc0179dc 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
EricLew 0:ad9dfc0179dc 12 *
EricLew 0:ad9dfc0179dc 13 * Redistribution and use in source and binary forms, with or without modification,
EricLew 0:ad9dfc0179dc 14 * are permitted provided that the following conditions are met:
EricLew 0:ad9dfc0179dc 15 * 1. Redistributions of source code must retain the above copyright notice,
EricLew 0:ad9dfc0179dc 16 * this list of conditions and the following disclaimer.
EricLew 0:ad9dfc0179dc 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
EricLew 0:ad9dfc0179dc 18 * this list of conditions and the following disclaimer in the documentation
EricLew 0:ad9dfc0179dc 19 * and/or other materials provided with the distribution.
EricLew 0:ad9dfc0179dc 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
EricLew 0:ad9dfc0179dc 21 * may be used to endorse or promote products derived from this software
EricLew 0:ad9dfc0179dc 22 * without specific prior written permission.
EricLew 0:ad9dfc0179dc 23 *
EricLew 0:ad9dfc0179dc 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
EricLew 0:ad9dfc0179dc 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
EricLew 0:ad9dfc0179dc 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
EricLew 0:ad9dfc0179dc 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
EricLew 0:ad9dfc0179dc 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
EricLew 0:ad9dfc0179dc 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
EricLew 0:ad9dfc0179dc 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
EricLew 0:ad9dfc0179dc 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
EricLew 0:ad9dfc0179dc 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
EricLew 0:ad9dfc0179dc 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
EricLew 0:ad9dfc0179dc 34 *
EricLew 0:ad9dfc0179dc 35 ******************************************************************************
EricLew 0:ad9dfc0179dc 36 */
EricLew 0:ad9dfc0179dc 37
EricLew 0:ad9dfc0179dc 38 /* Define to prevent recursive inclusion -------------------------------------*/
EricLew 0:ad9dfc0179dc 39 #ifndef __LSM303C_H
EricLew 0:ad9dfc0179dc 40 #define __LSM303C_H
EricLew 0:ad9dfc0179dc 41
EricLew 0:ad9dfc0179dc 42 #ifdef __cplusplus
EricLew 0:ad9dfc0179dc 43 extern "C" {
EricLew 0:ad9dfc0179dc 44 #endif
EricLew 0:ad9dfc0179dc 45
EricLew 0:ad9dfc0179dc 46 /* Includes ------------------------------------------------------------------*/
EricLew 0:ad9dfc0179dc 47 #include "../Common/accelero.h"
EricLew 0:ad9dfc0179dc 48 #include "../Common/magneto.h"
EricLew 0:ad9dfc0179dc 49
EricLew 0:ad9dfc0179dc 50 /** @addtogroup BSP
EricLew 0:ad9dfc0179dc 51 * @{
EricLew 0:ad9dfc0179dc 52 */
EricLew 0:ad9dfc0179dc 53
EricLew 0:ad9dfc0179dc 54 /** @addtogroup Components
EricLew 0:ad9dfc0179dc 55 * @{
EricLew 0:ad9dfc0179dc 56 */
EricLew 0:ad9dfc0179dc 57
EricLew 0:ad9dfc0179dc 58 /** @addtogroup LSM303C
EricLew 0:ad9dfc0179dc 59 * @{
EricLew 0:ad9dfc0179dc 60 */
EricLew 0:ad9dfc0179dc 61
EricLew 0:ad9dfc0179dc 62 /** @defgroup LSM303C_Exported_Types
EricLew 0:ad9dfc0179dc 63 * @{
EricLew 0:ad9dfc0179dc 64 */
EricLew 0:ad9dfc0179dc 65
EricLew 0:ad9dfc0179dc 66 /**
EricLew 0:ad9dfc0179dc 67 * @}
EricLew 0:ad9dfc0179dc 68 */
EricLew 0:ad9dfc0179dc 69
EricLew 0:ad9dfc0179dc 70 /******************************************************************************/
EricLew 0:ad9dfc0179dc 71 /*************************** START REGISTER MAPPING **************************/
EricLew 0:ad9dfc0179dc 72 /******************************************************************************/
EricLew 0:ad9dfc0179dc 73 /* Acceleration Registers */
EricLew 0:ad9dfc0179dc 74 #define LSM303C_WHO_AM_I_ADDR 0x0F /* device identification register */
EricLew 0:ad9dfc0179dc 75 #define LSM303C_ACT_THS_A 0x1E
EricLew 0:ad9dfc0179dc 76 #define LSM303C_ACT_DUR_A 0x1F
EricLew 0:ad9dfc0179dc 77 #define LSM303C_CTRL_REG1_A 0x20 /* Control register 1 acceleration */
EricLew 0:ad9dfc0179dc 78 #define LSM303C_CTRL_REG2_A 0x21 /* Control register 2 acceleration */
EricLew 0:ad9dfc0179dc 79 #define LSM303C_CTRL_REG3_A 0x22 /* Control register 3 acceleration */
EricLew 0:ad9dfc0179dc 80 #define LSM303C_CTRL_REG4_A 0x23 /* Control register 4 acceleration */
EricLew 0:ad9dfc0179dc 81 #define LSM303C_CTRL_REG5_A 0x24 /* Control register 5 acceleration */
EricLew 0:ad9dfc0179dc 82 #define LSM303C_CTRL_REG6_A 0x25 /* Control register 6 acceleration */
EricLew 0:ad9dfc0179dc 83 #define LSM303C_CTRL_REG7_A 0x26 /* Control register 6 acceleration */
EricLew 0:ad9dfc0179dc 84 #define LSM303C_STATUS_REG_A 0x27 /* Status register acceleration */
EricLew 0:ad9dfc0179dc 85 #define LSM303C_OUT_X_L_A 0x28 /* Output Register X acceleration */
EricLew 0:ad9dfc0179dc 86 #define LSM303C_OUT_X_H_A 0x29 /* Output Register X acceleration */
EricLew 0:ad9dfc0179dc 87 #define LSM303C_OUT_Y_L_A 0x2A /* Output Register Y acceleration */
EricLew 0:ad9dfc0179dc 88 #define LSM303C_OUT_Y_H_A 0x2B /* Output Register Y acceleration */
EricLew 0:ad9dfc0179dc 89 #define LSM303C_OUT_Z_L_A 0x2C /* Output Register Z acceleration */
EricLew 0:ad9dfc0179dc 90 #define LSM303C_OUT_Z_H_A 0x2D /* Output Register Z acceleration */
EricLew 0:ad9dfc0179dc 91 #define LSM303C_FIFO_CTRL 0x2E /* Fifo control Register acceleration */
EricLew 0:ad9dfc0179dc 92 #define LSM303C_FIFO_SRC 0x2F /* Fifo src Register acceleration */
EricLew 0:ad9dfc0179dc 93
EricLew 0:ad9dfc0179dc 94 #define LSM303C_IG_CFG1_A 0x30 /* Interrupt 1 configuration Register acceleration */
EricLew 0:ad9dfc0179dc 95 #define LSM303C_IG_SRC1_A 0x31 /* Interrupt 1 source Register acceleration */
EricLew 0:ad9dfc0179dc 96 #define LSM303C_IG_THS_X1_A 0x32
EricLew 0:ad9dfc0179dc 97 #define LSM303C_IG_THS_Y1_A 0x33
EricLew 0:ad9dfc0179dc 98 #define LSM303C_IG_THS_Z1_A 0x34
EricLew 0:ad9dfc0179dc 99
EricLew 0:ad9dfc0179dc 100 #define LSM303C_IG_DUR1_A 0x32
EricLew 0:ad9dfc0179dc 101 #define LSM303C_INT1_DURATION_A 0x33 /* Interrupt 1 DURATION register acceleration */
EricLew 0:ad9dfc0179dc 102
EricLew 0:ad9dfc0179dc 103 #define LSM303C_INT2_CFG_A 0x34 /* Interrupt 2 configuration Register acceleration */
EricLew 0:ad9dfc0179dc 104 #define LSM303C_INT2_SOURCE_A 0x35 /* Interrupt 2 source Register acceleration */
EricLew 0:ad9dfc0179dc 105 #define LSM303C_INT2_THS_A 0x36 /* Interrupt 2 Threshold register acceleration */
EricLew 0:ad9dfc0179dc 106 #define LSM303C_INT2_DURATION_A 0x37 /* Interrupt 2 DURATION register acceleration */
EricLew 0:ad9dfc0179dc 107
EricLew 0:ad9dfc0179dc 108 #define LSM303C_CLICK_CFG_A 0x38 /* Click configuration Register acceleration */
EricLew 0:ad9dfc0179dc 109 #define LSM303C_CLICK_SOURCE_A 0x39 /* Click 2 source Register acceleration */
EricLew 0:ad9dfc0179dc 110 #define LSM303C_CLICK_THS_A 0x3A /* Click 2 Threshold register acceleration */
EricLew 0:ad9dfc0179dc 111
EricLew 0:ad9dfc0179dc 112 #define LSM303C_TIME_LIMIT_A 0x3B /* Time Limit Register acceleration */
EricLew 0:ad9dfc0179dc 113 #define LSM303C_TIME_LATENCY_A 0x3C /* Time Latency Register acceleration */
EricLew 0:ad9dfc0179dc 114 #define LSM303C_TIME_WINDOW_A 0x3D /* Time window register acceleration */
EricLew 0:ad9dfc0179dc 115
EricLew 0:ad9dfc0179dc 116 /* Magnetic field Registers */
EricLew 0:ad9dfc0179dc 117 #define LSM303C_CTRL_REG1_M 0x20 /* Magnetic control register 1 */
EricLew 0:ad9dfc0179dc 118 #define LSM303C_CTRL_REG2_M 0x21 /* Magnetic control register 2 */
EricLew 0:ad9dfc0179dc 119 #define LSM303C_CTRL_REG3_M 0x22 /* Magnetic control register 3 */
EricLew 0:ad9dfc0179dc 120 #define LSM303C_CTRL_REG4_M 0x23 /* Magnetic control register 4 */
EricLew 0:ad9dfc0179dc 121 #define LSM303C_CTRL_REG5_M 0x24 /* Magnetic control register 5 */
EricLew 0:ad9dfc0179dc 122
EricLew 0:ad9dfc0179dc 123 #define LSM303C_STATUS_REG_M 0x27 /* Magnetic status register M */
EricLew 0:ad9dfc0179dc 124
EricLew 0:ad9dfc0179dc 125 #define LSM303C_OUT_X_L_M 0x28 /* Output Register X magnetic field */
EricLew 0:ad9dfc0179dc 126 #define LSM303C_OUT_X_H_M 0x29 /* Output Register X magnetic field */
EricLew 0:ad9dfc0179dc 127 #define LSM303C_OUT_Y_L_M 0x2A /* Output Register Y magnetic field */
EricLew 0:ad9dfc0179dc 128 #define LSM303C_OUT_Y_H_M 0x2B /* Output Register Y magnetic field */
EricLew 0:ad9dfc0179dc 129 #define LSM303C_OUT_Z_L_M 0x2C /* Output Register Z magnetic field */
EricLew 0:ad9dfc0179dc 130 #define LSM303C_OUT_Z_H_M 0x2D /* Output Register Z magnetic field */
EricLew 0:ad9dfc0179dc 131
EricLew 0:ad9dfc0179dc 132 #define LSM303C_TEMP_OUT_L_M 0x2E /* Temperature Register magnetic field */
EricLew 0:ad9dfc0179dc 133 #define LSM303C_TEMP_OUT_H_M 0x2F /* Temperature Register magnetic field */
EricLew 0:ad9dfc0179dc 134
EricLew 0:ad9dfc0179dc 135 #define LSM303C_INT_CFG_M 0x30 /* Axis interrupt configuration */
EricLew 0:ad9dfc0179dc 136 #define LSM303C_INT_SRC_M 0x31 /* Axis interrupt source */
EricLew 0:ad9dfc0179dc 137 #define LSM303C_INT_THS_L_M 0x32 /* Interrupt threshold L */
EricLew 0:ad9dfc0179dc 138 #define LSM303C_INT_THS_H_M 0x33 /* Interrupt threshold M */
EricLew 0:ad9dfc0179dc 139
EricLew 0:ad9dfc0179dc 140
EricLew 0:ad9dfc0179dc 141 /******************************************************************************/
EricLew 0:ad9dfc0179dc 142 /**************************** END REGISTER MAPPING ***************************/
EricLew 0:ad9dfc0179dc 143 /******************************************************************************/
EricLew 0:ad9dfc0179dc 144
EricLew 0:ad9dfc0179dc 145 /** @defgroup Power_Mode_selection
EricLew 0:ad9dfc0179dc 146 * @{
EricLew 0:ad9dfc0179dc 147 */
EricLew 0:ad9dfc0179dc 148 #define LMS303C_ACC_ID ((uint8_t)0x41)
EricLew 0:ad9dfc0179dc 149 #define LMS303C_MAG_ID ((uint8_t)0x3D)
EricLew 0:ad9dfc0179dc 150 /**
EricLew 0:ad9dfc0179dc 151 * @}
EricLew 0:ad9dfc0179dc 152 */
EricLew 0:ad9dfc0179dc 153
EricLew 0:ad9dfc0179dc 154 /** @defgroup Acc_OutPut_DataRate_Selection
EricLew 0:ad9dfc0179dc 155 * @{
EricLew 0:ad9dfc0179dc 156 */
EricLew 0:ad9dfc0179dc 157 #define LSM303C_ACC_ODR_BITPOSITION ((uint8_t)0x70) /*!< Output Data Rate bit position */
EricLew 0:ad9dfc0179dc 158 #define LSM303C_ACC_ODR_OFF ((uint8_t)0x00) /*!< Output Data Rate powerdown */
EricLew 0:ad9dfc0179dc 159 #define LSM303C_ACC_ODR_10_HZ ((uint8_t)0x10) /*!< Output Data Rate = 10 Hz */
EricLew 0:ad9dfc0179dc 160 #define LSM303C_ACC_ODR_50_HZ ((uint8_t)0x20) /*!< Output Data Rate = 50 Hz */
EricLew 0:ad9dfc0179dc 161 #define LSM303C_ACC_ODR_100_HZ ((uint8_t)0x30) /*!< Output Data Rate = 100 Hz */
EricLew 0:ad9dfc0179dc 162 #define LSM303C_ACC_ODR_200_HZ ((uint8_t)0x40) /*!< Output Data Rate = 200 Hz */
EricLew 0:ad9dfc0179dc 163 #define LSM303C_ACC_ODR_400_HZ ((uint8_t)0x50) /*!< Output Data Rate = 400 Hz */
EricLew 0:ad9dfc0179dc 164 #define LSM303C_ACC_ODR_800_HZ ((uint8_t)0x60) /*!< Output Data Rate = 800 Hz */
EricLew 0:ad9dfc0179dc 165
EricLew 0:ad9dfc0179dc 166 /**
EricLew 0:ad9dfc0179dc 167 * @}
EricLew 0:ad9dfc0179dc 168 */
EricLew 0:ad9dfc0179dc 169
EricLew 0:ad9dfc0179dc 170 /** @defgroup Acc_Axes_Selection
EricLew 0:ad9dfc0179dc 171 * @{
EricLew 0:ad9dfc0179dc 172 */
EricLew 0:ad9dfc0179dc 173 #define LSM303C_ACC_X_ENABLE ((uint8_t)0x01)
EricLew 0:ad9dfc0179dc 174 #define LSM303C_ACC_Y_ENABLE ((uint8_t)0x02)
EricLew 0:ad9dfc0179dc 175 #define LSM303C_ACC_Z_ENABLE ((uint8_t)0x04)
EricLew 0:ad9dfc0179dc 176 #define LSM303C_ACC_AXES_ENABLE ((uint8_t)0x07)
EricLew 0:ad9dfc0179dc 177 #define LSM303C_ACC_AXES_DISABLE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 178 /**
EricLew 0:ad9dfc0179dc 179 * @}
EricLew 0:ad9dfc0179dc 180 */
EricLew 0:ad9dfc0179dc 181
EricLew 0:ad9dfc0179dc 182 /** @defgroup Acc_High_Resolution
EricLew 0:ad9dfc0179dc 183 * @{
EricLew 0:ad9dfc0179dc 184 */
EricLew 0:ad9dfc0179dc 185 #define LSM303C_ACC_HR_ENABLE ((uint8_t)0x80)
EricLew 0:ad9dfc0179dc 186 #define LSM303C_ACC_HR_DISABLE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 187 /**
EricLew 0:ad9dfc0179dc 188 * @}
EricLew 0:ad9dfc0179dc 189 */
EricLew 0:ad9dfc0179dc 190
EricLew 0:ad9dfc0179dc 191 /** @defgroup Communication_Mode
EricLew 0:ad9dfc0179dc 192 * @{
EricLew 0:ad9dfc0179dc 193 */
EricLew 0:ad9dfc0179dc 194 #define LSM303C_ACC_I2C_MODE ((uint8_t) 0x02)
EricLew 0:ad9dfc0179dc 195 #define LSM303C_ACC_SPI_MODE ((uint8_t) 0x01)
EricLew 0:ad9dfc0179dc 196 /**
EricLew 0:ad9dfc0179dc 197 * @}
EricLew 0:ad9dfc0179dc 198 */
EricLew 0:ad9dfc0179dc 199
EricLew 0:ad9dfc0179dc 200 /** @defgroup Acc_Full_Scale_Selection
EricLew 0:ad9dfc0179dc 201 * @{
EricLew 0:ad9dfc0179dc 202 */
EricLew 0:ad9dfc0179dc 203 #define LSM303C_ACC_FULLSCALE_2G ((uint8_t)0x00) /*!< ±2 g */
EricLew 0:ad9dfc0179dc 204 #define LSM303C_ACC_FULLSCALE_4G ((uint8_t)0x20) /*!< ±4 g */
EricLew 0:ad9dfc0179dc 205 #define LSM303C_ACC_FULLSCALE_8G ((uint8_t)0x30) /*!< ±8 g */
EricLew 0:ad9dfc0179dc 206 /**
EricLew 0:ad9dfc0179dc 207 * @}
EricLew 0:ad9dfc0179dc 208 */
EricLew 0:ad9dfc0179dc 209
EricLew 0:ad9dfc0179dc 210 /** @defgroup Acc_Full_Scale_Selection
EricLew 0:ad9dfc0179dc 211 * @{
EricLew 0:ad9dfc0179dc 212 */
EricLew 0:ad9dfc0179dc 213 #define LSM303C_ACC_SENSITIVITY_2G ((uint8_t)1) /*!< accelerometer sensitivity with 2 g full scale [mg/LSB] */
EricLew 0:ad9dfc0179dc 214 #define LSM303C_ACC_SENSITIVITY_4G ((uint8_t)2) /*!< accelerometer sensitivity with 4 g full scale [mg/LSB] */
EricLew 0:ad9dfc0179dc 215 #define LSM303C_ACC_SENSITIVITY_8G ((uint8_t)4) /*!< accelerometer sensitivity with 8 g full scale [mg/LSB] */
EricLew 0:ad9dfc0179dc 216 #define LSM303C_ACC_SENSITIVITY_16G ((uint8_t)12) /*!< accelerometer sensitivity with 12 g full scale [mg/LSB] */
EricLew 0:ad9dfc0179dc 217 /**
EricLew 0:ad9dfc0179dc 218 * @}
EricLew 0:ad9dfc0179dc 219 */
EricLew 0:ad9dfc0179dc 220
EricLew 0:ad9dfc0179dc 221 /** @defgroup Acc_Block_Data_Update
EricLew 0:ad9dfc0179dc 222 * @{
EricLew 0:ad9dfc0179dc 223 */
EricLew 0:ad9dfc0179dc 224 #define LSM303C_ACC_BDU_CONTINUOUS ((uint8_t)0x00) /*!< Continuos Update */
EricLew 0:ad9dfc0179dc 225 #define LSM303C_ACC_BDU_MSBLSB ((uint8_t)0x08) /*!< Single Update: output registers not updated until MSB and LSB reading */
EricLew 0:ad9dfc0179dc 226 /**
EricLew 0:ad9dfc0179dc 227 * @}
EricLew 0:ad9dfc0179dc 228 */
EricLew 0:ad9dfc0179dc 229
EricLew 0:ad9dfc0179dc 230 /** @defgroup Acc_Endian_Data_selection
EricLew 0:ad9dfc0179dc 231 * @{
EricLew 0:ad9dfc0179dc 232 */
EricLew 0:ad9dfc0179dc 233 #define LSM303C_ACC_BLE_LSB ((uint8_t)0x00) /*!< Little Endian: data LSB @ lower address */
EricLew 0:ad9dfc0179dc 234 #define LSM303C_ACC_BLE_MSB ((uint8_t)0x40) /*!< Big Endian: data MSB @ lower address */
EricLew 0:ad9dfc0179dc 235 /**
EricLew 0:ad9dfc0179dc 236 * @}
EricLew 0:ad9dfc0179dc 237 */
EricLew 0:ad9dfc0179dc 238
EricLew 0:ad9dfc0179dc 239 /** @defgroup Acc_High_Pass_Filter_Mode
EricLew 0:ad9dfc0179dc 240 * @{
EricLew 0:ad9dfc0179dc 241 */
EricLew 0:ad9dfc0179dc 242 #define LSM303C_ACC_HPM_REF_SIGNAL ((uint8_t)0x08)
EricLew 0:ad9dfc0179dc 243 #define LSM303C_ACC_HPM_NORMAL_MODE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 244 /**
EricLew 0:ad9dfc0179dc 245 * @}
EricLew 0:ad9dfc0179dc 246 */
EricLew 0:ad9dfc0179dc 247
EricLew 0:ad9dfc0179dc 248 /** @defgroup Acc_High_Pass_CUT OFF_Frequency
EricLew 0:ad9dfc0179dc 249 * @{
EricLew 0:ad9dfc0179dc 250 */
EricLew 0:ad9dfc0179dc 251 #define LSM303C_ACC_DFC1_ODRDIV50 ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 252 #define LSM303C_ACC_DFC1_ODRDIV100 ((uint8_t)0x20)
EricLew 0:ad9dfc0179dc 253 #define LSM303C_ACC_DFC1_ODRDIV9 ((uint8_t)0x40)
EricLew 0:ad9dfc0179dc 254 #define LSM303C_ACC_DFC1_ODRDIV400 ((uint8_t)0x60)
EricLew 0:ad9dfc0179dc 255 /**
EricLew 0:ad9dfc0179dc 256 * @}
EricLew 0:ad9dfc0179dc 257 */
EricLew 0:ad9dfc0179dc 258
EricLew 0:ad9dfc0179dc 259 /** @defgroup Acc_High_Pass_Filter_status
EricLew 0:ad9dfc0179dc 260 * @{
EricLew 0:ad9dfc0179dc 261 */
EricLew 0:ad9dfc0179dc 262 #define LSM303C_ACC_HPF_DISABLE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 263 #define LSM303C_ACC_HPF_ENABLE ((uint8_t)0x08)
EricLew 0:ad9dfc0179dc 264 /**
EricLew 0:ad9dfc0179dc 265 * @}
EricLew 0:ad9dfc0179dc 266 */
EricLew 0:ad9dfc0179dc 267
EricLew 0:ad9dfc0179dc 268 /** @defgroup Acc_High_Pass_Filter_Click_status
EricLew 0:ad9dfc0179dc 269 * @{
EricLew 0:ad9dfc0179dc 270 */
EricLew 0:ad9dfc0179dc 271 #define LSM303C_ACC_HPF_CLICK_DISABLE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 272 #define LSM303C_ACC_HPF_CLICK_ENABLE ((uint8_t)0x04)
EricLew 0:ad9dfc0179dc 273 /**
EricLew 0:ad9dfc0179dc 274 * @}
EricLew 0:ad9dfc0179dc 275 */
EricLew 0:ad9dfc0179dc 276
EricLew 0:ad9dfc0179dc 277 /** @defgroup Acc_High_Pass_Filter_HPI2S_status
EricLew 0:ad9dfc0179dc 278 * @{
EricLew 0:ad9dfc0179dc 279 */
EricLew 0:ad9dfc0179dc 280 #define LSM303C_ACC_HPI2S_INT1_DISABLE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 281 #define LSM303C_ACC_HPI2S_INT1_ENABLE ((uint8_t)0x01)
EricLew 0:ad9dfc0179dc 282 #define LSM303C_ACC_HPI2S_INT2_DISABLE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 283 #define LSM303C_ACC_HPI2S_INT2_ENABLE ((uint8_t)0x02)
EricLew 0:ad9dfc0179dc 284 /**
EricLew 0:ad9dfc0179dc 285 * @}
EricLew 0:ad9dfc0179dc 286 */
EricLew 0:ad9dfc0179dc 287
EricLew 0:ad9dfc0179dc 288 /** @defgroup Acc_Interrupt1_Configuration_definition
EricLew 0:ad9dfc0179dc 289 * @{
EricLew 0:ad9dfc0179dc 290 */
EricLew 0:ad9dfc0179dc 291 #define LSM303C_IT1_CLICK ((uint8_t)0x80)
EricLew 0:ad9dfc0179dc 292 #define LSM303C_IT1_AOI1 ((uint8_t)0x40)
EricLew 0:ad9dfc0179dc 293 #define LSM303C_IT1_AOI2 ((uint8_t)0x20)
EricLew 0:ad9dfc0179dc 294 #define LSM303C_IT1_DRY1 ((uint8_t)0x10)
EricLew 0:ad9dfc0179dc 295 #define LSM303C_IT1_DRY2 ((uint8_t)0x08)
EricLew 0:ad9dfc0179dc 296 #define LSM303C_IT1_WTM ((uint8_t)0x04)
EricLew 0:ad9dfc0179dc 297 #define LSM303C_IT1_OVERRUN ((uint8_t)0x02)
EricLew 0:ad9dfc0179dc 298 /**
EricLew 0:ad9dfc0179dc 299 * @}
EricLew 0:ad9dfc0179dc 300 */
EricLew 0:ad9dfc0179dc 301
EricLew 0:ad9dfc0179dc 302 /** @defgroup Acc_Interrupt2_Configuration_definition
EricLew 0:ad9dfc0179dc 303 * @{
EricLew 0:ad9dfc0179dc 304 */
EricLew 0:ad9dfc0179dc 305 #define LSM303C_IT2_CLICK ((uint8_t)0x80)
EricLew 0:ad9dfc0179dc 306 #define LSM303C_IT2_INT1 ((uint8_t)0x40)
EricLew 0:ad9dfc0179dc 307 #define LSM303C_IT2_INT2 ((uint8_t)0x20)
EricLew 0:ad9dfc0179dc 308 #define LSM303C_IT2_BOOT ((uint8_t)0x10)
EricLew 0:ad9dfc0179dc 309 #define LSM303C_IT2_ACT ((uint8_t)0x08)
EricLew 0:ad9dfc0179dc 310 #define LSM303C_IT2_HLACTIVE ((uint8_t)0x02)
EricLew 0:ad9dfc0179dc 311 /**
EricLew 0:ad9dfc0179dc 312 * @}
EricLew 0:ad9dfc0179dc 313 */
EricLew 0:ad9dfc0179dc 314
EricLew 0:ad9dfc0179dc 315 /** @defgroup Acc_INT_Combination_Status
EricLew 0:ad9dfc0179dc 316 * @{
EricLew 0:ad9dfc0179dc 317 */
EricLew 0:ad9dfc0179dc 318 #define LSM303C_OR_COMBINATION ((uint8_t)0x00) /*!< OR combination of enabled IRQs */
EricLew 0:ad9dfc0179dc 319 #define LSM303C_AND_COMBINATION ((uint8_t)0x80) /*!< AND combination of enabled IRQs */
EricLew 0:ad9dfc0179dc 320 #define LSM303C_MOV_RECOGNITION ((uint8_t)0x40) /*!< 6D movement recognition */
EricLew 0:ad9dfc0179dc 321 #define LSM303C_POS_RECOGNITION ((uint8_t)0xC0) /*!< 6D position recognition */
EricLew 0:ad9dfc0179dc 322 /**
EricLew 0:ad9dfc0179dc 323 * @}
EricLew 0:ad9dfc0179dc 324 */
EricLew 0:ad9dfc0179dc 325
EricLew 0:ad9dfc0179dc 326 /** @defgroup Acc_INT_Axes
EricLew 0:ad9dfc0179dc 327 * @{
EricLew 0:ad9dfc0179dc 328 */
EricLew 0:ad9dfc0179dc 329 #define LSM303C_Z_HIGH ((uint8_t)0x20) /*!< Z High enabled IRQs */
EricLew 0:ad9dfc0179dc 330 #define LSM303C_Z_LOW ((uint8_t)0x10) /*!< Z low enabled IRQs */
EricLew 0:ad9dfc0179dc 331 #define LSM303C_Y_HIGH ((uint8_t)0x08) /*!< Y High enabled IRQs */
EricLew 0:ad9dfc0179dc 332 #define LSM303C_Y_LOW ((uint8_t)0x04) /*!< Y low enabled IRQs */
EricLew 0:ad9dfc0179dc 333 #define LSM303C_X_HIGH ((uint8_t)0x02) /*!< X High enabled IRQs */
EricLew 0:ad9dfc0179dc 334 #define LSM303C_X_LOW ((uint8_t)0x01) /*!< X low enabled IRQs */
EricLew 0:ad9dfc0179dc 335 /**
EricLew 0:ad9dfc0179dc 336 * @}
EricLew 0:ad9dfc0179dc 337 */
EricLew 0:ad9dfc0179dc 338
EricLew 0:ad9dfc0179dc 339 /** @defgroup Acc_INT_Click
EricLew 0:ad9dfc0179dc 340 * @{
EricLew 0:ad9dfc0179dc 341 */
EricLew 0:ad9dfc0179dc 342 #define LSM303C_Z_DOUBLE_CLICK ((uint8_t)0x20) /*!< Z double click IRQs */
EricLew 0:ad9dfc0179dc 343 #define LSM303C_Z_SINGLE_CLICK ((uint8_t)0x10) /*!< Z single click IRQs */
EricLew 0:ad9dfc0179dc 344 #define LSM303C_Y_DOUBLE_CLICK ((uint8_t)0x08) /*!< Y double click IRQs */
EricLew 0:ad9dfc0179dc 345 #define LSM303C_Y_SINGLE_CLICK ((uint8_t)0x04) /*!< Y single click IRQs */
EricLew 0:ad9dfc0179dc 346 #define LSM303C_X_DOUBLE_CLICK ((uint8_t)0x02) /*!< X double click IRQs */
EricLew 0:ad9dfc0179dc 347 #define LSM303C_X_SINGLE_CLICK ((uint8_t)0x01) /*!< X single click IRQs */
EricLew 0:ad9dfc0179dc 348 /**
EricLew 0:ad9dfc0179dc 349 * @}
EricLew 0:ad9dfc0179dc 350 */
EricLew 0:ad9dfc0179dc 351
EricLew 0:ad9dfc0179dc 352 /** @defgroup Acc_INT1_Interrupt_status
EricLew 0:ad9dfc0179dc 353 * @{
EricLew 0:ad9dfc0179dc 354 */
EricLew 0:ad9dfc0179dc 355 #define LSM303C_INT1INTERRUPT_DISABLE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 356 #define LSM303C_INT1INTERRUPT_ENABLE ((uint8_t)0x80)
EricLew 0:ad9dfc0179dc 357 /**
EricLew 0:ad9dfc0179dc 358 * @}
EricLew 0:ad9dfc0179dc 359 */
EricLew 0:ad9dfc0179dc 360
EricLew 0:ad9dfc0179dc 361 /** @defgroup Acc_INT1_Interrupt_ActiveEdge
EricLew 0:ad9dfc0179dc 362 * @{
EricLew 0:ad9dfc0179dc 363 */
EricLew 0:ad9dfc0179dc 364 #define LSM303C_INT1INTERRUPT_LOW_EDGE ((uint8_t)0x20)
EricLew 0:ad9dfc0179dc 365 #define LSM303C_INT1INTERRUPT_HIGH_EDGE ((uint8_t)0x00)
EricLew 0:ad9dfc0179dc 366 /**
EricLew 0:ad9dfc0179dc 367 * @}
EricLew 0:ad9dfc0179dc 368 */
EricLew 0:ad9dfc0179dc 369
EricLew 0:ad9dfc0179dc 370
EricLew 0:ad9dfc0179dc 371 /** @defgroup Mag_Temperature_Sensor
EricLew 0:ad9dfc0179dc 372 * @{
EricLew 0:ad9dfc0179dc 373 */
EricLew 0:ad9dfc0179dc 374 #define LSM303C_MAG_TEMPSENSOR_ENABLE ((uint8_t) 0x80) /*!< Temp sensor Enable */
EricLew 0:ad9dfc0179dc 375 #define LSM303C_MAG_TEMPSENSOR_DISABLE ((uint8_t) 0x00) /*!< Temp sensor Disable */
EricLew 0:ad9dfc0179dc 376 /**
EricLew 0:ad9dfc0179dc 377 * @}
EricLew 0:ad9dfc0179dc 378 */
EricLew 0:ad9dfc0179dc 379
EricLew 0:ad9dfc0179dc 380 /** @defgroup Mag_XY-axis_Operating_Mode
EricLew 0:ad9dfc0179dc 381 * @{
EricLew 0:ad9dfc0179dc 382 */
EricLew 0:ad9dfc0179dc 383 #define LSM303C_MAG_OM_XY_LOWPOWER ((uint8_t) 0x00 << 5)
EricLew 0:ad9dfc0179dc 384 #define LSM303C_MAG_OM_XY_MEDIUM ((uint8_t) 0x01 << 5)
EricLew 0:ad9dfc0179dc 385 #define LSM303C_MAG_OM_XY_HIGH ((uint8_t) 0x02 << 5)
EricLew 0:ad9dfc0179dc 386 #define LSM303C_MAG_OM_XY_ULTRAHIGH ((uint8_t) 0x03 << 5)
EricLew 0:ad9dfc0179dc 387
EricLew 0:ad9dfc0179dc 388 /**
EricLew 0:ad9dfc0179dc 389 * @}
EricLew 0:ad9dfc0179dc 390 */
EricLew 0:ad9dfc0179dc 391
EricLew 0:ad9dfc0179dc 392
EricLew 0:ad9dfc0179dc 393 /** @defgroup Mag_Data_Rate
EricLew 0:ad9dfc0179dc 394 * @{
EricLew 0:ad9dfc0179dc 395 */
EricLew 0:ad9dfc0179dc 396 #define LSM303C_MAG_ODR_0_625_HZ ((uint8_t) 0x00 << 2) /*!< Output Data Rate = 0.625 Hz */
EricLew 0:ad9dfc0179dc 397 #define LSM303C_MAG_ODR_1_25_HZ ((uint8_t) 0x01 << 2) /*!< Output Data Rate = 1.25 Hz */
EricLew 0:ad9dfc0179dc 398 #define LSM303C_MAG_ODR_2_5_HZ ((uint8_t) 0x02 << 2) /*!< Output Data Rate = 2.5 Hz */
EricLew 0:ad9dfc0179dc 399 #define LSM303C_MAG_ODR_5_0_HZ ((uint8_t) 0x03 << 2) /*!< Output Data Rate = 5.0 Hz */
EricLew 0:ad9dfc0179dc 400 #define LSM303C_MAG_ODR_10_HZ ((uint8_t) 0x04 << 2) /*!< Output Data Rate = 10 Hz */
EricLew 0:ad9dfc0179dc 401 #define LSM303C_MAG_ODR_20_HZ ((uint8_t) 0x05 << 2) /*!< Output Data Rate = 20 Hz */
EricLew 0:ad9dfc0179dc 402 #define LSM303C_MAG_ODR_40_HZ ((uint8_t) 0x06 << 2) /*!< Output Data Rate = 40 Hz */
EricLew 0:ad9dfc0179dc 403 #define LSM303C_MAG_ODR_80_HZ ((uint8_t) 0x07 << 2) /*!< Output Data Rate = 80 Hz */
EricLew 0:ad9dfc0179dc 404 /**
EricLew 0:ad9dfc0179dc 405 * @}
EricLew 0:ad9dfc0179dc 406 */
EricLew 0:ad9dfc0179dc 407
EricLew 0:ad9dfc0179dc 408 /** @defgroup Mag_Data_Rate
EricLew 0:ad9dfc0179dc 409 * @{
EricLew 0:ad9dfc0179dc 410 */
EricLew 0:ad9dfc0179dc 411 #define LMS303C_MAG_SELFTEST_DISABLE ((uint8_t 0x00)
EricLew 0:ad9dfc0179dc 412 #define LMS303C_MAG_SELFTEST_ENABLE ((uint8_t 0x01)
EricLew 0:ad9dfc0179dc 413
EricLew 0:ad9dfc0179dc 414 /** @defgroup Mag_Full_Scale
EricLew 0:ad9dfc0179dc 415 * @{
EricLew 0:ad9dfc0179dc 416 */
EricLew 0:ad9dfc0179dc 417 #define LSM303C_MAG_FS_DEFAULT ((uint8_t) 0x00 << 5)
EricLew 0:ad9dfc0179dc 418 #define LSM303C_MAG_FS_16_GA ((uint8_t) 0x03 << 5) /*!< Full scale = ±16 Gauss */
EricLew 0:ad9dfc0179dc 419 /**
EricLew 0:ad9dfc0179dc 420 * @}
EricLew 0:ad9dfc0179dc 421 */
EricLew 0:ad9dfc0179dc 422
EricLew 0:ad9dfc0179dc 423 /** @defgroup Mag_Reboot
EricLew 0:ad9dfc0179dc 424 * @{
EricLew 0:ad9dfc0179dc 425 */
EricLew 0:ad9dfc0179dc 426 #define LSM303C_MAG_REBOOT_DEFAULT ((uint8_t) 0x00 << 3)
EricLew 0:ad9dfc0179dc 427 #define LSM303C_MAG_REBOOT_ENABLE ((uint8_t) 0x01 << 3)
EricLew 0:ad9dfc0179dc 428 /**
EricLew 0:ad9dfc0179dc 429 * @}
EricLew 0:ad9dfc0179dc 430 */
EricLew 0:ad9dfc0179dc 431
EricLew 0:ad9dfc0179dc 432 /** @defgroup Mag_Soft_reset
EricLew 0:ad9dfc0179dc 433 * @{
EricLew 0:ad9dfc0179dc 434 */
EricLew 0:ad9dfc0179dc 435 #define LSM303C_MAG_SOFT_RESET_DEFAULT ((uint8_t) 0x00 << 2)
EricLew 0:ad9dfc0179dc 436 #define LSM303C_MAG_SOFT_RESET_ENABLE ((uint8_t) 0x01 << 2)
EricLew 0:ad9dfc0179dc 437 /**
EricLew 0:ad9dfc0179dc 438 * @}
EricLew 0:ad9dfc0179dc 439 */
EricLew 0:ad9dfc0179dc 440
EricLew 0:ad9dfc0179dc 441 /** @defgroup Mag_Communication_Mode
EricLew 0:ad9dfc0179dc 442 * @{
EricLew 0:ad9dfc0179dc 443 */
EricLew 0:ad9dfc0179dc 444 #define LSM303C_MAG_I2C_MODE ((uint8_t) 0x80)
EricLew 0:ad9dfc0179dc 445 #define LSM303C_MAG_SPI_MODE ((uint8_t) 0x04)
EricLew 0:ad9dfc0179dc 446 /**
EricLew 0:ad9dfc0179dc 447 * @}
EricLew 0:ad9dfc0179dc 448 */
EricLew 0:ad9dfc0179dc 449
EricLew 0:ad9dfc0179dc 450 /** @defgroup Mag_Lowpower_mode_config
EricLew 0:ad9dfc0179dc 451 * @{
EricLew 0:ad9dfc0179dc 452 */
EricLew 0:ad9dfc0179dc 453 #define LSM303C_MAG_CONFIG_NORMAL_MODE ((uint8_t) 0x00)
EricLew 0:ad9dfc0179dc 454 #define LSM303C_MAG_CONFIG_LOWPOWER_MODE ((uint8_t) 0x20)
EricLew 0:ad9dfc0179dc 455 /**
EricLew 0:ad9dfc0179dc 456 * @}
EricLew 0:ad9dfc0179dc 457 */
EricLew 0:ad9dfc0179dc 458
EricLew 0:ad9dfc0179dc 459 /** @defgroup Mag_Operation_Mode
EricLew 0:ad9dfc0179dc 460 * @{
EricLew 0:ad9dfc0179dc 461 */
EricLew 0:ad9dfc0179dc 462 #define LSM303C_MAG_SELECTION_MODE ((uint8_t) 0x03)
EricLew 0:ad9dfc0179dc 463 #define LSM303C_MAG_CONTINUOUS_MODE ((uint8_t) 0x00)
EricLew 0:ad9dfc0179dc 464 #define LSM303C_MAG_SINGLE_MODE ((uint8_t) 0x01)
EricLew 0:ad9dfc0179dc 465 #define LSM303C_MAG_POWERDOWN1_MODE ((uint8_t) 0x02)
EricLew 0:ad9dfc0179dc 466 #define LSM303C_MAG_POWERDOWN2_MODE ((uint8_t) 0x03)
EricLew 0:ad9dfc0179dc 467
EricLew 0:ad9dfc0179dc 468 /**
EricLew 0:ad9dfc0179dc 469 * @}
EricLew 0:ad9dfc0179dc 470 */
EricLew 0:ad9dfc0179dc 471
EricLew 0:ad9dfc0179dc 472 /** @defgroup Mag_Z-axis_Operation_Mode
EricLew 0:ad9dfc0179dc 473 * @{
EricLew 0:ad9dfc0179dc 474 */
EricLew 0:ad9dfc0179dc 475 #define LSM303C_MAG_OM_Z_LOWPOWER ((uint8_t) 0x00 << 2)
EricLew 0:ad9dfc0179dc 476 #define LSM303C_MAG_OM_Z_MEDIUM ((uint8_t) 0x01 << 2)
EricLew 0:ad9dfc0179dc 477 #define LSM303C_MAG_OM_Z_HIGH ((uint8_t) 0x02 << 2)
EricLew 0:ad9dfc0179dc 478 #define LSM303C_MAG_OM_Z_ULTRAHIGH ((uint8_t) 0x03 << 2)
EricLew 0:ad9dfc0179dc 479
EricLew 0:ad9dfc0179dc 480 /**
EricLew 0:ad9dfc0179dc 481 * @}
EricLew 0:ad9dfc0179dc 482 */
EricLew 0:ad9dfc0179dc 483
EricLew 0:ad9dfc0179dc 484 /** @defgroup Mag_Big_little-endian_selection
EricLew 0:ad9dfc0179dc 485 * @{
EricLew 0:ad9dfc0179dc 486 */
EricLew 0:ad9dfc0179dc 487 #define LSM303C_MAG_BLE_LSB ((uint8_t) 0x00)
EricLew 0:ad9dfc0179dc 488 #define LSM303C_MAG_BLE_MSB ((uint8_t) 0x02)
EricLew 0:ad9dfc0179dc 489 /**
EricLew 0:ad9dfc0179dc 490 * @}
EricLew 0:ad9dfc0179dc 491 */
EricLew 0:ad9dfc0179dc 492
EricLew 0:ad9dfc0179dc 493 /** @defgroup Mag_Bloc_update_magnetic_data
EricLew 0:ad9dfc0179dc 494 * @{
EricLew 0:ad9dfc0179dc 495 */
EricLew 0:ad9dfc0179dc 496 #define LSM303C_MAG_BDU_CONTINUOUS ((uint8_t) 0x00)
EricLew 0:ad9dfc0179dc 497 #define LSM303C_MAG_BDU_MSBLSB ((uint8_t) 0x40)
EricLew 0:ad9dfc0179dc 498 /**
EricLew 0:ad9dfc0179dc 499 * @}
EricLew 0:ad9dfc0179dc 500 */
EricLew 0:ad9dfc0179dc 501
EricLew 0:ad9dfc0179dc 502 /**
EricLew 0:ad9dfc0179dc 503 * @defgroup Magnetometer_Sensitivity
EricLew 0:ad9dfc0179dc 504 * @{
EricLew 0:ad9dfc0179dc 505 */
EricLew 0:ad9dfc0179dc 506 #define LSM303C_M_SENSITIVITY_XY_1_3Ga 1100 /*!< magnetometer X Y axes sensitivity for 1.3 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 507 #define LSM303C_M_SENSITIVITY_XY_1_9Ga 855 /*!< magnetometer X Y axes sensitivity for 1.9 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 508 #define LSM303C_M_SENSITIVITY_XY_2_5Ga 670 /*!< magnetometer X Y axes sensitivity for 2.5 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 509 #define LSM303C_M_SENSITIVITY_XY_4Ga 450 /*!< magnetometer X Y axes sensitivity for 4 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 510 #define LSM303C_M_SENSITIVITY_XY_4_7Ga 400 /*!< magnetometer X Y axes sensitivity for 4.7 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 511 #define LSM303C_M_SENSITIVITY_XY_5_6Ga 330 /*!< magnetometer X Y axes sensitivity for 5.6 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 512 #define LSM303C_M_SENSITIVITY_XY_8_1Ga 230 /*!< magnetometer X Y axes sensitivity for 8.1 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 513 #define LSM303C_M_SENSITIVITY_Z_1_3Ga 980 /*!< magnetometer Z axis sensitivity for 1.3 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 514 #define LSM303C_M_SENSITIVITY_Z_1_9Ga 760 /*!< magnetometer Z axis sensitivity for 1.9 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 515 #define LSM303C_M_SENSITIVITY_Z_2_5Ga 600 /*!< magnetometer Z axis sensitivity for 2.5 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 516 #define LSM303C_M_SENSITIVITY_Z_4Ga 400 /*!< magnetometer Z axis sensitivity for 4 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 517 #define LSM303C_M_SENSITIVITY_Z_4_7Ga 355 /*!< magnetometer Z axis sensitivity for 4.7 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 518 #define LSM303C_M_SENSITIVITY_Z_5_6Ga 295 /*!< magnetometer Z axis sensitivity for 5.6 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 519 #define LSM303C_M_SENSITIVITY_Z_8_1Ga 205 /*!< magnetometer Z axis sensitivity for 8.1 Ga full scale [LSB/Ga] */
EricLew 0:ad9dfc0179dc 520 /**
EricLew 0:ad9dfc0179dc 521 * @}
EricLew 0:ad9dfc0179dc 522 */
EricLew 0:ad9dfc0179dc 523
EricLew 0:ad9dfc0179dc 524 /** @defgroup Mag_Working_Mode
EricLew 0:ad9dfc0179dc 525 * @{
EricLew 0:ad9dfc0179dc 526 */
EricLew 0:ad9dfc0179dc 527 #define LSM303C_CONTINUOUS_CONVERSION ((uint8_t) 0x00) /*!< Continuous-Conversion Mode */
EricLew 0:ad9dfc0179dc 528 #define LSM303C_SINGLE_CONVERSION ((uint8_t) 0x01) /*!< Single-Conversion Mode */
EricLew 0:ad9dfc0179dc 529 #define LSM303C_SLEEP ((uint8_t) 0x02) /*!< Sleep Mode */
EricLew 0:ad9dfc0179dc 530 /**
EricLew 0:ad9dfc0179dc 531 * @}
EricLew 0:ad9dfc0179dc 532 */
EricLew 0:ad9dfc0179dc 533
EricLew 0:ad9dfc0179dc 534
EricLew 0:ad9dfc0179dc 535 /** @defgroup LSM303C_Exported_Functions
EricLew 0:ad9dfc0179dc 536 * @{
EricLew 0:ad9dfc0179dc 537 */
EricLew 0:ad9dfc0179dc 538
EricLew 0:ad9dfc0179dc 539
EricLew 0:ad9dfc0179dc 540 /* ACC driver structure */
EricLew 0:ad9dfc0179dc 541 extern ACCELERO_DrvTypeDef Lsm303cDrv_accelero;
EricLew 0:ad9dfc0179dc 542 extern MAGNETO_DrvTypeDef Lsm303cDrv_magneto;
EricLew 0:ad9dfc0179dc 543
EricLew 0:ad9dfc0179dc 544 /**
EricLew 0:ad9dfc0179dc 545 * @}
EricLew 0:ad9dfc0179dc 546 */
EricLew 0:ad9dfc0179dc 547
EricLew 0:ad9dfc0179dc 548 /**
EricLew 0:ad9dfc0179dc 549 * @}
EricLew 0:ad9dfc0179dc 550 */
EricLew 0:ad9dfc0179dc 551
EricLew 0:ad9dfc0179dc 552 /**
EricLew 0:ad9dfc0179dc 553 * @}
EricLew 0:ad9dfc0179dc 554 */
EricLew 0:ad9dfc0179dc 555
EricLew 0:ad9dfc0179dc 556 /**
EricLew 0:ad9dfc0179dc 557 * @}
EricLew 0:ad9dfc0179dc 558 */
EricLew 0:ad9dfc0179dc 559
EricLew 0:ad9dfc0179dc 560 #ifdef __cplusplus
EricLew 0:ad9dfc0179dc 561 }
EricLew 0:ad9dfc0179dc 562 #endif
EricLew 0:ad9dfc0179dc 563
EricLew 0:ad9dfc0179dc 564 #endif /* __LSM303C_H */
EricLew 0:ad9dfc0179dc 565
EricLew 0:ad9dfc0179dc 566 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
EricLew 0:ad9dfc0179dc 567