eCompass (6-axes electronic compass) / Electronic Compass with Three-axis Magnetic Field Sensor and Three-axis Accelerometer by Bosch Sensortech

Dependents:   BLE_EddystoneBeacon_w_ACC_TY51822

Committer:
kenjiArai
Date:
Wed Aug 23 09:22:29 2017 +0000
Revision:
3:24aa4d5fa7de
Parent:
2:93141eb80862
countermeasure for  NonCopyable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:8de5e2fd5c48 1 /*
kenjiArai 0:8de5e2fd5c48 2 * mbed library program
kenjiArai 0:8de5e2fd5c48 3 * BMC050 COMPASS 6 AXIS, made by Bosch Sensortec
kenjiArai 0:8de5e2fd5c48 4 * http://jp.bosch-sensortec.com/content/language1/html/5033.htm
kenjiArai 0:8de5e2fd5c48 5 *
kenjiArai 3:24aa4d5fa7de 6 * Copyright (c) 2014,'16,'17 Kenji Arai / JH1PJL
kenjiArai 0:8de5e2fd5c48 7 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:8de5e2fd5c48 8 * http://mbed.org/users/kenjiArai/
kenjiArai 3:24aa4d5fa7de 9 * Created: July 19th, 2014
kenjiArai 3:24aa4d5fa7de 10 * Revised: August 23rd, 2017
kenjiArai 0:8de5e2fd5c48 11 */
kenjiArai 0:8de5e2fd5c48 12
kenjiArai 0:8de5e2fd5c48 13 #ifndef BMC050_H
kenjiArai 0:8de5e2fd5c48 14 #define BMC050_H
kenjiArai 0:8de5e2fd5c48 15
kenjiArai 0:8de5e2fd5c48 16 #include "mbed.h"
kenjiArai 0:8de5e2fd5c48 17
kenjiArai 1:b022f8d7884d 18 ////////////// ADDRESS DEFINITION ///////////////
kenjiArai 0:8de5e2fd5c48 19 // BMC050 Address/accelerometer
kenjiArai 0:8de5e2fd5c48 20 // 7bit address = 0b001100x(0x18 or 0x19 depends on SDO)
kenjiArai 0:8de5e2fd5c48 21 // -> 8bit = 0b001100x0(0x30,0x32) -> 0x31,0x33(Read) or 0x30,0x32(Write)
kenjiArai 0:8de5e2fd5c48 22 #define BMC050_A_G_CHIP_ADDR 0x30 // SDO pin = Ground
kenjiArai 0:8de5e2fd5c48 23 #define BMC050_A_V_CHIP_ADDR 0x32 // SDO pin = Vdd
kenjiArai 0:8de5e2fd5c48 24 // BMC050 Address/magnetometer
kenjiArai 0:8de5e2fd5c48 25 // 7bit address = 0b001000x(0x10,0x11,0x12 or 0x13 depends on SDO and CSB2)
kenjiArai 0:8de5e2fd5c48 26 // -> 8bit = 0b00100xx0(0x20,0x22,0x24,0x26)
kenjiArai 0:8de5e2fd5c48 27 #define BMC050_M_GG_CHIP_ADDR 0x20 // CSB2 pin = Ground, SDO pin = Ground
kenjiArai 0:8de5e2fd5c48 28 #define BMC050_M_GV_CHIP_ADDR 0x22 // CSB2 pin = Ground, SDO pin = Vdd
kenjiArai 0:8de5e2fd5c48 29 #define BMC050_M_VG_CHIP_ADDR 0x24 // CSB2 pin = Vdd, SDO pin = Ground
kenjiArai 0:8de5e2fd5c48 30 #define BMC050_M_VV_CHIP_ADDR 0x26 // CSB2 pin = Vdd, SDO pin = Vdd
kenjiArai 1:b022f8d7884d 31 #define BMC050_MAG_NOT_USED_ADDR 0xff // If you only used acc and keep mag as suspend
kenjiArai 0:8de5e2fd5c48 32
kenjiArai 0:8de5e2fd5c48 33 // BMC050 ACC ID
kenjiArai 0:8de5e2fd5c48 34 #define I_AM_BMC050_ACC 0x03
kenjiArai 0:8de5e2fd5c48 35 // BMC050 ACC ID
kenjiArai 0:8de5e2fd5c48 36 #define I_AM_BMC050_MAG 0x32
kenjiArai 0:8de5e2fd5c48 37
kenjiArai 1:b022f8d7884d 38 ////////////// REGISTER DEFINITION //////////////
kenjiArai 0:8de5e2fd5c48 39 // accelerometer
kenjiArai 0:8de5e2fd5c48 40 #define BMC050_A_WHO_AM_I 0x00
kenjiArai 0:8de5e2fd5c48 41 // reserved
kenjiArai 0:8de5e2fd5c48 42 #define BMC050_A_OUT_X_L 0x02
kenjiArai 0:8de5e2fd5c48 43 #define BMC050_A_OUT_X_H 0x03
kenjiArai 0:8de5e2fd5c48 44 #define BMC050_A_OUT_Y_L 0x04
kenjiArai 0:8de5e2fd5c48 45 #define BMC050_A_OUT_Y_H 0x05
kenjiArai 0:8de5e2fd5c48 46 #define BMC050_A_OUT_Z_L 0x06
kenjiArai 0:8de5e2fd5c48 47 #define BMC050_A_OUT_Z_H 0x07
kenjiArai 0:8de5e2fd5c48 48 #define BMC050_A_OUT_TEMP 0x08
kenjiArai 0:8de5e2fd5c48 49 #define BMC050_A_STATUS_REG0 0x09
kenjiArai 0:8de5e2fd5c48 50 #define BMC050_A_STATUS_REG1 0x0a
kenjiArai 0:8de5e2fd5c48 51 #define BMC050_A_STATUS_REG2 0x0b
kenjiArai 0:8de5e2fd5c48 52 #define BMC050_A_STATUS_REG3 0x0c
kenjiArai 0:8de5e2fd5c48 53 // reserved
kenjiArai 0:8de5e2fd5c48 54 // reserved
kenjiArai 0:8de5e2fd5c48 55 #define BMC050_A_G_RANGE 0x0f
kenjiArai 0:8de5e2fd5c48 56 #define BMC050_A_BANDWIDTH 0x10
kenjiArai 0:8de5e2fd5c48 57 #define BMC050_A_POWER_MODE 0x11
kenjiArai 0:8de5e2fd5c48 58 // reserved
kenjiArai 0:8de5e2fd5c48 59 #define BMC050_A_FILTER 0x13
kenjiArai 0:8de5e2fd5c48 60 #define BMC050_A_SW_RESET 0x14
kenjiArai 0:8de5e2fd5c48 61 // not implement yet 0x15 to 0x35
kenjiArai 0:8de5e2fd5c48 62 #define BMC050_A_OFST_COMP0 0x36
kenjiArai 0:8de5e2fd5c48 63 #define BMC050_A_OFST_COMP1 0x37
kenjiArai 0:8de5e2fd5c48 64 #define BMC050_A_OFST_COMP_DX 0x38
kenjiArai 0:8de5e2fd5c48 65 #define BMC050_A_OFST_COMP_DY 0x39
kenjiArai 0:8de5e2fd5c48 66 #define BMC050_A_OFST_COMP_DZ 0x3a
kenjiArai 0:8de5e2fd5c48 67 #define BMC050_A_OFST_COMP_DX_UF 0x3b
kenjiArai 0:8de5e2fd5c48 68 #define BMC050_A_OFST_COMP_DY_UF 0x3c
kenjiArai 0:8de5e2fd5c48 69 #define BMC050_A_OFST_COMP_DZ_UF 0x3d
kenjiArai 0:8de5e2fd5c48 70
kenjiArai 0:8de5e2fd5c48 71 // magnetometer
kenjiArai 0:8de5e2fd5c48 72 #define BMC050_M_WHO_AM_I 0x40
kenjiArai 0:8de5e2fd5c48 73 // reserved
kenjiArai 0:8de5e2fd5c48 74 #define BMC050_M_OUT_X_L 0x42
kenjiArai 0:8de5e2fd5c48 75 #define BMC050_M_OUT_X_H 0x43
kenjiArai 0:8de5e2fd5c48 76 #define BMC050_M_OUT_Y_L 0x44
kenjiArai 0:8de5e2fd5c48 77 #define BMC050_M_OUT_Y_H 0x45
kenjiArai 0:8de5e2fd5c48 78 #define BMC050_M_OUT_Z_L 0x46
kenjiArai 0:8de5e2fd5c48 79 #define BMC050_M_OUT_Z_H 0x47
kenjiArai 0:8de5e2fd5c48 80 #define BMC050_M_HALL_L 0x48
kenjiArai 0:8de5e2fd5c48 81 #define BMC050_M_HALL_H 0x49
kenjiArai 0:8de5e2fd5c48 82 #define BMC050_M_INTERRUPT 0x4a
kenjiArai 0:8de5e2fd5c48 83 #define BMC050_M_POWER_MODE 0x4b
kenjiArai 0:8de5e2fd5c48 84 #define BMC050_M_OPERATION 0x4c
kenjiArai 0:8de5e2fd5c48 85 // not implement yet 0x4d to 0x50
kenjiArai 0:8de5e2fd5c48 86 #define BMC050_M_REPETITION_XY 0x51
kenjiArai 0:8de5e2fd5c48 87 #define BMC050_M_REPETITION_Z 0x51
kenjiArai 0:8de5e2fd5c48 88
kenjiArai 1:b022f8d7884d 89 ////////////// CONTROL DEFINITION ///////////////
kenjiArai 0:8de5e2fd5c48 90 // Full Scale
kenjiArai 0:8de5e2fd5c48 91 #define BMC050_FS_2G 0x03
kenjiArai 0:8de5e2fd5c48 92 #define BMC050_FS_4G 0x05
kenjiArai 0:8de5e2fd5c48 93 #define BMC050_FS_8G 0x08
kenjiArai 0:8de5e2fd5c48 94 #define BMC050_FS_16G 0x0c
kenjiArai 0:8de5e2fd5c48 95 // Bandwidth (Low pass)
kenjiArai 0:8de5e2fd5c48 96 #define BMC050_NOT_FILTERED 0x00
kenjiArai 0:8de5e2fd5c48 97 #define BMC050_BW_7R81 0x08
kenjiArai 0:8de5e2fd5c48 98 #define BMC050_BW_15R63 0x09
kenjiArai 0:8de5e2fd5c48 99 #define BMC050_BW_31R25 0x0a
kenjiArai 0:8de5e2fd5c48 100 #define BMC050_BW_62R5 0x0b
kenjiArai 0:8de5e2fd5c48 101 #define BMC050_BW_125 0x0c
kenjiArai 0:8de5e2fd5c48 102 #define BMC050_BW_250 0x0d
kenjiArai 0:8de5e2fd5c48 103 #define BMC050_BW_500 0x0e
kenjiArai 0:8de5e2fd5c48 104 #define BMC050_BW_1000 0x0f
kenjiArai 0:8de5e2fd5c48 105
kenjiArai 0:8de5e2fd5c48 106 // Output Data Rate (ODR)
kenjiArai 0:8de5e2fd5c48 107 #define BMC050_DR_10 0
kenjiArai 0:8de5e2fd5c48 108 #define BMC050_DR_2 1
kenjiArai 0:8de5e2fd5c48 109 #define BMC050_DR_6 2
kenjiArai 0:8de5e2fd5c48 110 #define BMC050_DR_8 3
kenjiArai 0:8de5e2fd5c48 111 #define BMC050_DR_15 4
kenjiArai 0:8de5e2fd5c48 112 #define BMC050_DR_20 5
kenjiArai 0:8de5e2fd5c48 113 #define BMC050_DR_25 6
kenjiArai 0:8de5e2fd5c48 114 #define BMC050_DR_30 7
kenjiArai 0:8de5e2fd5c48 115
kenjiArai 0:8de5e2fd5c48 116 // definition for Nomalization
kenjiArai 2:93141eb80862 117 //Gravity at Earth's surface in m/s/s
kenjiArai 0:8de5e2fd5c48 118 #define GRAVITY (9.80665F)
kenjiArai 0:8de5e2fd5c48 119 #define BMC050_GAIN (3.91F)
kenjiArai 1:b022f8d7884d 120 #define BMC050_DUMMY 0
kenjiArai 0:8de5e2fd5c48 121
kenjiArai 1:b022f8d7884d 122 ////////////// DATA TYPE DEFINITION /////////////
kenjiArai 0:8de5e2fd5c48 123 typedef struct {
kenjiArai 0:8de5e2fd5c48 124 uint8_t addr;
kenjiArai 0:8de5e2fd5c48 125 uint8_t g_range;
kenjiArai 0:8de5e2fd5c48 126 uint8_t bandwith;
kenjiArai 0:8de5e2fd5c48 127 uint8_t filter;
kenjiArai 0:8de5e2fd5c48 128 } BMC050ACC_TypeDef;
kenjiArai 0:8de5e2fd5c48 129
kenjiArai 0:8de5e2fd5c48 130 typedef struct {
kenjiArai 0:8de5e2fd5c48 131 uint8_t addr;
kenjiArai 0:8de5e2fd5c48 132 uint8_t data_rate;
kenjiArai 0:8de5e2fd5c48 133 } BMC050MAG_TypeDef;
kenjiArai 0:8de5e2fd5c48 134
kenjiArai 0:8de5e2fd5c48 135 /** Interface for Bosch Sensortec COMPASS 6 AXIS
kenjiArai 0:8de5e2fd5c48 136 * Chip: BMC050, two chips configuration (Accelerometer 3axis & Magnetometer 3axis)
kenjiArai 0:8de5e2fd5c48 137 *
kenjiArai 0:8de5e2fd5c48 138 * @code
kenjiArai 0:8de5e2fd5c48 139 * #include "mbed.h"
kenjiArai 0:8de5e2fd5c48 140 *
kenjiArai 0:8de5e2fd5c48 141 * const BMC050ACC_TypeDef acc_parameter = {
kenjiArai 0:8de5e2fd5c48 142 * BMC050_A_G_CHIP_ADDR, // I2C Address
kenjiArai 0:8de5e2fd5c48 143 * BMC050_FS_2G, // G-range slection
kenjiArai 0:8de5e2fd5c48 144 * BMC050_BW_250, // Bandwidth
kenjiArai 0:8de5e2fd5c48 145 * };
kenjiArai 1:b022f8d7884d 146 *
kenjiArai 1:b022f8d7884d 147 * #if 1
kenjiArai 0:8de5e2fd5c48 148 * const BMC050MAG_TypeDef mag_parameter = {
kenjiArai 0:8de5e2fd5c48 149 * BMC050_M_GG_CHIP_ADDR,// I2C Address
kenjiArai 0:8de5e2fd5c48 150 * BMC050_DR_10 // Data Rate
kenjiArai 0:8de5e2fd5c48 151 * };
kenjiArai 1:b022f8d7884d 152 * #else // If you would like to keep "Suspend mode" for mag
kenjiArai 1:b022f8d7884d 153 * const BMC050MAG_TypeDef mag_parameter = {
kenjiArai 1:b022f8d7884d 154 * BMC050_MAG_NOT_USED_ADDR,// Not use mag sensor
kenjiArai 1:b022f8d7884d 155 * BMC050_DUMMY // dummy
kenjiArai 1:b022f8d7884d 156 * };
kenjiArai 1:b022f8d7884d 157 * #endif
kenjiArai 0:8de5e2fd5c48 158 *
kenjiArai 0:8de5e2fd5c48 159 * // I2C Communication
kenjiArai 0:8de5e2fd5c48 160 * I2C i2c(dp5,dp27); // SDA, SCL
kenjiArai 0:8de5e2fd5c48 161 * BMC050 bmc050(i2c, &acc_parameter, &mag_parameter);
kenjiArai 0:8de5e2fd5c48 162 *
kenjiArai 0:8de5e2fd5c48 163 * int main() {
kenjiArai 0:8de5e2fd5c48 164 * float fa[3];
kenjiArai 0:8de5e2fd5c48 165 * float fg[3];
kenjiArai 0:8de5e2fd5c48 166 *
kenjiArai 2:93141eb80862 167 * if (bmc050.read_id_acc() == I_AM_BMC050_ACC){
kenjiArai 0:8de5e2fd5c48 168 * bmc050.read_data_acc(fa);
kenjiArai 0:8de5e2fd5c48 169 * }
kenjiArai 2:93141eb80862 170 * if (bmc050.read_id_mag() == I_AM_BMC050_MAG){
kenjiArai 0:8de5e2fd5c48 171 * bmc050.read_data_mag(fg);
kenjiArai 0:8de5e2fd5c48 172 * }
kenjiArai 0:8de5e2fd5c48 173 * }
kenjiArai 0:8de5e2fd5c48 174 * @endcode
kenjiArai 0:8de5e2fd5c48 175 */
kenjiArai 0:8de5e2fd5c48 176
kenjiArai 0:8de5e2fd5c48 177 class BMC050{
kenjiArai 0:8de5e2fd5c48 178 public:
kenjiArai 0:8de5e2fd5c48 179 /** Configure data pin
kenjiArai 0:8de5e2fd5c48 180 * @param data SDA and SCL pins
kenjiArai 0:8de5e2fd5c48 181 * @param parameter address for acc (BMC050ACC_TypeDef)
kenjiArai 0:8de5e2fd5c48 182 * @param parameter address for mag (BMC050MAG_TypeDef)
kenjiArai 0:8de5e2fd5c48 183 */
kenjiArai 0:8de5e2fd5c48 184 BMC050(PinName p_sda, PinName p_scl,
kenjiArai 0:8de5e2fd5c48 185 const BMC050ACC_TypeDef *acc_parameter, const BMC050MAG_TypeDef *mag_parameter);
kenjiArai 0:8de5e2fd5c48 186
kenjiArai 0:8de5e2fd5c48 187 /** Configure data pin (with other devices on I2C line)
kenjiArai 0:8de5e2fd5c48 188 * @param I2C previous definition
kenjiArai 0:8de5e2fd5c48 189 * @param other parameters -> please see BMC050(PinName p_sda, PinName p_scl,...)
kenjiArai 0:8de5e2fd5c48 190 */
kenjiArai 0:8de5e2fd5c48 191 BMC050(I2C& p_i2c,
kenjiArai 0:8de5e2fd5c48 192 const BMC050ACC_TypeDef *acc_parameter, const BMC050MAG_TypeDef *mag_parameter);
kenjiArai 0:8de5e2fd5c48 193
kenjiArai 0:8de5e2fd5c48 194 /** Read a float type data from accelerometer
kenjiArai 0:8de5e2fd5c48 195 * @param float type of three arry's address, e.g. float dt[3];
kenjiArai 0:8de5e2fd5c48 196 * @return acc motion data unit: m/s/s
kenjiArai 0:8de5e2fd5c48 197 * @return dt[0]->x, dt[1]->y, dt[2]->z
kenjiArai 0:8de5e2fd5c48 198 */
kenjiArai 0:8de5e2fd5c48 199 void read_data_acc(float *dt);
kenjiArai 0:8de5e2fd5c48 200
kenjiArai 1:b022f8d7884d 201 /** Read a float type data from accelerometer
kenjiArai 1:b022f8d7884d 202 * @param float type of three arry's address, e.g. float dt[3];
kenjiArai 1:b022f8d7884d 203 * @return acc motion data unit: mg
kenjiArai 1:b022f8d7884d 204 * @return dt[0]->x, dt[1]->y, dt[2]->z
kenjiArai 1:b022f8d7884d 205 */
kenjiArai 1:b022f8d7884d 206 void read_mg_acc(float *dt);
kenjiArai 1:b022f8d7884d 207
kenjiArai 0:8de5e2fd5c48 208 /** Read a float type data from magnetometer
kenjiArai 0:8de5e2fd5c48 209 * @param float type of three arry's address, e.g. float dt[3];
kenjiArai 0:8de5e2fd5c48 210 * @return magnettic field data unit: uT(micro T)
kenjiArai 0:8de5e2fd5c48 211 * @return dt[0]->x, dt[1]->y, dt[2]->z
kenjiArai 0:8de5e2fd5c48 212 */
kenjiArai 0:8de5e2fd5c48 213 void read_data_mag(float *dt);
kenjiArai 0:8de5e2fd5c48 214
kenjiArai 0:8de5e2fd5c48 215 /** Read temperature data
kenjiArai 0:8de5e2fd5c48 216 * @param none
kenjiArai 0:8de5e2fd5c48 217 * @return temperature unit: deg.C
kenjiArai 0:8de5e2fd5c48 218 */
kenjiArai 0:8de5e2fd5c48 219 float read_temp();
kenjiArai 0:8de5e2fd5c48 220
kenjiArai 0:8de5e2fd5c48 221 /** Read a acc chip ID number
kenjiArai 0:8de5e2fd5c48 222 * @param none
kenjiArai 0:8de5e2fd5c48 223 * @return should be I_AM_BMC050_ACC(0x03)
kenjiArai 0:8de5e2fd5c48 224 */
kenjiArai 0:8de5e2fd5c48 225 uint8_t read_id_acc();
kenjiArai 0:8de5e2fd5c48 226
kenjiArai 0:8de5e2fd5c48 227 /** Read a mag chip ID number
kenjiArai 0:8de5e2fd5c48 228 * @param none
kenjiArai 0:8de5e2fd5c48 229 * @return should be I_AM_BMC050_MAG(0x32)
kenjiArai 0:8de5e2fd5c48 230 */
kenjiArai 0:8de5e2fd5c48 231 uint8_t read_id_mag();
kenjiArai 0:8de5e2fd5c48 232
kenjiArai 0:8de5e2fd5c48 233 /** Read Data Ready flag /Acc
kenjiArai 0:8de5e2fd5c48 234 * @param none
kenjiArai 0:8de5e2fd5c48 235 * @return 1 = Ready
kenjiArai 0:8de5e2fd5c48 236 */
kenjiArai 0:8de5e2fd5c48 237 uint8_t data_ready_acc();
kenjiArai 0:8de5e2fd5c48 238
kenjiArai 0:8de5e2fd5c48 239 /** Read Data Ready flag /Mag
kenjiArai 0:8de5e2fd5c48 240 * @param none
kenjiArai 0:8de5e2fd5c48 241 * @return 1 = Ready
kenjiArai 0:8de5e2fd5c48 242 */
kenjiArai 0:8de5e2fd5c48 243 uint8_t data_ready_mag();
kenjiArai 0:8de5e2fd5c48 244
kenjiArai 0:8de5e2fd5c48 245 /** Read register (general purpose)
kenjiArai 0:8de5e2fd5c48 246 * @param register's address
kenjiArai 0:8de5e2fd5c48 247 * @return register data
kenjiArai 0:8de5e2fd5c48 248 */
kenjiArai 0:8de5e2fd5c48 249 uint8_t read_reg_acc(uint8_t addr);
kenjiArai 1:b022f8d7884d 250
kenjiArai 1:b022f8d7884d 251 /** Read register (general purpose)
kenjiArai 1:b022f8d7884d 252 * @param register's address
kenjiArai 1:b022f8d7884d 253 * @return register data
kenjiArai 1:b022f8d7884d 254 */
kenjiArai 0:8de5e2fd5c48 255 uint8_t read_reg_mag(uint8_t addr);
kenjiArai 0:8de5e2fd5c48 256
kenjiArai 1:b022f8d7884d 257 /** Set I2C clock frequency
kenjiArai 1:b022f8d7884d 258 * @param freq.
kenjiArai 1:b022f8d7884d 259 * @return none
kenjiArai 1:b022f8d7884d 260 */
kenjiArai 1:b022f8d7884d 261 void frequency(int hz);
kenjiArai 1:b022f8d7884d 262
kenjiArai 0:8de5e2fd5c48 263 /** Write register (general purpose)
kenjiArai 0:8de5e2fd5c48 264 * @param register's address
kenjiArai 0:8de5e2fd5c48 265 * @param data
kenjiArai 0:8de5e2fd5c48 266 * @return none
kenjiArai 0:8de5e2fd5c48 267 */
kenjiArai 0:8de5e2fd5c48 268 void write_reg_acc(uint8_t addr, uint8_t data);
kenjiArai 1:b022f8d7884d 269
kenjiArai 1:b022f8d7884d 270 /** Write register (general purpose)
kenjiArai 1:b022f8d7884d 271 * @param register's address
kenjiArai 1:b022f8d7884d 272 * @param data
kenjiArai 1:b022f8d7884d 273 * @return none
kenjiArai 1:b022f8d7884d 274 */
kenjiArai 0:8de5e2fd5c48 275 void write_reg_mag(uint8_t addr, uint8_t data);
kenjiArai 0:8de5e2fd5c48 276
kenjiArai 0:8de5e2fd5c48 277 protected:
kenjiArai 0:8de5e2fd5c48 278 void initialize(const BMC050ACC_TypeDef *acc_parameter,
kenjiArai 0:8de5e2fd5c48 279 const BMC050MAG_TypeDef *mag_parameter);
kenjiArai 0:8de5e2fd5c48 280
kenjiArai 3:24aa4d5fa7de 281 I2C *_i2c_p;
kenjiArai 3:24aa4d5fa7de 282 I2C &_i2c;
kenjiArai 0:8de5e2fd5c48 283
kenjiArai 0:8de5e2fd5c48 284 private:
kenjiArai 2:93141eb80862 285 float fs_factor_acc; // full scale factor
kenjiArai 2:93141eb80862 286 char dbf[2]; // working buffer
kenjiArai 0:8de5e2fd5c48 287 uint8_t acc_addr; // acc sensor address
kenjiArai 0:8de5e2fd5c48 288 uint8_t acc_id; // acc ID
kenjiArai 0:8de5e2fd5c48 289 uint8_t acc_ready; // acc is on I2C line = 1, not = 0
kenjiArai 0:8de5e2fd5c48 290 uint8_t mag_addr; // mag sensor address
kenjiArai 0:8de5e2fd5c48 291 uint8_t mag_id; // mag ID
kenjiArai 0:8de5e2fd5c48 292 uint8_t mag_ready; // mag is on I2C line = 1, not = 0
kenjiArai 0:8de5e2fd5c48 293 };
kenjiArai 0:8de5e2fd5c48 294
kenjiArai 0:8de5e2fd5c48 295 #endif // BMC050_H
kenjiArai 3:24aa4d5fa7de 296