lsm9ds1 not organized

Dependencies:   mbed SDFileSystem USBDevice

Committer:
zmoutaou
Date:
Mon Jan 27 10:50:13 2020 +0000
Revision:
0:70465b25c44f
lsm9ds1 not organized

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zmoutaou 0:70465b25c44f 1 // Accelerometer and Gyroscope registers
zmoutaou 0:70465b25c44f 2 #define LSM9DS1XG_ACT_THS 0x04
zmoutaou 0:70465b25c44f 3 #define LSM9DS1XG_ACT_DUR 0x05
zmoutaou 0:70465b25c44f 4 #define LSM9DS1XG_INT_GEN_CFG_XL 0x06
zmoutaou 0:70465b25c44f 5 #define LSM9DS1XG_INT_GEN_THS_X_XL 0x07
zmoutaou 0:70465b25c44f 6 #define LSM9DS1XG_INT_GEN_THS_Y_XL 0x08
zmoutaou 0:70465b25c44f 7 #define LSM9DS1XG_INT_GEN_THS_Z_XL 0x09
zmoutaou 0:70465b25c44f 8 #define LSM9DS1XG_INT_GEN_DUR_XL 0x0A
zmoutaou 0:70465b25c44f 9 #define LSM9DS1XG_REFERENCE_G 0x0B
zmoutaou 0:70465b25c44f 10 #define LSM9DS1XG_INT1_CTRL 0x0C
zmoutaou 0:70465b25c44f 11 #define LSM9DS1XG_INT2_CTRL 0x0D
zmoutaou 0:70465b25c44f 12 #define LSM9DS1XG_WHO_AM_I 0x0F // should return 0x68
zmoutaou 0:70465b25c44f 13 #define LSM9DS1XG_CTRL_REG1_G 0x10
zmoutaou 0:70465b25c44f 14 #define LSM9DS1XG_CTRL_REG2_G 0x11
zmoutaou 0:70465b25c44f 15 #define LSM9DS1XG_CTRL_REG3_G 0x12
zmoutaou 0:70465b25c44f 16 #define LSM9DS1XG_ORIENT_CFG_G 0x13
zmoutaou 0:70465b25c44f 17 #define LSM9DS1XG_INT_GEN_SRC_G 0x14
zmoutaou 0:70465b25c44f 18 #define LSM9DS1XG_OUT_TEMP_L 0x15
zmoutaou 0:70465b25c44f 19 #define LSM9DS1XG_OUT_TEMP_H 0x16
zmoutaou 0:70465b25c44f 20 #define LSM9DS1XG_STATUS_REG 0x17
zmoutaou 0:70465b25c44f 21 #define LSM9DS1XG_OUT_X_L_G 0x18
zmoutaou 0:70465b25c44f 22 #define LSM9DS1XG_OUT_X_H_G 0x19
zmoutaou 0:70465b25c44f 23 #define LSM9DS1XG_OUT_Y_L_G 0x1A
zmoutaou 0:70465b25c44f 24 #define LSM9DS1XG_OUT_Y_H_G 0x1B
zmoutaou 0:70465b25c44f 25 #define LSM9DS1XG_OUT_Z_L_G 0x1C
zmoutaou 0:70465b25c44f 26 #define LSM9DS1XG_OUT_Z_H_G 0x1D
zmoutaou 0:70465b25c44f 27 #define LSM9DS1XG_CTRL_REG4 0x1E
zmoutaou 0:70465b25c44f 28 #define LSM9DS1XG_CTRL_REG5_XL 0x1F
zmoutaou 0:70465b25c44f 29 #define LSM9DS1XG_CTRL_REG6_XL 0x20
zmoutaou 0:70465b25c44f 30 #define LSM9DS1XG_CTRL_REG7_XL 0x21
zmoutaou 0:70465b25c44f 31 #define LSM9DS1XG_CTRL_REG8 0x22
zmoutaou 0:70465b25c44f 32 #define LSM9DS1XG_CTRL_REG9 0x23
zmoutaou 0:70465b25c44f 33 #define LSM9DS1XG_CTRL_REG10 0x24
zmoutaou 0:70465b25c44f 34 #define LSM9DS1XG_INT_GEN_SRC_XL 0x26
zmoutaou 0:70465b25c44f 35 //#define LSM9DS1XG_STATUS_REG 0x27 // duplicate of 0x17!
zmoutaou 0:70465b25c44f 36 #define LSM9DS1XG_OUT_X_L_XL 0x28
zmoutaou 0:70465b25c44f 37 #define LSM9DS1XG_OUT_X_H_XL 0x29
zmoutaou 0:70465b25c44f 38 #define LSM9DS1XG_OUT_Y_L_XL 0x2A
zmoutaou 0:70465b25c44f 39 #define LSM9DS1XG_OUT_Y_H_XL 0x2B
zmoutaou 0:70465b25c44f 40 #define LSM9DS1XG_OUT_Z_L_XL 0x2C
zmoutaou 0:70465b25c44f 41 #define LSM9DS1XG_OUT_Z_H_XL 0x2D
zmoutaou 0:70465b25c44f 42 #define LSM9DS1XG_FIFO_CTRL 0x2E
zmoutaou 0:70465b25c44f 43 #define LSM9DS1XG_FIFO_SRC 0x2F
zmoutaou 0:70465b25c44f 44 #define LSM9DS1XG_INT_GEN_CFG_G 0x30
zmoutaou 0:70465b25c44f 45 #define LSM9DS1XG_INT_GEN_THS_XH_G 0x31
zmoutaou 0:70465b25c44f 46 #define LSM9DS1XG_INT_GEN_THS_XL_G 0x32
zmoutaou 0:70465b25c44f 47 #define LSM9DS1XG_INT_GEN_THS_YH_G 0x33
zmoutaou 0:70465b25c44f 48 #define LSM9DS1XG_INT_GEN_THS_YL_G 0x34
zmoutaou 0:70465b25c44f 49 #define LSM9DS1XG_INT_GEN_THS_ZH_G 0x35
zmoutaou 0:70465b25c44f 50 #define LSM9DS1XG_INT_GEN_THS_ZL_G 0x36
zmoutaou 0:70465b25c44f 51 #define LSM9DS1XG_INT_GEN_DUR_G 0x37
zmoutaou 0:70465b25c44f 52 //
zmoutaou 0:70465b25c44f 53 // Magnetometer registers
zmoutaou 0:70465b25c44f 54 #define LSM9DS1M_OFFSET_X_REG_L_M 0x05
zmoutaou 0:70465b25c44f 55 #define LSM9DS1M_OFFSET_X_REG_H_M 0x06
zmoutaou 0:70465b25c44f 56 #define LSM9DS1M_OFFSET_Y_REG_L_M 0x07
zmoutaou 0:70465b25c44f 57 #define LSM9DS1M_OFFSET_Y_REG_H_M 0x08
zmoutaou 0:70465b25c44f 58 #define LSM9DS1M_OFFSET_Z_REG_L_M 0x09
zmoutaou 0:70465b25c44f 59 #define LSM9DS1M_OFFSET_Z_REG_H_M 0x0A
zmoutaou 0:70465b25c44f 60 #define LSM9DS1M_WHO_AM_I 0x0F
zmoutaou 0:70465b25c44f 61 #define LSM9DS1M_CTRL_REG1_M 0x20
zmoutaou 0:70465b25c44f 62 #define LSM9DS1M_CTRL_REG2_M 0x21
zmoutaou 0:70465b25c44f 63 #define LSM9DS1M_CTRL_REG3_M 0x22
zmoutaou 0:70465b25c44f 64 #define LSM9DS1M_CTRL_REG4_M 0x23
zmoutaou 0:70465b25c44f 65 #define LSM9DS1M_CTRL_REG5_M 0x24
zmoutaou 0:70465b25c44f 66 #define LSM9DS1M_STATUS_REG_M 0x27
zmoutaou 0:70465b25c44f 67 #define LSM9DS1M_OUT_X_L_M 0x28
zmoutaou 0:70465b25c44f 68 #define LSM9DS1M_OUT_X_H_M 0x29
zmoutaou 0:70465b25c44f 69 #define LSM9DS1M_OUT_Y_L_M 0x2A
zmoutaou 0:70465b25c44f 70 #define LSM9DS1M_OUT_Y_H_M 0x2B
zmoutaou 0:70465b25c44f 71 #define LSM9DS1M_OUT_Z_L_M 0x2C
zmoutaou 0:70465b25c44f 72 #define LSM9DS1M_OUT_Z_H_M 0x2D
zmoutaou 0:70465b25c44f 73 #define LSM9DS1M_INT_CFG_M 0x30
zmoutaou 0:70465b25c44f 74 #define LSM9DS1M_INT_SRC_M 0x31
zmoutaou 0:70465b25c44f 75 #define LSM9DS1M_INT_THS_L_M 0x32
zmoutaou 0:70465b25c44f 76 #define LSM9DS1M_INT_THS_H_M 0x33
zmoutaou 0:70465b25c44f 77
zmoutaou 0:70465b25c44f 78 // Using the LSM9DS1+MS5611 Teensy 3.1 Add-On shield, ADO is set to 1
zmoutaou 0:70465b25c44f 79 // Seven-bit device address of accel/gyro is 110101 for ADO = 0 and 110101 for ADO = 1
zmoutaou 0:70465b25c44f 80
zmoutaou 0:70465b25c44f 81 #define LSM9DS1XG_ADDRESS 0xD4 // Device address when ADO = 1
zmoutaou 0:70465b25c44f 82 #define LSM9DS1M_ADDRESS 0x38 // Address of magnetometer
zmoutaou 0:70465b25c44f 83 #define SerialDebug true // set to true to get Serial output for debugging
zmoutaou 0:70465b25c44f 84
zmoutaou 0:70465b25c44f 85 // Set initial input parameters
zmoutaou 0:70465b25c44f 86 enum Ascale
zmoutaou 0:70465b25c44f 87 { // set of allowable accel full scale settings
zmoutaou 0:70465b25c44f 88 AFS_2G = 0,
zmoutaou 0:70465b25c44f 89 AFS_16G,
zmoutaou 0:70465b25c44f 90 AFS_4G,
zmoutaou 0:70465b25c44f 91 AFS_8G
zmoutaou 0:70465b25c44f 92 };
zmoutaou 0:70465b25c44f 93
zmoutaou 0:70465b25c44f 94 enum Aodr { // set of allowable gyro sample rates
zmoutaou 0:70465b25c44f 95 AODR_PowerDown = 0,
zmoutaou 0:70465b25c44f 96 AODR_10Hz,
zmoutaou 0:70465b25c44f 97 AODR_50Hz,
zmoutaou 0:70465b25c44f 98 AODR_119Hz,
zmoutaou 0:70465b25c44f 99 AODR_238Hz,
zmoutaou 0:70465b25c44f 100 AODR_476Hz,
zmoutaou 0:70465b25c44f 101 AODR_952Hz
zmoutaou 0:70465b25c44f 102 };
zmoutaou 0:70465b25c44f 103
zmoutaou 0:70465b25c44f 104 enum Abw { // set of allowable accewl bandwidths
zmoutaou 0:70465b25c44f 105 ABW_408Hz = 0,
zmoutaou 0:70465b25c44f 106 ABW_211Hz,
zmoutaou 0:70465b25c44f 107 ABW_105Hz,
zmoutaou 0:70465b25c44f 108 ABW_50Hz
zmoutaou 0:70465b25c44f 109 };
zmoutaou 0:70465b25c44f 110
zmoutaou 0:70465b25c44f 111 enum Gscale { // set of allowable gyro full scale settings
zmoutaou 0:70465b25c44f 112 GFS_245DPS = 0,
zmoutaou 0:70465b25c44f 113 GFS_500DPS,
zmoutaou 0:70465b25c44f 114 GFS_NoOp,
zmoutaou 0:70465b25c44f 115 GFS_2000DPS
zmoutaou 0:70465b25c44f 116 };
zmoutaou 0:70465b25c44f 117
zmoutaou 0:70465b25c44f 118 enum Godr { // set of allowable gyro sample rates
zmoutaou 0:70465b25c44f 119 GODR_PowerDown = 0,
zmoutaou 0:70465b25c44f 120 GODR_14_9Hz,
zmoutaou 0:70465b25c44f 121 GODR_59_5Hz,
zmoutaou 0:70465b25c44f 122 GODR_119Hz,
zmoutaou 0:70465b25c44f 123 GODR_238Hz,
zmoutaou 0:70465b25c44f 124 GODR_476Hz,
zmoutaou 0:70465b25c44f 125 GODR_952Hz
zmoutaou 0:70465b25c44f 126 };
zmoutaou 0:70465b25c44f 127
zmoutaou 0:70465b25c44f 128 enum Gbw { // set of allowable gyro data bandwidths
zmoutaou 0:70465b25c44f 129 GBW_low = 0, // 14 Hz at Godr = 238 Hz, 33 Hz at Godr = 952 Hz
zmoutaou 0:70465b25c44f 130 GBW_med, // 29 Hz at Godr = 238 Hz, 40 Hz at Godr = 952 Hz
zmoutaou 0:70465b25c44f 131 GBW_high, // 63 Hz at Godr = 238 Hz, 58 Hz at Godr = 952 Hz
zmoutaou 0:70465b25c44f 132 GBW_highest // 78 Hz at Godr = 238 Hz, 100 Hz at Godr = 952 Hz
zmoutaou 0:70465b25c44f 133 };
zmoutaou 0:70465b25c44f 134
zmoutaou 0:70465b25c44f 135 enum Mscale { // set of allowable mag full scale settings
zmoutaou 0:70465b25c44f 136 MFS_4G = 0,
zmoutaou 0:70465b25c44f 137 MFS_8G,
zmoutaou 0:70465b25c44f 138 MFS_12G,
zmoutaou 0:70465b25c44f 139 MFS_16G
zmoutaou 0:70465b25c44f 140 };
zmoutaou 0:70465b25c44f 141
zmoutaou 0:70465b25c44f 142 enum Mmode {
zmoutaou 0:70465b25c44f 143 MMode_LowPower = 0,
zmoutaou 0:70465b25c44f 144 MMode_MedPerformance,
zmoutaou 0:70465b25c44f 145 MMode_HighPerformance,
zmoutaou 0:70465b25c44f 146 MMode_UltraHighPerformance
zmoutaou 0:70465b25c44f 147 };
zmoutaou 0:70465b25c44f 148
zmoutaou 0:70465b25c44f 149 enum Modr { // set of allowable mag sample rates
zmoutaou 0:70465b25c44f 150 MODR_0_625Hz = 0,
zmoutaou 0:70465b25c44f 151 MODR_1_25Hz,
zmoutaou 0:70465b25c44f 152 MODR_2_5Hz,
zmoutaou 0:70465b25c44f 153 MODR_5Hz,
zmoutaou 0:70465b25c44f 154 MODR_10Hz,
zmoutaou 0:70465b25c44f 155 MODR_20Hz,
zmoutaou 0:70465b25c44f 156 MODR_80Hz
zmoutaou 0:70465b25c44f 157 };
zmoutaou 0:70465b25c44f 158
zmoutaou 0:70465b25c44f 159 #define ADC_256 0x00 // define pressure and temperature conversion rates
zmoutaou 0:70465b25c44f 160 #define ADC_512 0x02
zmoutaou 0:70465b25c44f 161 #define ADC_1024 0x04
zmoutaou 0:70465b25c44f 162 #define ADC_2048 0x06
zmoutaou 0:70465b25c44f 163 #define ADC_4096 0x08
zmoutaou 0:70465b25c44f 164 #define ADC_D1 0x40
zmoutaou 0:70465b25c44f 165 #define ADC_D2 0x50
zmoutaou 0:70465b25c44f 166 #define PI 3.141592653589793238463
zmoutaou 0:70465b25c44f 167 #define Kp 2.0f * 5.0f // these are the free parameters in the Mahony filter and fusion scheme, Kp for proportional feedback, Ki for integral
zmoutaou 0:70465b25c44f 168 #define Ki 0.0f