BSP Drivers
Dependencies: CMSIS_STM32L4xx CMSIS_DSP_401 STM32L4xx_HAL_Driver
Components/lsm303c/lsm303c.h@0:ad9dfc0179dc, 2015-11-02 (annotated)
- Committer:
- EricLew
- Date:
- Mon Nov 02 19:38:36 2015 +0000
- Revision:
- 0:ad9dfc0179dc
commit
Who changed what in which revision?
User | Revision | Line number | New 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>© 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 |