mpu9250のライブラリ、I2Cを利用。
Dependents: Hybrid_AttitudeEstimation Hybrid_main_FirstEdtion rocket_logger_sinkan2018_v1 HYBRYD2018_IZU_ROCKET ... more
Fork of mpu9250_i2c by
mpu9250_i2c.h@2:4c7bc164cc4d, 2017-01-28 (annotated)
- Committer:
- Gaku0606
- Date:
- Sat Jan 28 20:13:43 2017 +0000
- Revision:
- 2:4c7bc164cc4d
- Parent:
- 1:6a4c2f84180b
- Child:
- 3:1dcc2a9ff958
doxygen????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Gaku0606 | 0:d36bfb8300a2 | 1 | #ifndef _MPU9250_I2C_H_ |
Gaku0606 | 0:d36bfb8300a2 | 2 | #define _MPU9250_I2C_H_ |
Gaku0606 | 0:d36bfb8300a2 | 3 | |
Gaku0606 | 1:6a4c2f84180b | 4 | /** |
Gaku0606 | 2:4c7bc164cc4d | 5 | * @note mpu9250を比較的簡単に利用できるようにしたライブラリ |
Gaku0606 | 2:4c7bc164cc4d | 6 | * @note ローパスフィルタまわりの実装がまだです.外部でよろです! |
Gaku0606 | 2:4c7bc164cc4d | 7 | * @author Gaku MATSUMOTO |
Gaku0606 | 1:6a4c2f84180b | 8 | */ |
Gaku0606 | 1:6a4c2f84180b | 9 | |
Gaku0606 | 1:6a4c2f84180b | 10 | |
Gaku0606 | 0:d36bfb8300a2 | 11 | #define SLAVE_ADDR_LOW (0b1101000 << 1)//AD0 == LOW |
Gaku0606 | 0:d36bfb8300a2 | 12 | #define SLAVE_ADDR_HIGH (0b1101001 << 1)//AD0 == HIGH |
Gaku0606 | 0:d36bfb8300a2 | 13 | #define MAG_ADDR (0b0001100 << 1) |
Gaku0606 | 0:d36bfb8300a2 | 14 | |
Gaku0606 | 0:d36bfb8300a2 | 15 | #define WRITE_FLAG 0b00000000 |
Gaku0606 | 0:d36bfb8300a2 | 16 | #define READ_FLAG 0b00000001 |
Gaku0606 | 0:d36bfb8300a2 | 17 | #define CONFIG 0x1A |
Gaku0606 | 0:d36bfb8300a2 | 18 | #define GYRO_CONFIG 0x1B |
Gaku0606 | 0:d36bfb8300a2 | 19 | #define ACCEL_CONFIG 0x1C |
Gaku0606 | 0:d36bfb8300a2 | 20 | #define ACCEL_CONFIG2 0x1D |
Gaku0606 | 0:d36bfb8300a2 | 21 | #define LP_ACCEL_ODR 0x1E |
Gaku0606 | 0:d36bfb8300a2 | 22 | #define INT_PIN_CFG 0x37 |
Gaku0606 | 0:d36bfb8300a2 | 23 | #define ACCEL_XOUT_H 0x3B |
Gaku0606 | 0:d36bfb8300a2 | 24 | #define ACCEL_XOUT_L 0x3C |
Gaku0606 | 0:d36bfb8300a2 | 25 | #define ACCEL_YOUT_H 0x3D |
Gaku0606 | 0:d36bfb8300a2 | 26 | #define ACCEL_YOUT_L 0x3E |
Gaku0606 | 0:d36bfb8300a2 | 27 | #define ACCLE_ZOUT_H 0x3F |
Gaku0606 | 0:d36bfb8300a2 | 28 | #define ACCEL_ZOUT_L 0x40 |
Gaku0606 | 0:d36bfb8300a2 | 29 | #define TEMP_OUT_H 0x41 |
Gaku0606 | 0:d36bfb8300a2 | 30 | #define TEMP_OUT_L 0x42 |
Gaku0606 | 0:d36bfb8300a2 | 31 | #define GYRO_XOUT_H 0x43 |
Gaku0606 | 0:d36bfb8300a2 | 32 | #define GYRO_XOUT_L 0x44 |
Gaku0606 | 0:d36bfb8300a2 | 33 | #define GYRO_YOUT_H 0x45 |
Gaku0606 | 0:d36bfb8300a2 | 34 | #define GYRO_YOUT_L 0x46 |
Gaku0606 | 0:d36bfb8300a2 | 35 | #define GYRO_ZOUT_H 0x47 |
Gaku0606 | 0:d36bfb8300a2 | 36 | #define GYRO_ZOUT_L 0x48 |
Gaku0606 | 1:6a4c2f84180b | 37 | #define WHO_AM_I_MPU9250 0x75 //0x71ならおk |
Gaku0606 | 0:d36bfb8300a2 | 38 | #define XG_OFFSET_H 0x13 |
Gaku0606 | 0:d36bfb8300a2 | 39 | #define XG_OFFSET_L 0x14 |
Gaku0606 | 0:d36bfb8300a2 | 40 | #define YG_OFFSET_H 0x15 |
Gaku0606 | 0:d36bfb8300a2 | 41 | #define YG_OFFSET_L 0x16 |
Gaku0606 | 0:d36bfb8300a2 | 42 | #define ZG_OFFSET_H 0x17 |
Gaku0606 | 0:d36bfb8300a2 | 43 | #define ZG_OFFSET_L 0x18 |
Gaku0606 | 0:d36bfb8300a2 | 44 | #define XA_OFFSET_H 0x77 |
Gaku0606 | 0:d36bfb8300a2 | 45 | #define XA_OFFSET_L 0x78 |
Gaku0606 | 0:d36bfb8300a2 | 46 | #define YA_OFFSET_H 0x79 |
Gaku0606 | 0:d36bfb8300a2 | 47 | #define YA_OFFERT_L 0x80 |
Gaku0606 | 0:d36bfb8300a2 | 48 | #define ZA_OFFSET_H 0x81 |
Gaku0606 | 0:d36bfb8300a2 | 49 | #define ZA_OFFSET_L 0x82 |
Gaku0606 | 0:d36bfb8300a2 | 50 | |
Gaku0606 | 0:d36bfb8300a2 | 51 | #define WIA 0x00 //device ID |
Gaku0606 | 0:d36bfb8300a2 | 52 | #define INFO 0x01 |
Gaku0606 | 0:d36bfb8300a2 | 53 | #define ST1 0x02 |
Gaku0606 | 0:d36bfb8300a2 | 54 | #define HXL 0x03//Low -> Highの順に注意 |
Gaku0606 | 0:d36bfb8300a2 | 55 | #define HXH 0x04 |
Gaku0606 | 0:d36bfb8300a2 | 56 | #define HYL 0x05 |
Gaku0606 | 0:d36bfb8300a2 | 57 | #define HYH 0x06 |
Gaku0606 | 0:d36bfb8300a2 | 58 | #define HZL 0x07 |
Gaku0606 | 0:d36bfb8300a2 | 59 | #define HZH 0x08 |
Gaku0606 | 0:d36bfb8300a2 | 60 | #define ST2 0x09 |
Gaku0606 | 0:d36bfb8300a2 | 61 | #define CNTL1 0x0A |
Gaku0606 | 0:d36bfb8300a2 | 62 | #define CNTL2 0x0B |
Gaku0606 | 0:d36bfb8300a2 | 63 | |
Gaku0606 | 0:d36bfb8300a2 | 64 | #define ACC_LSB (0.0000610350)//[G / LSB] |
Gaku0606 | 0:d36bfb8300a2 | 65 | #define GYRO_LSB (0.007630) //[(degree / s) / LSB] |
Gaku0606 | 0:d36bfb8300a2 | 66 | #define MAG_LSB (0.150) //[uT / LSB] |
Gaku0606 | 0:d36bfb8300a2 | 67 | |
Gaku0606 | 0:d36bfb8300a2 | 68 | typedef enum AD0{ |
Gaku0606 | 0:d36bfb8300a2 | 69 | AD0_HIGH = 1, |
Gaku0606 | 0:d36bfb8300a2 | 70 | AD0_LOW = 0 |
Gaku0606 | 0:d36bfb8300a2 | 71 | }ad0; |
Gaku0606 | 0:d36bfb8300a2 | 72 | |
Gaku0606 | 0:d36bfb8300a2 | 73 | typedef enum ACC_RANGE{ |
Gaku0606 | 0:d36bfb8300a2 | 74 | _2G = 1, |
Gaku0606 | 0:d36bfb8300a2 | 75 | _4G = 2, |
Gaku0606 | 0:d36bfb8300a2 | 76 | _8G = 4, |
Gaku0606 | 0:d36bfb8300a2 | 77 | _16G = 8 |
Gaku0606 | 0:d36bfb8300a2 | 78 | }acc_range; |
Gaku0606 | 0:d36bfb8300a2 | 79 | |
Gaku0606 | 0:d36bfb8300a2 | 80 | typedef enum GYRO_RANGE{ |
Gaku0606 | 0:d36bfb8300a2 | 81 | _250DPS = 1, |
Gaku0606 | 0:d36bfb8300a2 | 82 | _500DPS = 2, |
Gaku0606 | 0:d36bfb8300a2 | 83 | _1000DPS = 4, |
Gaku0606 | 0:d36bfb8300a2 | 84 | _2000DPS = 8 |
Gaku0606 | 0:d36bfb8300a2 | 85 | }gyro_range; |
Gaku0606 | 0:d36bfb8300a2 | 86 | |
Gaku0606 | 0:d36bfb8300a2 | 87 | typedef enum MAG_RATE{ |
Gaku0606 | 0:d36bfb8300a2 | 88 | _8HZ = 0, |
Gaku0606 | 0:d36bfb8300a2 | 89 | _100HZ = 1 |
Gaku0606 | 0:d36bfb8300a2 | 90 | }mag_rate; |
Gaku0606 | 0:d36bfb8300a2 | 91 | |
Gaku0606 | 0:d36bfb8300a2 | 92 | typedef enum A_BAND_WIDTH{ |
Gaku0606 | 0:d36bfb8300a2 | 93 | NO_USE = 0b00000000, |
Gaku0606 | 0:d36bfb8300a2 | 94 | _460HZ = 0b00001000, |
Gaku0606 | 0:d36bfb8300a2 | 95 | _184HZ = 0b00001001, |
Gaku0606 | 0:d36bfb8300a2 | 96 | _92HZ = 0b00001010, |
Gaku0606 | 0:d36bfb8300a2 | 97 | _41HZ = 0b00001011, |
Gaku0606 | 0:d36bfb8300a2 | 98 | _20HZ = 0b00001100, |
Gaku0606 | 0:d36bfb8300a2 | 99 | _10HZ = 0b00001101, |
Gaku0606 | 0:d36bfb8300a2 | 100 | _5HZ = 0b00001110, |
Gaku0606 | 0:d36bfb8300a2 | 101 | }a_band_width; |
Gaku0606 | 0:d36bfb8300a2 | 102 | |
Gaku0606 | 0:d36bfb8300a2 | 103 | class mpu9250{ |
Gaku0606 | 0:d36bfb8300a2 | 104 | |
Gaku0606 | 0:d36bfb8300a2 | 105 | public: |
Gaku0606 | 1:6a4c2f84180b | 106 | |
Gaku0606 | 1:6a4c2f84180b | 107 | /** |
Gaku0606 | 2:4c7bc164cc4d | 108 | @bref mpu9250インスタンスを生成する |
Gaku0606 | 2:4c7bc164cc4d | 109 | @param _i2c メインプログラムで宣言したI2Cインスタンスのアドレス |
Gaku0606 | 1:6a4c2f84180b | 110 | @param celect AD0ピンがHIGHならAD0_HIGH,LOWならAD0_LOW |
Gaku0606 | 2:4c7bc164cc4d | 111 | @note 第二引数なしだとAD0_HIGHになります. |
Gaku0606 | 1:6a4c2f84180b | 112 | */ |
Gaku0606 | 1:6a4c2f84180b | 113 | mpu9250(I2C &_i2c, AD0 celect = AD0_HIGH); |
Gaku0606 | 2:4c7bc164cc4d | 114 | |
Gaku0606 | 0:d36bfb8300a2 | 115 | I2C *_nine; |
Gaku0606 | 0:d36bfb8300a2 | 116 | public: |
Gaku0606 | 0:d36bfb8300a2 | 117 | void writeReg(char addr, char data); |
Gaku0606 | 0:d36bfb8300a2 | 118 | void writeReg(char addr, char reg, char data); |
Gaku0606 | 0:d36bfb8300a2 | 119 | char readReg(char addr, char reg); |
Gaku0606 | 0:d36bfb8300a2 | 120 | void readReg(char addr, char start_reg, char* buff, char num); |
Gaku0606 | 1:6a4c2f84180b | 121 | |
Gaku0606 | 1:6a4c2f84180b | 122 | /** |
Gaku0606 | 2:4c7bc164cc4d | 123 | @bref 慣性センサと通信ができているか確認する |
Gaku0606 | 2:4c7bc164cc4d | 124 | @note trueが返ってきたら成功,falseなら... |
Gaku0606 | 1:6a4c2f84180b | 125 | */ |
Gaku0606 | 2:4c7bc164cc4d | 126 | bool senserTest(); |
Gaku0606 | 1:6a4c2f84180b | 127 | |
Gaku0606 | 1:6a4c2f84180b | 128 | /** |
Gaku0606 | 2:4c7bc164cc4d | 129 | @bref 地磁気センサと通信ができているか確認する |
Gaku0606 | 2:4c7bc164cc4d | 130 | @note trueが返ってきたら成功,falseなら... |
Gaku0606 | 1:6a4c2f84180b | 131 | */ |
Gaku0606 | 0:d36bfb8300a2 | 132 | bool mag_senserTest(); |
Gaku0606 | 1:6a4c2f84180b | 133 | |
Gaku0606 | 1:6a4c2f84180b | 134 | /** |
Gaku0606 | 2:4c7bc164cc4d | 135 | @bref 加速度センサのレンジを設定 |
Gaku0606 | 1:6a4c2f84180b | 136 | @param a_range _2G, _4G, _8G, _16Gの中から選択 |
Gaku0606 | 2:4c7bc164cc4d | 137 | @note 引数無しで±4Gになる |
Gaku0606 | 1:6a4c2f84180b | 138 | */ |
Gaku0606 | 1:6a4c2f84180b | 139 | void setAcc(ACC_RANGE a_range = _4G); |
Gaku0606 | 1:6a4c2f84180b | 140 | |
Gaku0606 | 1:6a4c2f84180b | 141 | /** |
Gaku0606 | 2:4c7bc164cc4d | 142 | @bref 角速度センサのレンジ設定 |
Gaku0606 | 1:6a4c2f84180b | 143 | @param g_range _250DPS, _500DPS, _1000DPS, _2000DPSの中から選択 |
Gaku0606 | 2:4c7bc164cc4d | 144 | @note 引数無しで±500DPS |
Gaku0606 | 1:6a4c2f84180b | 145 | */ |
Gaku0606 | 1:6a4c2f84180b | 146 | void setGyro(GYRO_RANGE g_range = _500DPS); |
Gaku0606 | 1:6a4c2f84180b | 147 | |
Gaku0606 | 1:6a4c2f84180b | 148 | /** |
Gaku0606 | 2:4c7bc164cc4d | 149 | @bref 地磁気センサのデータレート設定 |
Gaku0606 | 2:4c7bc164cc4d | 150 | @param rate _8HZ か _100HZを選択 |
Gaku0606 | 2:4c7bc164cc4d | 151 | @note あえて8Hzにする必要は無いと思います. |
Gaku0606 | 1:6a4c2f84180b | 152 | */ |
Gaku0606 | 1:6a4c2f84180b | 153 | void setMag(MAG_RATE rate = _100HZ); |
Gaku0606 | 2:4c7bc164cc4d | 154 | |
Gaku0606 | 0:d36bfb8300a2 | 155 | void init(); |
Gaku0606 | 1:6a4c2f84180b | 156 | |
Gaku0606 | 1:6a4c2f84180b | 157 | /** |
Gaku0606 | 1:6a4c2f84180b | 158 | @bref I2Cの通信速度を変更できます.余程のことがない限り使用しなくていいです・ |
Gaku0606 | 1:6a4c2f84180b | 159 | */ |
Gaku0606 | 0:d36bfb8300a2 | 160 | void frequency(int Hz); |
Gaku0606 | 1:6a4c2f84180b | 161 | |
Gaku0606 | 1:6a4c2f84180b | 162 | /** |
Gaku0606 | 2:4c7bc164cc4d | 163 | @bref mpu9250のデジタルローパスフィルタの設定 |
Gaku0606 | 2:4c7bc164cc4d | 164 | @param band NO_USE, _460HZ, _184HZ, _92HZ, _41HZ, _20HZ, _10HZ, _5HZから選択 |
Gaku0606 | 2:4c7bc164cc4d | 165 | @note カットオフ周波数なのかサンプルレートなのかよく分かりません.正直効果が見られません |
Gaku0606 | 1:6a4c2f84180b | 166 | */ |
Gaku0606 | 0:d36bfb8300a2 | 167 | void setAccLPF(A_BAND_WIDTH band); |
Gaku0606 | 1:6a4c2f84180b | 168 | |
Gaku0606 | 1:6a4c2f84180b | 169 | /** |
Gaku0606 | 2:4c7bc164cc4d | 170 | @bref ゼロ点のずれを補正するオフセット値を設定する |
Gaku0606 | 1:6a4c2f84180b | 171 | @param ax,ay,az 加速度のオフセット |
Gaku0606 | 1:6a4c2f84180b | 172 | @param gx,gy,gz 角速度のオフセット |
Gaku0606 | 1:6a4c2f84180b | 173 | @param mx,my,mz 地磁気のオフセット |
Gaku0606 | 2:4c7bc164cc4d | 174 | @note とても重要です.地磁気は定期的にキャリブレーションをしてください.ちなみに,これらの値は測定値より引かれています. |
Gaku0606 | 1:6a4c2f84180b | 175 | */ |
Gaku0606 | 0:d36bfb8300a2 | 176 | void setOffset(double ax, double ay, double az, |
Gaku0606 | 0:d36bfb8300a2 | 177 | double gx, double gy, double gz, |
Gaku0606 | 0:d36bfb8300a2 | 178 | double mx, double my, double mz); |
Gaku0606 | 2:4c7bc164cc4d | 179 | |
Gaku0606 | 1:6a4c2f84180b | 180 | /** |
Gaku0606 | 2:4c7bc164cc4d | 181 | @bref 加速度を取得します. |
Gaku0606 | 1:6a4c2f84180b | 182 | @param ax x軸方向の加速度[G] |
Gaku0606 | 1:6a4c2f84180b | 183 | @param ay y軸方向の加速度[G] |
Gaku0606 | 1:6a4c2f84180b | 184 | @param az z軸方向の加速度[G] |
Gaku0606 | 2:4c7bc164cc4d | 185 | @note 型はfloat でも doubleでも構いません. |
Gaku0606 | 1:6a4c2f84180b | 186 | */ |
Gaku0606 | 1:6a4c2f84180b | 187 | template<typename T>void getAcc(T *ax, T *ay, T *az); |
Gaku0606 | 2:4c7bc164cc4d | 188 | |
Gaku0606 | 1:6a4c2f84180b | 189 | /** |
Gaku0606 | 2:4c7bc164cc4d | 190 | @bref 加速度を取得します. |
Gaku0606 | 1:6a4c2f84180b | 191 | @param acc 各軸方向の加速度[G],x,y,zの順 |
Gaku0606 | 2:4c7bc164cc4d | 192 | @note 型はfloat でも doubleでも構いません. |
Gaku0606 | 1:6a4c2f84180b | 193 | */ |
Gaku0606 | 1:6a4c2f84180b | 194 | template<typename T>void getAcc(T *acc); |
Gaku0606 | 0:d36bfb8300a2 | 195 | |
Gaku0606 | 1:6a4c2f84180b | 196 | /** |
Gaku0606 | 2:4c7bc164cc4d | 197 | @bref 角速度を取得します. |
Gaku0606 | 1:6a4c2f84180b | 198 | @param gx x軸方向の角速度[degree/s] |
Gaku0606 | 1:6a4c2f84180b | 199 | @param gy y軸方向の角速度[degree/s] |
Gaku0606 | 1:6a4c2f84180b | 200 | @param gz z軸方向の角速度[degree/s] |
Gaku0606 | 2:4c7bc164cc4d | 201 | @note 型はfloat でも doubleでも構いません. |
Gaku0606 | 1:6a4c2f84180b | 202 | */ |
Gaku0606 | 1:6a4c2f84180b | 203 | template<typename T>void getGyro(T *gx, T *gy, T *gz); |
Gaku0606 | 2:4c7bc164cc4d | 204 | |
Gaku0606 | 1:6a4c2f84180b | 205 | /** |
Gaku0606 | 2:4c7bc164cc4d | 206 | @bref 角速度を取得します. |
Gaku0606 | 2:4c7bc164cc4d | 207 | @param gyro 各軸方向の角速度[degree/s], x,y,zの順 |
Gaku0606 | 2:4c7bc164cc4d | 208 | @note 型はfloat でも doubleでも構いません. |
Gaku0606 | 1:6a4c2f84180b | 209 | */ |
Gaku0606 | 1:6a4c2f84180b | 210 | template<typename T>void getGyro(T *gyro); |
Gaku0606 | 0:d36bfb8300a2 | 211 | |
Gaku0606 | 1:6a4c2f84180b | 212 | /** |
Gaku0606 | 2:4c7bc164cc4d | 213 | @bref 磁束密度を取得します. |
Gaku0606 | 1:6a4c2f84180b | 214 | @param mx x軸方向の磁束密度[uT] |
Gaku0606 | 1:6a4c2f84180b | 215 | @param my y軸方向の磁束密度[uT] |
Gaku0606 | 1:6a4c2f84180b | 216 | @param mz z軸方向の磁束密度[uT] |
Gaku0606 | 2:4c7bc164cc4d | 217 | @note 型はfloat でも doubleでも構いません. |
Gaku0606 | 1:6a4c2f84180b | 218 | */ |
Gaku0606 | 1:6a4c2f84180b | 219 | template<typename T>void getMag(T *mx, T *my, T *mz); |
Gaku0606 | 2:4c7bc164cc4d | 220 | |
Gaku0606 | 1:6a4c2f84180b | 221 | /** |
Gaku0606 | 2:4c7bc164cc4d | 222 | @bref 磁束密度を取得します. |
Gaku0606 | 1:6a4c2f84180b | 223 | @param mag 各軸方向の磁束密度[uT],x,y,zの順 |
Gaku0606 | 2:4c7bc164cc4d | 224 | @note 型はfloat でも doubleでも構いません. |
Gaku0606 | 1:6a4c2f84180b | 225 | */ |
Gaku0606 | 1:6a4c2f84180b | 226 | template<typename T>void getMag(T *mag); |
Gaku0606 | 0:d36bfb8300a2 | 227 | |
Gaku0606 | 1:6a4c2f84180b | 228 | /** |
Gaku0606 | 2:4c7bc164cc4d | 229 | @bref 角速度と加速度を同時に取得します. |
Gaku0606 | 1:6a4c2f84180b | 230 | @param imu データを入れる配列,角速度[degree/s],加速度[G]の順 |
Gaku0606 | 2:4c7bc164cc4d | 231 | @note 配列数は6以上で |
Gaku0606 | 1:6a4c2f84180b | 232 | */ |
Gaku0606 | 1:6a4c2f84180b | 233 | template<typename T>void getGyroAcc(T *imu);//gx,gy,gz,ax,ay,az |
Gaku0606 | 0:d36bfb8300a2 | 234 | |
Gaku0606 | 1:6a4c2f84180b | 235 | private: |
Gaku0606 | 0:d36bfb8300a2 | 236 | static char _addr; |
Gaku0606 | 0:d36bfb8300a2 | 237 | static double acc_coef;//coefficient |
Gaku0606 | 0:d36bfb8300a2 | 238 | static double gyro_coef; |
Gaku0606 | 0:d36bfb8300a2 | 239 | static double mag_coef; |
Gaku0606 | 0:d36bfb8300a2 | 240 | static double acc_offset[3]; |
Gaku0606 | 0:d36bfb8300a2 | 241 | static double gyro_offset[3]; |
Gaku0606 | 0:d36bfb8300a2 | 242 | static double mag_offset[3]; |
Gaku0606 | 0:d36bfb8300a2 | 243 | }; |
Gaku0606 | 0:d36bfb8300a2 | 244 | |
Gaku0606 | 0:d36bfb8300a2 | 245 | |
Gaku0606 | 0:d36bfb8300a2 | 246 | |
Gaku0606 | 0:d36bfb8300a2 | 247 | inline void mpu9250::writeReg(char addr, char data){ |
Gaku0606 | 0:d36bfb8300a2 | 248 | _nine->write( addr | WRITE_FLAG, &data, 1, false); |
Gaku0606 | 0:d36bfb8300a2 | 249 | } |
Gaku0606 | 0:d36bfb8300a2 | 250 | inline void mpu9250::writeReg(char addr, char reg, char data){ |
Gaku0606 | 0:d36bfb8300a2 | 251 | char temp[2] = { reg, data}; |
Gaku0606 | 0:d36bfb8300a2 | 252 | _nine->write(addr | WRITE_FLAG, temp, 2, false); |
Gaku0606 | 0:d36bfb8300a2 | 253 | } |
Gaku0606 | 0:d36bfb8300a2 | 254 | inline char mpu9250::readReg(char addr, char reg){ |
Gaku0606 | 0:d36bfb8300a2 | 255 | char buff[1]; |
Gaku0606 | 0:d36bfb8300a2 | 256 | writeReg(addr, reg); |
Gaku0606 | 0:d36bfb8300a2 | 257 | _nine->read(addr | READ_FLAG, buff, 1, true); |
Gaku0606 | 0:d36bfb8300a2 | 258 | return buff[0]; |
Gaku0606 | 0:d36bfb8300a2 | 259 | } |
Gaku0606 | 0:d36bfb8300a2 | 260 | inline void mpu9250::readReg(char addr, char start_reg, char* buff, char num){ |
Gaku0606 | 0:d36bfb8300a2 | 261 | writeReg(addr, start_reg); |
Gaku0606 | 0:d36bfb8300a2 | 262 | _nine->read(addr | READ_FLAG, buff, num, true); |
Gaku0606 | 0:d36bfb8300a2 | 263 | } |
Gaku0606 | 0:d36bfb8300a2 | 264 | |
Gaku0606 | 0:d36bfb8300a2 | 265 | #endif |