![](/media/cache/profiles/bfe3d668a830f1ad9c3a627efecf14e7.jpg.50x50_q85.jpg)
lora sensnode
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
app/MPU9250.h@1:e67174cc4953, 2016-08-10 (annotated)
- Committer:
- socie123
- Date:
- Wed Aug 10 12:54:10 2016 +0000
- Revision:
- 1:e67174cc4953
- Parent:
- 0:f2815503561f
lora sensnode
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mitea1 | 0:f2815503561f | 1 | /** |
mitea1 | 0:f2815503561f | 2 | * @file MPU9250.h |
mitea1 | 0:f2815503561f | 3 | * |
mitea1 | 0:f2815503561f | 4 | * @author Adrian |
mitea1 | 0:f2815503561f | 5 | * @date 19.05.2016 |
mitea1 | 0:f2815503561f | 6 | * |
mitea1 | 0:f2815503561f | 7 | */ |
mitea1 | 0:f2815503561f | 8 | #include "I2C_RT.h" |
mitea1 | 0:f2815503561f | 9 | #include "MPU9250Config.h" |
mitea1 | 0:f2815503561f | 10 | |
mitea1 | 0:f2815503561f | 11 | #ifndef APP_MPU9250_H_ |
mitea1 | 0:f2815503561f | 12 | #define APP_MPU9250_H_ |
mitea1 | 0:f2815503561f | 13 | |
mitea1 | 0:f2815503561f | 14 | #define MPU9250_DEFAULT_ADDRESS 0xD1 |
mitea1 | 0:f2815503561f | 15 | #define MPU9250_ALT_DEFAULT_ADDRESS 0xD2 |
mitea1 | 0:f2815503561f | 16 | |
mitea1 | 0:f2815503561f | 17 | #define MPU9250_SELF_TEST_X_GYRO 0x00 |
mitea1 | 0:f2815503561f | 18 | #define MPU9250_SELF_TEST_Y_GYRO 0x01 |
mitea1 | 0:f2815503561f | 19 | #define MPU9250_SELF_TEST_Z_GYRO 0x02 |
mitea1 | 0:f2815503561f | 20 | |
mitea1 | 0:f2815503561f | 21 | #define MPU9250_SELF_TEST_X_ACCEL 0x0D |
mitea1 | 0:f2815503561f | 22 | #define MPU9250_SELF_TEST_Y_ACCEL 0x0E |
mitea1 | 0:f2815503561f | 23 | #define MPU9250_SELF_TEST_Z_ACCEL 0x0F |
mitea1 | 0:f2815503561f | 24 | |
mitea1 | 0:f2815503561f | 25 | #define MPU9250_XG_OFFSET_H 0x13 |
mitea1 | 0:f2815503561f | 26 | #define MPU9250_XG_OFFSET_L 0x14 |
mitea1 | 0:f2815503561f | 27 | #define MPU9250_YG_OFFSET_H 0x15 |
mitea1 | 0:f2815503561f | 28 | #define MPU9250_YG_OFFSET_L 0x16 |
mitea1 | 0:f2815503561f | 29 | #define MPU9250_ZG_OFFSET_H 0x17 |
mitea1 | 0:f2815503561f | 30 | #define MPU9250_ZG_OFFSET_L 0x18 |
mitea1 | 0:f2815503561f | 31 | #define MPU9250_SMPLRT_DIV 0x19 |
mitea1 | 0:f2815503561f | 32 | #define MPU9250_CONFIG 0x1A |
mitea1 | 0:f2815503561f | 33 | #define MPU9250_GYRO_CONFIG 0x1B |
mitea1 | 0:f2815503561f | 34 | #define MPU9250_ACCEL_CONFIG 0x1C |
mitea1 | 0:f2815503561f | 35 | #define MPU9250_ACCEL_CONFIG2 0x1D |
mitea1 | 0:f2815503561f | 36 | #define MPU9250_LP_ACCEL_ODR 0x1E |
mitea1 | 0:f2815503561f | 37 | #define MPU9250_WOM_THR 0x1F |
mitea1 | 0:f2815503561f | 38 | |
mitea1 | 0:f2815503561f | 39 | #define MPU9250_FIFO_EN 0x23 |
mitea1 | 0:f2815503561f | 40 | #define MPU9250_I2C_MST_CTRL 0x24 |
mitea1 | 0:f2815503561f | 41 | #define MPU9250_I2C_SLV0_ADDR 0x25 |
mitea1 | 0:f2815503561f | 42 | #define MPU9250_I2C_SLV0_REG 0x26 |
mitea1 | 0:f2815503561f | 43 | #define MPU9250_I2C_SLV0_CTRL 0x27 |
mitea1 | 0:f2815503561f | 44 | #define MPU9250_I2C_SLV1_ADDR 0x28 |
mitea1 | 0:f2815503561f | 45 | #define MPU9250_I2C_SLV1_REG 0x29 |
mitea1 | 0:f2815503561f | 46 | #define MPU9250_I2C_SLV1_CTRL 0x2A |
mitea1 | 0:f2815503561f | 47 | #define MPU9250_I2C_SLV2_ADDR 0x2B |
mitea1 | 0:f2815503561f | 48 | #define MPU9250_I2C_SLV2_REG 0x2C |
mitea1 | 0:f2815503561f | 49 | #define MPU9250_I2C_SLV2_CTRL 0x2D |
mitea1 | 0:f2815503561f | 50 | #define MPU9250_I2C_SLV3_ADDR 0x2E |
mitea1 | 0:f2815503561f | 51 | #define MPU9250_I2C_SLV3_REG 0x2F |
mitea1 | 0:f2815503561f | 52 | #define MPU9250_I2C_SLV3_CTRL 0x30 |
mitea1 | 0:f2815503561f | 53 | #define MPU9250_I2C_SLV4_ADDR 0x31 |
mitea1 | 0:f2815503561f | 54 | #define MPU9250_I2C_SLV4_REG 0x32 |
mitea1 | 0:f2815503561f | 55 | #define MPU9250_I2C_SLV4_DO 0x33 |
mitea1 | 0:f2815503561f | 56 | #define MPU9250_I2C_SLV4_CTRL 0x34 |
mitea1 | 0:f2815503561f | 57 | #define MPU9250_I2C_SLV4_DI 0x35 |
mitea1 | 0:f2815503561f | 58 | #define MPU9250_I2C_MST_STATUS 0x36 |
mitea1 | 0:f2815503561f | 59 | #define MPU9250_INT_PIN_CFG 0x37 |
mitea1 | 0:f2815503561f | 60 | #define MPU9250_INT_ENABLE 0x38 |
mitea1 | 0:f2815503561f | 61 | |
mitea1 | 0:f2815503561f | 62 | #define MPU9250_INT_STATUS 0x3A |
mitea1 | 0:f2815503561f | 63 | #define MPU9250_ACCEL_XOUT_H 0x3B |
mitea1 | 0:f2815503561f | 64 | #define MPU9250_ACCEL_XOUT_L 0x3C |
mitea1 | 0:f2815503561f | 65 | #define MPU9250_ACCEL_YOUT_H 0x3D |
mitea1 | 0:f2815503561f | 66 | #define MPU9250_ACCEL_YOUT_L 0x3E |
mitea1 | 0:f2815503561f | 67 | #define MPU9250_ACCEL_ZOUT_H 0x3F |
mitea1 | 0:f2815503561f | 68 | #define MPU9250_ACCEL_ZOUT_L 0x40 |
mitea1 | 0:f2815503561f | 69 | #define MPU9250_TEMP_OUT_H 0x41 |
mitea1 | 0:f2815503561f | 70 | #define MPU9250_TEMP_OUT_L 0x42 |
mitea1 | 0:f2815503561f | 71 | #define MPU9250_GYRO_XOUT_H 0x43 |
mitea1 | 0:f2815503561f | 72 | #define MPU9250_GYRO_XOUT_L 0x44 |
mitea1 | 0:f2815503561f | 73 | #define MPU9250_GYRO_YOUT_H 0x45 |
mitea1 | 0:f2815503561f | 74 | #define MPU9250_GYRO_YOUT_L 0x46 |
mitea1 | 0:f2815503561f | 75 | #define MPU9250_GYRO_ZOUT_H 0x47 |
mitea1 | 0:f2815503561f | 76 | #define MPU9250_GYRO_ZOUT_L 0x48 |
mitea1 | 0:f2815503561f | 77 | #define MPU9250_EXT_SENS_DATA_00 0x49 |
mitea1 | 0:f2815503561f | 78 | #define MPU9250_EXT_SENS_DATA_01 0x4A |
mitea1 | 0:f2815503561f | 79 | #define MPU9250_EXT_SENS_DATA_02 0x4B |
mitea1 | 0:f2815503561f | 80 | #define MPU9250_EXT_SENS_DATA_03 0x4C |
mitea1 | 0:f2815503561f | 81 | #define MPU9250_EXT_SENS_DATA_04 0x4D |
mitea1 | 0:f2815503561f | 82 | #define MPU9250_EXT_SENS_DATA_05 0x4E |
mitea1 | 0:f2815503561f | 83 | #define MPU9250_EXT_SENS_DATA_06 0x4F |
mitea1 | 0:f2815503561f | 84 | #define MPU9250_EXT_SENS_DATA_07 0x50 |
mitea1 | 0:f2815503561f | 85 | #define MPU9250_EXT_SENS_DATA_08 0x51 |
mitea1 | 0:f2815503561f | 86 | #define MPU9250_EXT_SENS_DATA_09 0x52 |
mitea1 | 0:f2815503561f | 87 | #define MPU9250_EXT_SENS_DATA_10 0x53 |
mitea1 | 0:f2815503561f | 88 | #define MPU9250_EXT_SENS_DATA_11 0x54 |
mitea1 | 0:f2815503561f | 89 | #define MPU9250_EXT_SENS_DATA_12 0x55 |
mitea1 | 0:f2815503561f | 90 | #define MPU9250_EXT_SENS_DATA_13 0x56 |
mitea1 | 0:f2815503561f | 91 | #define MPU9250_EXT_SENS_DATA_14 0x57 |
mitea1 | 0:f2815503561f | 92 | #define MPU9250_EXT_SENS_DATA_15 0x58 |
mitea1 | 0:f2815503561f | 93 | #define MPU9250_EXT_SENS_DATA_16 0x59 |
mitea1 | 0:f2815503561f | 94 | #define MPU9250_EXT_SENS_DATA_17 0x5A |
mitea1 | 0:f2815503561f | 95 | #define MPU9250_EXT_SENS_DATA_18 0x5B |
mitea1 | 0:f2815503561f | 96 | #define MPU9250_EXT_SENS_DATA_19 0x5C |
mitea1 | 0:f2815503561f | 97 | #define MPU9250_EXT_SENS_DATA_20 0x5D |
mitea1 | 0:f2815503561f | 98 | #define MPU9250_EXT_SENS_DATA_21 0x5E |
mitea1 | 0:f2815503561f | 99 | #define MPU9250_EXT_SENS_DATA_22 0x5F |
mitea1 | 0:f2815503561f | 100 | #define MPU9250_EXT_SENS_DATA_23 0x60 |
mitea1 | 0:f2815503561f | 101 | |
mitea1 | 0:f2815503561f | 102 | #define MPU9250_I2C_SLV0_DO 0x63 |
mitea1 | 0:f2815503561f | 103 | #define MPU9250_I2C_SLV1_DO 0x64 |
mitea1 | 0:f2815503561f | 104 | #define MPU9250_I2C_SLV2_DO 0x65 |
mitea1 | 0:f2815503561f | 105 | #define MPU9250_I2C_SLV3_DO 0x66 |
mitea1 | 0:f2815503561f | 106 | #define MPU9250_I2C_MST_DELAY_CTRL 0x67 |
mitea1 | 0:f2815503561f | 107 | #define MPU9250_SIGNAL_PATH_RESET 0x68 |
mitea1 | 0:f2815503561f | 108 | #define MPU9250_MOT_DETECT_CTRL 0x69 |
mitea1 | 0:f2815503561f | 109 | #define MPU9250_USER_CTRL 0x6A |
mitea1 | 0:f2815503561f | 110 | #define MPU9250_PWR_MGMT_1 0x6B |
mitea1 | 0:f2815503561f | 111 | #define MPU9250_PWR_MGMT_2 0x6C |
mitea1 | 0:f2815503561f | 112 | |
mitea1 | 0:f2815503561f | 113 | #define MPU9250_FIFO_COUNTH 0x72 |
mitea1 | 0:f2815503561f | 114 | #define MPU9250_FIFO_COUNTL 0x73 |
mitea1 | 0:f2815503561f | 115 | #define MPU9250_FIFO_R_W 0x74 |
mitea1 | 0:f2815503561f | 116 | #define MPU9250_WHO_AM_I 0x75 |
mitea1 | 0:f2815503561f | 117 | #define MPU9250_XA_OFFSET_H 0x77 |
mitea1 | 0:f2815503561f | 118 | #define MPU9250_XA_OFFSET_L 0x78 |
mitea1 | 0:f2815503561f | 119 | |
mitea1 | 0:f2815503561f | 120 | #define MPU9250_YA_OFFSET_H 0x7A |
mitea1 | 0:f2815503561f | 121 | #define MPU9250_YA_OFFSET_L 0x7B |
mitea1 | 0:f2815503561f | 122 | |
mitea1 | 0:f2815503561f | 123 | #define MPU9250_ZA_OFFSET_H 0x7D |
mitea1 | 0:f2815503561f | 124 | #define MPU9250_ZA_OFFSET_L 0x7E |
mitea1 | 0:f2815503561f | 125 | |
mitea1 | 0:f2815503561f | 126 | //reset values |
mitea1 | 0:f2815503561f | 127 | #define WHOAMI_RESET_VAL 0x71 |
mitea1 | 0:f2815503561f | 128 | #define POWER_MANAGMENT_1_RESET_VAL 0x01 |
mitea1 | 0:f2815503561f | 129 | #define DEFAULT_RESET_VALUE 0x00 |
mitea1 | 0:f2815503561f | 130 | |
mitea1 | 0:f2815503561f | 131 | #define WHOAMI_DEFAULT_VAL 0x68 |
mitea1 | 0:f2815503561f | 132 | |
mitea1 | 0:f2815503561f | 133 | //CONFIG register masks |
mitea1 | 0:f2815503561f | 134 | #define MPU9250_FIFO_MODE_MASK 0x40 |
mitea1 | 0:f2815503561f | 135 | #define MPU9250_EXT_SYNC_SET_MASK 0x38 |
mitea1 | 0:f2815503561f | 136 | #define MPU9250_DLPF_CFG_MASK 0x07 |
mitea1 | 0:f2815503561f | 137 | |
mitea1 | 0:f2815503561f | 138 | //GYRO_CONFIG register masks |
mitea1 | 0:f2815503561f | 139 | #define MPU9250_XGYRO_CTEN_MASK 0x80 |
mitea1 | 0:f2815503561f | 140 | #define MPU9250_YGYRO_CTEN_MASK 0x40 |
mitea1 | 0:f2815503561f | 141 | #define MPU9250_ZGYRO_CTEN_MASK 0x20 |
mitea1 | 0:f2815503561f | 142 | #define MPU9250_GYRO_FS_SEL_MASK 0x18 |
mitea1 | 0:f2815503561f | 143 | #define MPU9250_FCHOICE_B_MASK 0x03 |
mitea1 | 0:f2815503561f | 144 | |
mitea1 | 0:f2815503561f | 145 | //ACCEL_CONFIG register masks |
mitea1 | 0:f2815503561f | 146 | #define MPU9250_AX_ST_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 147 | #define MPU9250_AY_ST_EN_MASK 0x40 |
mitea1 | 0:f2815503561f | 148 | #define MPU9250_AZ_ST_EN_MASK 0x20 |
mitea1 | 0:f2815503561f | 149 | #define MPU9250_ACCEL_FS_SEL_MASK 0x18 |
mitea1 | 0:f2815503561f | 150 | |
mitea1 | 0:f2815503561f | 151 | //ACCEL_CONFIG_2 register masks |
mitea1 | 0:f2815503561f | 152 | #define MPU9250_ACCEL_FCHOICE_B_MASK 0xC0 |
mitea1 | 0:f2815503561f | 153 | #define MPU9250_A_DLPF_CFG_MASK 0x03 |
mitea1 | 0:f2815503561f | 154 | |
mitea1 | 0:f2815503561f | 155 | //LP_ACCEL_ODR register masks |
mitea1 | 0:f2815503561f | 156 | #define MPU9250_LPOSC_CLKSEL_MASK 0x0F |
mitea1 | 0:f2815503561f | 157 | |
mitea1 | 0:f2815503561f | 158 | //FIFO_EN register masks |
mitea1 | 0:f2815503561f | 159 | #define MPU9250_TEMP_FIFO_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 160 | #define MPU9250_GYRO_XOUT_MASK 0x40 |
mitea1 | 0:f2815503561f | 161 | #define MPU9250_GYRO_YOUT_MASK 0x20 |
mitea1 | 0:f2815503561f | 162 | #define MPU9250_GYRO_ZOUT_MASK 0x10 |
mitea1 | 0:f2815503561f | 163 | #define MPU9250_ACCEL_MASK 0x08 |
mitea1 | 0:f2815503561f | 164 | #define MPU9250_SLV2_MASK 0x04 |
mitea1 | 0:f2815503561f | 165 | #define MPU9250_SLV1_MASK 0x02 |
mitea1 | 0:f2815503561f | 166 | #define MPU9250_SLV0_MASK 0x01 |
mitea1 | 0:f2815503561f | 167 | |
mitea1 | 0:f2815503561f | 168 | //I2C_MST_CTRL register masks |
mitea1 | 0:f2815503561f | 169 | #define MPU9250_MULT_MST_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 170 | #define MPU9250_WAIT_FOR_ES_MASK 0x40 |
mitea1 | 0:f2815503561f | 171 | #define MPU9250_SLV_3_FIFO_EN_MASK 0x20 |
mitea1 | 0:f2815503561f | 172 | #define MPU9250_I2C_MST_P_NSR_MASK 0x10 |
mitea1 | 0:f2815503561f | 173 | #define MPU9250_I2C_MST_CLK_MASK 0x0F |
mitea1 | 0:f2815503561f | 174 | |
mitea1 | 0:f2815503561f | 175 | //I2C_SLV0_ADDR register masks |
mitea1 | 0:f2815503561f | 176 | #define MPU9250_I2C_SLV0_RNW_MASK 0x80 |
mitea1 | 0:f2815503561f | 177 | #define MPU9250_I2C_ID_0_MASK 0x7F |
mitea1 | 0:f2815503561f | 178 | |
mitea1 | 0:f2815503561f | 179 | //I2C_SLV0_CTRL register masks |
mitea1 | 0:f2815503561f | 180 | #define MPU9250_I2C_SLV0_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 181 | #define MPU9250_I2C_SLV0_BYTE_SW_MASK 0x40 |
mitea1 | 0:f2815503561f | 182 | #define MPU9250_I2C_SLV0_REG_DIS_MASK 0x20 |
mitea1 | 0:f2815503561f | 183 | #define MPU9250_I2C_SLV0_GRP_MASK 0x10 |
mitea1 | 0:f2815503561f | 184 | #define MPU9250_I2C_SLV0_LENG_MASK 0x0F |
mitea1 | 0:f2815503561f | 185 | |
mitea1 | 0:f2815503561f | 186 | //I2C_SLV1_ADDR register masks |
mitea1 | 0:f2815503561f | 187 | #define MPU9250_I2C_SLV1_RNW_MASK 0x80 |
mitea1 | 0:f2815503561f | 188 | #define MPU9250_I2C_ID_1_MASK 0x7F |
mitea1 | 0:f2815503561f | 189 | |
mitea1 | 0:f2815503561f | 190 | //I2C_SLV1_CTRL register masks |
mitea1 | 0:f2815503561f | 191 | #define MPU9250_I2C_SLV1_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 192 | #define MPU9250_I2C_SLV1_BYTE_SW_MASK 0x40 |
mitea1 | 0:f2815503561f | 193 | #define MPU9250_I2C_SLV1_REG_DIS_MASK 0x20 |
mitea1 | 0:f2815503561f | 194 | #define MPU9250_I2C_SLV1_GRP_MASK 0x10 |
mitea1 | 0:f2815503561f | 195 | #define MPU9250_I2C_SLV1_LENG_MASK 0x0F |
mitea1 | 0:f2815503561f | 196 | |
mitea1 | 0:f2815503561f | 197 | //I2C_SLV2_ADDR register masks |
mitea1 | 0:f2815503561f | 198 | #define MPU9250_I2C_SLV2_RNW_MASK 0x80 |
mitea1 | 0:f2815503561f | 199 | #define MPU9250_I2C_ID_2_MASK 0x7F |
mitea1 | 0:f2815503561f | 200 | |
mitea1 | 0:f2815503561f | 201 | //I2C_SLV2_CTRL register masks |
mitea1 | 0:f2815503561f | 202 | #define MPU9250_I2C_SLV2_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 203 | #define MPU9250_I2C_SLV2_BYTE_SW_MASK 0x40 |
mitea1 | 0:f2815503561f | 204 | #define MPU9250_I2C_SLV2_REG_DIS_MASK 0x20 |
mitea1 | 0:f2815503561f | 205 | #define MPU9250_I2C_SLV2_GRP_MASK 0x10 |
mitea1 | 0:f2815503561f | 206 | #define MPU9250_I2C_SLV2_LENG_MASK 0x0F |
mitea1 | 0:f2815503561f | 207 | |
mitea1 | 0:f2815503561f | 208 | //I2C_SLV3_ADDR register masks |
mitea1 | 0:f2815503561f | 209 | #define MPU9250_I2C_SLV3_RNW_MASK 0x80 |
mitea1 | 0:f2815503561f | 210 | #define MPU9250_I2C_ID_3_MASK 0x7F |
mitea1 | 0:f2815503561f | 211 | |
mitea1 | 0:f2815503561f | 212 | //I2C_SLV3_CTRL register masks |
mitea1 | 0:f2815503561f | 213 | #define MPU9250_I2C_SLV3_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 214 | #define MPU9250_I2C_SLV3_BYTE_SW_MASK 0x40 |
mitea1 | 0:f2815503561f | 215 | #define MPU9250_I2C_SLV3_REG_DIS_MASK 0x20 |
mitea1 | 0:f2815503561f | 216 | #define MPU9250_I2C_SLV3_GRP_MASK 0x10 |
mitea1 | 0:f2815503561f | 217 | #define MPU9250_I2C_SLV3_LENG_MASK 0x0F |
mitea1 | 0:f2815503561f | 218 | |
mitea1 | 0:f2815503561f | 219 | //I2C_SLV4_ADDR register masks |
mitea1 | 0:f2815503561f | 220 | #define MPU9250_I2C_SLV4_RNW_MASK 0x80 |
mitea1 | 0:f2815503561f | 221 | #define MPU9250_I2C_ID_4_MASK 0x7F |
mitea1 | 0:f2815503561f | 222 | |
mitea1 | 0:f2815503561f | 223 | //I2C_SLV4_CTRL register masks |
mitea1 | 0:f2815503561f | 224 | #define MPU9250_I2C_SLV4_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 225 | #define MPU9250_SLV4_DONE_INT_EN_MASK 0x40 |
mitea1 | 0:f2815503561f | 226 | #define MPU9250_I2C_SLV4_REG_DIS_MASK 0x20 |
mitea1 | 0:f2815503561f | 227 | #define MPU9250_I2C_MST_DLY_MASK 0x1F |
mitea1 | 0:f2815503561f | 228 | |
mitea1 | 0:f2815503561f | 229 | //I2C_MST_STATUS register masks |
mitea1 | 0:f2815503561f | 230 | #define MPU9250_PASS_THROUGH_MASK 0x80 |
mitea1 | 0:f2815503561f | 231 | #define MPU9250_I2C_SLV4_DONE_MASK 0x40 |
mitea1 | 0:f2815503561f | 232 | #define MPU9250_I2C_LOST_ARB_MASK 0x20 |
mitea1 | 0:f2815503561f | 233 | #define MPU9250_I2C_SLV4_NACK_MASK 0x10 |
mitea1 | 0:f2815503561f | 234 | #define MPU9250_I2C_SLV3_NACK_MASK 0x08 |
mitea1 | 0:f2815503561f | 235 | #define MPU9250_I2C_SLV2_NACK_MASK 0x04 |
mitea1 | 0:f2815503561f | 236 | #define MPU9250_I2C_SLV1_NACK_MASK 0x02 |
mitea1 | 0:f2815503561f | 237 | #define MPU9250_I2C_SLV0_NACK_MASK 0x01 |
mitea1 | 0:f2815503561f | 238 | |
mitea1 | 0:f2815503561f | 239 | //INT_STATUS register masks |
mitea1 | 0:f2815503561f | 240 | #define MPU9250_WOM_INT_MASK 0x40 |
mitea1 | 0:f2815503561f | 241 | #define MPU9250_FIFO_OFLOW_INT_MASK 0x10 |
mitea1 | 0:f2815503561f | 242 | #define MPU9250_FSYNC_INT_MASK 0x08 |
mitea1 | 0:f2815503561f | 243 | #define MPU9250_RAW_DATA_RDY_INT_MASK 0x01 |
mitea1 | 0:f2815503561f | 244 | |
mitea1 | 0:f2815503561f | 245 | //I2C_MST_DELAY_CTRL register masks |
mitea1 | 0:f2815503561f | 246 | #define MPU9250_DELAY_ES_SHADOW_MASK 0x80 |
mitea1 | 0:f2815503561f | 247 | #define MPU9250_I2C_SLV4_DLY_EN_MASK 0x10 |
mitea1 | 0:f2815503561f | 248 | #define MPU9250_I2C_SLV3_DLY_EN_MASK 0x08 |
mitea1 | 0:f2815503561f | 249 | #define MPU9250_I2C_SLV2_DLY_EN_MASK 0x04 |
mitea1 | 0:f2815503561f | 250 | #define MPU9250_I2C_SLV1_DLY_EN_MASK 0x02 |
mitea1 | 0:f2815503561f | 251 | #define MPU9250_I2C_SLV0_DLY_EN_MASK 0x01 |
mitea1 | 0:f2815503561f | 252 | |
mitea1 | 0:f2815503561f | 253 | //SIGNAL_PATH_RESET register masks |
mitea1 | 0:f2815503561f | 254 | #define MPU9250_GYRO_RST_MASK 0x04 |
mitea1 | 0:f2815503561f | 255 | #define MPU9250_ACCEL_RST_MASK 0x02 |
mitea1 | 0:f2815503561f | 256 | #define MPU9250_TEMP_RST_MASK 0x01 |
mitea1 | 0:f2815503561f | 257 | |
mitea1 | 0:f2815503561f | 258 | //MOT_DETECT_CTRL register masks |
mitea1 | 0:f2815503561f | 259 | #define MPU9250_ACCEL_INTEL_EN_MASK 0x80 |
mitea1 | 0:f2815503561f | 260 | #define MPU9250_ACCEL_INTEL_MODE_MASK 0x40 |
mitea1 | 0:f2815503561f | 261 | |
mitea1 | 0:f2815503561f | 262 | //USER_CTRL register masks |
mitea1 | 0:f2815503561f | 263 | #define MPU9250_FIFO_EN_MASK 0x40 |
mitea1 | 0:f2815503561f | 264 | #define MPU9250_I2C_MST_EN_MASK 0x20 |
mitea1 | 0:f2815503561f | 265 | #define MPU9250_I2C_IF_DIS_MASK 0x10 |
mitea1 | 0:f2815503561f | 266 | #define MPU9250_FIFO_RST_MASK 0x04 |
mitea1 | 0:f2815503561f | 267 | #define MPU9250_I2C_MST_RST_MASK 0x02 |
mitea1 | 0:f2815503561f | 268 | #define MPU9250_SIG_COND_RST_MASK 0x01 |
mitea1 | 0:f2815503561f | 269 | |
mitea1 | 0:f2815503561f | 270 | //PWR_MGMT_1 register masks |
mitea1 | 0:f2815503561f | 271 | #define MPU9250_H_RESET_MASK 0x80 |
mitea1 | 0:f2815503561f | 272 | #define MPU9250_SLEEP_MASK 0x40 |
mitea1 | 0:f2815503561f | 273 | #define MPU9250_CYCLE_MASK 0x20 |
mitea1 | 0:f2815503561f | 274 | #define MPU9250_GYRO_STANDBY_CYCLE_MASK 0x10 |
mitea1 | 0:f2815503561f | 275 | #define MPU9250_PD_PTAT_MASK 0x08 |
mitea1 | 0:f2815503561f | 276 | #define MPU9250_CLKSEL_MASK 0x07 |
mitea1 | 0:f2815503561f | 277 | |
mitea1 | 0:f2815503561f | 278 | //PWR_MGMT_2 register masks |
mitea1 | 0:f2815503561f | 279 | #define MPU9250_DISABLE_XA_MASK 0x20 |
mitea1 | 0:f2815503561f | 280 | #define MPU9250_DISABLE_YA_MASK 0x10 |
mitea1 | 0:f2815503561f | 281 | #define MPU9250_DISABLE_ZA_MASK 0x08 |
mitea1 | 0:f2815503561f | 282 | #define MPU9250_DISABLE_XG_MASK 0x04 |
mitea1 | 0:f2815503561f | 283 | #define MPU9250_DISABLE_YG_MASK 0x02 |
mitea1 | 0:f2815503561f | 284 | #define MPU9250_DISABLE_ZG_MASK 0x01 |
mitea1 | 0:f2815503561f | 285 | |
mitea1 | 0:f2815503561f | 286 | #define MPU9250_DISABLE_XYZA_MASK 0x38 |
mitea1 | 0:f2815503561f | 287 | #define MPU9250_DISABLE_XYZG_MASK 0x07 |
mitea1 | 0:f2815503561f | 288 | |
mitea1 | 0:f2815503561f | 289 | //Magnetometer register maps |
mitea1 | 0:f2815503561f | 290 | #define MPU9250_MAG_ADDRESS 0x0C<<1//Shift by 1 needed for access via I2C |
mitea1 | 0:f2815503561f | 291 | |
mitea1 | 0:f2815503561f | 292 | #define MPU9250_MAG_WIA 0x00 |
mitea1 | 0:f2815503561f | 293 | #define MPU9250_MAG_INFO 0x01 |
mitea1 | 0:f2815503561f | 294 | #define MPU9250_MAG_ST1 0x02 |
mitea1 | 0:f2815503561f | 295 | #define MPU9250_MAG_XOUT_L 0x03 |
mitea1 | 0:f2815503561f | 296 | #define MPU9250_MAG_XOUT_H 0x04 |
mitea1 | 0:f2815503561f | 297 | #define MPU9250_MAG_YOUT_L 0x05 |
mitea1 | 0:f2815503561f | 298 | #define MPU9250_MAG_YOUT_H 0x06 |
mitea1 | 0:f2815503561f | 299 | #define MPU9250_MAG_ZOUT_L 0x07 |
mitea1 | 0:f2815503561f | 300 | #define MPU9250_MAG_ZOUT_H 0x08 |
mitea1 | 0:f2815503561f | 301 | #define MPU9250_MAG_ST2 0x09 |
mitea1 | 0:f2815503561f | 302 | #define MPU9250_MAG_CNTL1 0x0A |
mitea1 | 0:f2815503561f | 303 | #define MPU9250_MAG_CNTL2 0x0B //reserved mystery meat |
mitea1 | 0:f2815503561f | 304 | #define MPU9250_MAG_ASTC 0x0C |
mitea1 | 0:f2815503561f | 305 | #define MPU9250_MAG_TS1 0x0D |
mitea1 | 0:f2815503561f | 306 | #define MPU9250_MAG_TS2 0x0E |
mitea1 | 0:f2815503561f | 307 | #define MPU9250_MAG_I2CDIS 0x0F |
mitea1 | 0:f2815503561f | 308 | #define MPU9250_MAG_ASAX 0x10 |
mitea1 | 0:f2815503561f | 309 | #define MPU9250_MAG_ASAY 0x11 |
mitea1 | 0:f2815503561f | 310 | #define MPU9250_MAG_ASAZ 0x12 |
mitea1 | 0:f2815503561f | 311 | |
mitea1 | 0:f2815503561f | 312 | //Magnetometer register masks |
mitea1 | 0:f2815503561f | 313 | #define MPU9250_WIA_MASK 0x48 |
mitea1 | 0:f2815503561f | 314 | |
mitea1 | 0:f2815503561f | 315 | /** |
mitea1 | 0:f2815503561f | 316 | * @class MPU9250 |
mitea1 | 0:f2815503561f | 317 | * @brief Provides Functionality to control the MPU9250 Sensor on the Sensbert |
mitea1 | 0:f2815503561f | 318 | */ |
mitea1 | 0:f2815503561f | 319 | class MPU9250 { |
mitea1 | 0:f2815503561f | 320 | public: |
mitea1 | 0:f2815503561f | 321 | MPU9250(I2C_RT* i2c); |
mitea1 | 0:f2815503561f | 322 | virtual ~MPU9250(); |
mitea1 | 0:f2815503561f | 323 | |
mitea1 | 0:f2815503561f | 324 | /** |
mitea1 | 0:f2815503561f | 325 | * @brief Initializes the MPU9250 according to the desired MPU9250_MODE |
mitea1 | 0:f2815503561f | 326 | * @param desiredMode the desired Mode depending on which the MPU9250 has to be |
mitea1 | 0:f2815503561f | 327 | * configured |
mitea1 | 0:f2815503561f | 328 | */ |
mitea1 | 0:f2815503561f | 329 | void init(MPU9250_MODE desiredMode); |
mitea1 | 0:f2815503561f | 330 | |
mitea1 | 0:f2815503561f | 331 | |
mitea1 | 0:f2815503561f | 332 | /** |
mitea1 | 0:f2815503561f | 333 | * @brief Gets the measured x-axis acceleration. |
mitea1 | 0:f2815503561f | 334 | * Important: Acceleration measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 335 | * enableAccelerationMeasurement() |
mitea1 | 0:f2815503561f | 336 | * @return |
mitea1 | 0:f2815503561f | 337 | */ |
mitea1 | 0:f2815503561f | 338 | float getXAxisAcceleration(); |
mitea1 | 0:f2815503561f | 339 | |
mitea1 | 0:f2815503561f | 340 | /** |
mitea1 | 0:f2815503561f | 341 | * @brief Gets the measured y-axis acceleration. |
mitea1 | 0:f2815503561f | 342 | * Important: Acceleration measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 343 | * enableAccelerationMeasurement() |
mitea1 | 0:f2815503561f | 344 | * @return |
mitea1 | 0:f2815503561f | 345 | */ |
mitea1 | 0:f2815503561f | 346 | float getYAxisAcceleration(); |
mitea1 | 0:f2815503561f | 347 | |
mitea1 | 0:f2815503561f | 348 | /** |
mitea1 | 0:f2815503561f | 349 | * @brief Gets the measured z-axis acceleration. |
mitea1 | 0:f2815503561f | 350 | * Important: Acceleration measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 351 | * enableAccelerationMeasurement() |
mitea1 | 0:f2815503561f | 352 | * @return |
mitea1 | 0:f2815503561f | 353 | */ |
mitea1 | 0:f2815503561f | 354 | float getZAxisAcceleration(); |
mitea1 | 0:f2815503561f | 355 | |
mitea1 | 0:f2815503561f | 356 | /** |
mitea1 | 0:f2815503561f | 357 | * @brief Gets the measured x-axis gyroscope value. |
mitea1 | 0:f2815503561f | 358 | * Important: Acceleration measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 359 | * enableAccelerationMeasurement() |
mitea1 | 0:f2815503561f | 360 | * @return |
mitea1 | 0:f2815503561f | 361 | */ |
mitea1 | 0:f2815503561f | 362 | float getXAxisGyro(); |
mitea1 | 0:f2815503561f | 363 | |
mitea1 | 0:f2815503561f | 364 | /** |
mitea1 | 0:f2815503561f | 365 | * @brief Gets the measured y-axis gyroscope value |
mitea1 | 0:f2815503561f | 366 | * Important: Gyroscope measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 367 | * enableGyroscopeMeasurement() |
mitea1 | 0:f2815503561f | 368 | * @return |
mitea1 | 0:f2815503561f | 369 | */ |
mitea1 | 0:f2815503561f | 370 | float getYAxisGyro(); |
mitea1 | 0:f2815503561f | 371 | |
mitea1 | 0:f2815503561f | 372 | /** |
mitea1 | 0:f2815503561f | 373 | * @brief Gets the measured z-axis gyroscope value. |
mitea1 | 0:f2815503561f | 374 | * Important: Gyroscope measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 375 | * enableGyroscopeMeasurement() |
mitea1 | 0:f2815503561f | 376 | * @return |
mitea1 | 0:f2815503561f | 377 | */ |
mitea1 | 0:f2815503561f | 378 | float getZAxisGyro(); |
mitea1 | 0:f2815503561f | 379 | |
mitea1 | 0:f2815503561f | 380 | /** |
mitea1 | 0:f2815503561f | 381 | * @brief Gets the measured x-axis tesla value. |
mitea1 | 0:f2815503561f | 382 | * Important: Gyroscope measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 383 | * enableGyroscopeMeasurement() |
mitea1 | 0:f2815503561f | 384 | * @return |
mitea1 | 0:f2815503561f | 385 | */ |
mitea1 | 0:f2815503561f | 386 | float getXAxisTesla(); |
mitea1 | 0:f2815503561f | 387 | |
mitea1 | 0:f2815503561f | 388 | /** |
mitea1 | 0:f2815503561f | 389 | * @brief Gets the measured y-axis tesla value. |
mitea1 | 0:f2815503561f | 390 | * Important: Tesla measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 391 | * enableTeslaMeasurement() |
mitea1 | 0:f2815503561f | 392 | * @return |
mitea1 | 0:f2815503561f | 393 | */ |
mitea1 | 0:f2815503561f | 394 | float getYAxisTesla(); |
mitea1 | 0:f2815503561f | 395 | |
mitea1 | 0:f2815503561f | 396 | /** |
mitea1 | 0:f2815503561f | 397 | * @brief Gets the measured z-axis tesla value. |
mitea1 | 0:f2815503561f | 398 | * Important: Tesla measurement first needs to be enable by |
mitea1 | 0:f2815503561f | 399 | * enableTeslaMeasurement() |
mitea1 | 0:f2815503561f | 400 | * @return |
mitea1 | 0:f2815503561f | 401 | */ |
mitea1 | 0:f2815503561f | 402 | float getZAxisTesla(); |
mitea1 | 0:f2815503561f | 403 | private: |
mitea1 | 0:f2815503561f | 404 | I2C_RT* i2c; |
mitea1 | 0:f2815503561f | 405 | MPU9250Config* config; |
mitea1 | 0:f2815503561f | 406 | |
mitea1 | 0:f2815503561f | 407 | /** |
mitea1 | 0:f2815503561f | 408 | * @brief Set the i2c that is used to control the MPU9250 |
mitea1 | 0:f2815503561f | 409 | * @param i2c the i2c that is used to control the MPU9250 |
mitea1 | 0:f2815503561f | 410 | */ |
mitea1 | 0:f2815503561f | 411 | void setI2c(I2C_RT* i2c); |
mitea1 | 0:f2815503561f | 412 | |
mitea1 | 0:f2815503561f | 413 | /** |
mitea1 | 0:f2815503561f | 414 | * @brief enables the acceleration measurement for all axis |
mitea1 | 0:f2815503561f | 415 | * according to the MPU9250Config. |
mitea1 | 0:f2815503561f | 416 | */ |
mitea1 | 0:f2815503561f | 417 | void enableAxisAccelerationMeasurement(); |
mitea1 | 0:f2815503561f | 418 | |
mitea1 | 0:f2815503561f | 419 | /** |
mitea1 | 0:f2815503561f | 420 | * @brief enables the gyroscope measurement for all axis |
mitea1 | 0:f2815503561f | 421 | * according to the MPU9250Config. |
mitea1 | 0:f2815503561f | 422 | */ |
mitea1 | 0:f2815503561f | 423 | void enableAxisGyroscopeMeasurement(); |
mitea1 | 0:f2815503561f | 424 | |
mitea1 | 0:f2815503561f | 425 | /** |
mitea1 | 0:f2815503561f | 426 | * @brief enables the tesla measurement for all axis |
mitea1 | 0:f2815503561f | 427 | * according to the MPU9250Config. |
mitea1 | 0:f2815503561f | 428 | */ |
mitea1 | 0:f2815503561f | 429 | void enableAxisTeslaMeasurement(); |
mitea1 | 0:f2815503561f | 430 | |
mitea1 | 0:f2815503561f | 431 | |
mitea1 | 0:f2815503561f | 432 | /** |
mitea1 | 0:f2815503561f | 433 | * @brief Configures and enables interrupts according to the MPU9250Config |
mitea1 | 0:f2815503561f | 434 | */ |
mitea1 | 0:f2815503561f | 435 | void configureInterrupts(); |
mitea1 | 0:f2815503561f | 436 | |
mitea1 | 0:f2815503561f | 437 | /** |
mitea1 | 0:f2815503561f | 438 | * @brief Sets the motion threshold in g when an interupt is triggered |
mitea1 | 0:f2815503561f | 439 | * according to the MPU9250Config |
mitea1 | 0:f2815503561f | 440 | */ |
mitea1 | 0:f2815503561f | 441 | void setWakeOnReceiveThreshold(); |
mitea1 | 0:f2815503561f | 442 | }; |
mitea1 | 0:f2815503561f | 443 | |
mitea1 | 0:f2815503561f | 444 | #endif /* APP_MPU9250_H_ */ |