Mercurial > public > ostc4
comparison Small_CPU/Inc/compass_LSM303D.h @ 38:5f11787b4f42
include in ostc4 repository
| author | heinrichsweikamp |
|---|---|
| date | Sat, 28 Apr 2018 11:52:34 +0200 |
| parents | |
| children | c3d511365552 |
comparison
equal
deleted
inserted
replaced
| 37:ccc45c0e1ea2 | 38:5f11787b4f42 |
|---|---|
| 1 /** | |
| 2 ****************************************************************************** | |
| 3 * @file compass_LSM303D.h | |
| 4 * @author heinrichs weikamp gmbh, based on PX4 lsm303d.cpp | |
| 5 * @date 15-March-2016 | |
| 6 * @version V0.1.0 | |
| 7 * @since 15-March-2016 | |
| 8 * @brief STMicroelectronics LSM303D accelerometer & magnetometer driver | |
| 9 * | |
| 10 @verbatim | |
| 11 ============================================================================== | |
| 12 ##### How to use ##### | |
| 13 ============================================================================== | |
| 14 @endverbatim | |
| 15 ****************************************************************************** | |
| 16 * @attention | |
| 17 * | |
| 18 * <h2><center>© COPYRIGHT(c) 2016 heinrichs weikamp</center></h2> | |
| 19 * | |
| 20 ****************************************************************************** | |
| 21 */ | |
| 22 | |
| 23 /* Define to prevent recursive inclusion -------------------------------------*/ | |
| 24 #ifndef COMPASS_LSM303D_H | |
| 25 #define COMPASS_LSM303D_H | |
| 26 | |
| 27 /* Exported constants --------------------------------------------------------*/ | |
| 28 | |
| 29 #define WHO_AM_I 0x0F // device identification register - default value | |
| 30 #define WHOIAM_VALUE (0x49) // Who Am I default value | |
| 31 | |
| 32 #define ADDR_OUT_TEMP_L 0x05 | |
| 33 #define ADDR_OUT_TEMP_H 0x06 | |
| 34 #define ADDR_STATUS_M 0x07 | |
| 35 #define ADDR_OUT_X_L_M 0x08 | |
| 36 #define ADDR_OUT_X_H_M 0x09 | |
| 37 #define ADDR_OUT_Y_L_M 0x0A | |
| 38 #define ADDR_OUT_Y_H_M 0x0B | |
| 39 #define ADDR_OUT_Z_L_M 0x0C | |
| 40 #define ADDR_OUT_Z_H_M 0x0D | |
| 41 | |
| 42 #define ADDR_INT_CTRL_M 0x12 | |
| 43 #define ADDR_INT_SRC_M 0x13 | |
| 44 | |
| 45 #define ADDR_INT_THS_L_M 0x14 | |
| 46 #define ADDR_INT_THS_H_M 0x15 | |
| 47 | |
| 48 #define ADDR_OFFSET_X_L_M 0x16 | |
| 49 #define ADDR_OFFSET_X_H_M 0x17 | |
| 50 #define ADDR_OFFSET_Y_L_M 0x18 | |
| 51 #define ADDR_OFFSET_Y_H_M 0x19 | |
| 52 #define ADDR_OFFSET_Z_L_M 0x1a | |
| 53 #define ADDR_OFFSET_Z_H_M 0x1b | |
| 54 | |
| 55 #define ADDR_REFERENCE_X 0x1c | |
| 56 #define ADDR_REFERENCE_Y 0x1d | |
| 57 #define ADDR_REFERENCE_Z 0x1e | |
| 58 | |
| 59 #define ADDR_STATUS_A 0x27 | |
| 60 #define ADDR_OUT_X_L_A 0x28 | |
| 61 #define ADDR_OUT_X_H_A 0x29 | |
| 62 #define ADDR_OUT_Y_L_A 0x2A | |
| 63 #define ADDR_OUT_Y_H_A 0x2B | |
| 64 #define ADDR_OUT_Z_L_A 0x2C | |
| 65 #define ADDR_OUT_Z_H_A 0x2D | |
| 66 | |
| 67 #define ADDR_CTRL_REG0 0x1F | |
| 68 #define ADDR_CTRL_REG1 0x20 | |
| 69 #define ADDR_CTRL_REG2 0x21 | |
| 70 #define ADDR_CTRL_REG3 0x22 | |
| 71 #define ADDR_CTRL_REG4 0x23 | |
| 72 #define ADDR_CTRL_REG5 0x24 | |
| 73 #define ADDR_CTRL_REG6 0x25 | |
| 74 #define ADDR_CTRL_REG7 0x26 | |
| 75 | |
| 76 #define ADDR_FIFO_CTRL 0x2e | |
| 77 #define ADDR_FIFO_SRC 0x2f | |
| 78 | |
| 79 #define ADDR_IG_CFG1 0x30 | |
| 80 #define ADDR_IG_SRC1 0x31 | |
| 81 #define ADDR_IG_THS1 0x32 | |
| 82 #define ADDR_IG_DUR1 0x33 | |
| 83 #define ADDR_IG_CFG2 0x34 | |
| 84 #define ADDR_IG_SRC2 0x35 | |
| 85 #define ADDR_IG_THS2 0x36 | |
| 86 #define ADDR_IG_DUR2 0x37 | |
| 87 #define ADDR_CLICK_CFG 0x38 | |
| 88 #define ADDR_CLICK_SRC 0x39 | |
| 89 #define ADDR_CLICK_THS 0x3a | |
| 90 #define ADDR_TIME_LIMIT 0x3b | |
| 91 #define ADDR_TIME_LATENCY 0x3c | |
| 92 #define ADDR_TIME_WINDOW 0x3d | |
| 93 #define ADDR_ACT_THS 0x3e | |
| 94 #define ADDR_ACT_DUR 0x3f | |
| 95 | |
| 96 #define REG1_RATE_BITS_A ((1<<7) | (1<<6) | (1<<5) | (1<<4)) | |
| 97 #define REG1_POWERDOWN_A ((0<<7) | (0<<6) | (0<<5) | (0<<4)) | |
| 98 #define REG1_RATE_3_125HZ_A ((0<<7) | (0<<6) | (0<<5) | (1<<4)) | |
| 99 #define REG1_RATE_6_25HZ_A ((0<<7) | (0<<6) | (1<<5) | (0<<4)) | |
| 100 #define REG1_RATE_12_5HZ_A ((0<<7) | (0<<6) | (1<<5) | (1<<4)) | |
| 101 #define REG1_RATE_25HZ_A ((0<<7) | (1<<6) | (0<<5) | (0<<4)) | |
| 102 #define REG1_RATE_50HZ_A ((0<<7) | (1<<6) | (0<<5) | (1<<4)) | |
| 103 #define REG1_RATE_100HZ_A ((0<<7) | (1<<6) | (1<<5) | (0<<4)) | |
| 104 #define REG1_RATE_200HZ_A ((0<<7) | (1<<6) | (1<<5) | (1<<4)) | |
| 105 #define REG1_RATE_400HZ_A ((1<<7) | (0<<6) | (0<<5) | (0<<4)) | |
| 106 #define REG1_RATE_800HZ_A ((1<<7) | (0<<6) | (0<<5) | (1<<4)) | |
| 107 #define REG1_RATE_1600HZ_A ((1<<7) | (0<<6) | (1<<5) | (0<<4)) | |
| 108 | |
| 109 #define REG1_BDU_UPDATE (1<<3) | |
| 110 #define REG1_Z_ENABLE_A (1<<2) | |
| 111 #define REG1_Y_ENABLE_A (1<<1) | |
| 112 #define REG1_X_ENABLE_A (1<<0) | |
| 113 | |
| 114 #define REG2_ANTIALIAS_FILTER_BW_BITS_A ((1<<7) | (1<<6)) | |
| 115 #define REG2_AA_FILTER_BW_773HZ_A ((0<<7) | (0<<6)) | |
| 116 #define REG2_AA_FILTER_BW_194HZ_A ((0<<7) | (1<<6)) | |
| 117 #define REG2_AA_FILTER_BW_362HZ_A ((1<<7) | (0<<6)) | |
| 118 #define REG2_AA_FILTER_BW_50HZ_A ((1<<7) | (1<<6)) | |
| 119 | |
| 120 #define REG2_FULL_SCALE_BITS_A ((1<<5) | (1<<4) | (1<<3)) | |
| 121 #define REG2_FULL_SCALE_2G_A ((0<<5) | (0<<4) | (0<<3)) | |
| 122 #define REG2_FULL_SCALE_4G_A ((0<<5) | (0<<4) | (1<<3)) | |
| 123 #define REG2_FULL_SCALE_6G_A ((0<<5) | (1<<4) | (0<<3)) | |
| 124 #define REG2_FULL_SCALE_8G_A ((0<<5) | (1<<4) | (1<<3)) | |
| 125 #define REG2_FULL_SCALE_16G_A ((1<<5) | (0<<4) | (0<<3)) | |
| 126 | |
| 127 #define REG5_ENABLE_T (1<<7) | |
| 128 | |
| 129 #define REG5_RES_HIGH_M ((1<<6) | (1<<5)) | |
| 130 #define REG5_RES_LOW_M ((0<<6) | (0<<5)) | |
| 131 | |
| 132 #define REG5_RATE_BITS_M ((1<<4) | (1<<3) | (1<<2)) | |
| 133 #define REG5_RATE_3_125HZ_M ((0<<4) | (0<<3) | (0<<2)) | |
| 134 #define REG5_RATE_6_25HZ_M ((0<<4) | (0<<3) | (1<<2)) | |
| 135 #define REG5_RATE_12_5HZ_M ((0<<4) | (1<<3) | (0<<2)) | |
| 136 #define REG5_RATE_25HZ_M ((0<<4) | (1<<3) | (1<<2)) | |
| 137 #define REG5_RATE_50HZ_M ((1<<4) | (0<<3) | (0<<2)) | |
| 138 #define REG5_RATE_100HZ_M ((1<<4) | (0<<3) | (1<<2)) | |
| 139 #define REG5_RATE_DO_NOT_USE_M ((1<<4) | (1<<3) | (0<<2)) | |
| 140 | |
| 141 #define REG6_FULL_SCALE_BITS_M ((1<<6) | (1<<5)) | |
| 142 #define REG6_FULL_SCALE_2GA_M ((0<<6) | (0<<5)) | |
| 143 #define REG6_FULL_SCALE_4GA_M ((0<<6) | (1<<5)) | |
| 144 #define REG6_FULL_SCALE_8GA_M ((1<<6) | (0<<5)) | |
| 145 #define REG6_FULL_SCALE_12GA_M ((1<<6) | (1<<5)) | |
| 146 | |
| 147 #define REG7_CONT_MODE_M ((0<<1) | (0<<0)) | |
| 148 | |
| 149 #define REG_STATUS_A_NEW_ZYXADA 0x08 | |
| 150 | |
| 151 #define INT_CTRL_M 0x12 | |
| 152 #define INT_SRC_M 0x13 | |
| 153 | |
| 154 /* default values for this device */ | |
| 155 #define LSM303D_ACCEL_DEFAULT_RANGE_G 2 | |
| 156 #define LSM303D_ACCEL_DEFAULT_RATE 10 | |
| 157 | |
| 158 #define LSM303D_ACCEL_DEFAULT_ONCHIP_FILTER_FREQ 50 | |
| 159 #define LSM303D_ACCEL_DEFAULT_DRIVER_FILTER_FREQ 30 | |
| 160 #define LSM303D_ACCEL_MAX_OUTPUT_RATE 280 | |
| 161 | |
| 162 #define LSM303D_MAG_DEFAULT_RANGE_GA 12 | |
| 163 #define LSM303D_MAG_DEFAULT_RATE 10 | |
| 164 | |
| 165 #define LSM303D_ONE_G 9.80665f | |
| 166 | |
| 167 | |
| 168 #endif /* COMPASS_LSM303D_H */ | |
| 169 | |
| 170 /******************* (C) COPYRIGHT 2016 heinrichs weikamp *****END OF FILE****/ |
