lora sensnode

Dependencies:   libmDot mbed-rtos mbed

Fork of mDot_LoRa_Sensornode by Adrian Mitevski

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?

UserRevisionLine numberNew 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_ */