lsm9ds1 not organized
Dependencies: mbed SDFileSystem USBDevice
lsm9ds1.h@0:70465b25c44f, 2020-01-27 (annotated)
- Committer:
- zmoutaou
- Date:
- Mon Jan 27 10:50:13 2020 +0000
- Revision:
- 0:70465b25c44f
lsm9ds1 not organized
Who changed what in which revision?
User | Revision | Line number | New 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 |