BMX055に4線式SPIモードで接続するためのライブラリです

Dependents:   SensorManager

Committer:
kim1212
Date:
Tue Feb 13 04:13:42 2018 +0000
Revision:
1:fed25406cc14
Parent:
0:c317a0f96763
??????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kim1212 0:c317a0f96763 1 #ifndef BMX055_H
kim1212 0:c317a0f96763 2 #define BMX055_H
kim1212 0:c317a0f96763 3
kim1212 0:c317a0f96763 4 /*
kim1212 0:c317a0f96763 5 //example
kim1212 0:c317a0f96763 6 BMX055 bmx(D11,D12,D13,D10,D9,D8);//(mosi,miso,sck,CSB1,CSB2,CSB3) conntect 4-wire spi mode
kim1212 0:c317a0f96763 7
kim1212 0:c317a0f96763 8 int main() {
kim1212 0:c317a0f96763 9
kim1212 0:c317a0f96763 10
kim1212 0:c317a0f96763 11 while(1) {
kim1212 0:c317a0f96763 12 float mag[4];
kim1212 0:c317a0f96763 13 while(bmx.read_mag(mag)==false);
kim1212 0:c317a0f96763 14 printf("%d,%d,%d,%d\r\n",(int)mag[0],(int)mag[1],(int)mag[2],(int)mag[3]);
kim1212 0:c317a0f96763 15 }
kim1212 0:c317a0f96763 16
kim1212 0:c317a0f96763 17 while(1) {
kim1212 0:c317a0f96763 18 float gyr[3];
kim1212 0:c317a0f96763 19 while(bmx.read_gyr(gyr)==false);
kim1212 0:c317a0f96763 20 printf("%d,%d,%d\r\n",(int)gyr[0],(int)gyr[1],(int)gyr[2]);
kim1212 0:c317a0f96763 21 }
kim1212 0:c317a0f96763 22
kim1212 0:c317a0f96763 23 while(1) {
kim1212 0:c317a0f96763 24 float acc[3];
kim1212 0:c317a0f96763 25 while(bmx.read_acc(acc)==false);
kim1212 0:c317a0f96763 26 printf("%d,%d,%d\r\n",(int)acc[0],(int)acc[1],(int)acc[2]);
kim1212 0:c317a0f96763 27 }
kim1212 0:c317a0f96763 28 }
kim1212 0:c317a0f96763 29 */
kim1212 0:c317a0f96763 30
kim1212 0:c317a0f96763 31
kim1212 0:c317a0f96763 32 #define RANGE_2G 0b0011 //acc range
kim1212 0:c317a0f96763 33 #define RANGE_4G 0b0101
kim1212 0:c317a0f96763 34 #define RANGE_8G 0b1000
kim1212 0:c317a0f96763 35 #define RANGE_16G 0b1100
kim1212 0:c317a0f96763 36
kim1212 0:c317a0f96763 37 #define BW_7_81 0b01000 //acc bandwidth
kim1212 0:c317a0f96763 38 #define BW_15_63 0b01001
kim1212 0:c317a0f96763 39 #define BW_31_25 0b01010
kim1212 0:c317a0f96763 40 #define BW_62_5 0b01011
kim1212 0:c317a0f96763 41 #define BW_125 0b01100
kim1212 0:c317a0f96763 42 #define BW_250 0b01101
kim1212 0:c317a0f96763 43 #define BW_500 0b01110
kim1212 0:c317a0f96763 44 #define BW_1000 0b01111
kim1212 0:c317a0f96763 45
kim1212 0:c317a0f96763 46 #define RANGE_2000 0b000 //gyro range
kim1212 0:c317a0f96763 47 #define RANGE_1000 0b001
kim1212 0:c317a0f96763 48 #define RANGE_500 0b010
kim1212 0:c317a0f96763 49 #define RANGE_250 0b011
kim1212 0:c317a0f96763 50 #define RANGE_125 0b100
kim1212 0:c317a0f96763 51
kim1212 0:c317a0f96763 52
kim1212 0:c317a0f96763 53 #define ODR_BW_100_32 0b0111 //gyro output data rate and bandwidth
kim1212 0:c317a0f96763 54 #define ODR_BW_200_64 0b0110
kim1212 0:c317a0f96763 55 #define ODR_BW_100_12 0b0101
kim1212 0:c317a0f96763 56 #define ODR_BW_200_23 0b0100
kim1212 0:c317a0f96763 57 #define ODR_BW_400_47 0b0111
kim1212 0:c317a0f96763 58 #define ODR_BW_1000_116 0b0110
kim1212 0:c317a0f96763 59 #define ODR_BW_2000_230 0b0101
kim1212 0:c317a0f96763 60 #define ODR_BW_2000_523 0b0100
kim1212 0:c317a0f96763 61
kim1212 0:c317a0f96763 62
kim1212 0:c317a0f96763 63
kim1212 0:c317a0f96763 64
kim1212 0:c317a0f96763 65 #include "mbed.h"
kim1212 0:c317a0f96763 66
kim1212 0:c317a0f96763 67 class BMX055 {
kim1212 0:c317a0f96763 68 public:
kim1212 0:c317a0f96763 69 BMX055(PinName mosi,PinName miso,PinName sck,PinName _accss,PinName _gyrss,PinName _magss);
kim1212 0:c317a0f96763 70
kim1212 0:c317a0f96763 71 char readbyte_acc(char adr);
kim1212 0:c317a0f96763 72 void readnbyte_acc(char adr,char *data,char num);//numは配列の数
kim1212 0:c317a0f96763 73 void writebyte_acc(char adr,char data);
kim1212 1:fed25406cc14 74 bool read_acc(short *acc);
kim1212 0:c317a0f96763 75 char read_temp();
kim1212 0:c317a0f96763 76 void calib_acc();
kim1212 0:c317a0f96763 77 void init_acc(char range,char bw);
kim1212 0:c317a0f96763 78
kim1212 0:c317a0f96763 79
kim1212 0:c317a0f96763 80 char readbyte_gyr(char adr);
kim1212 0:c317a0f96763 81 void readnbyte_gyr(char adr,char *data,char num);//numは配列の数
kim1212 0:c317a0f96763 82 void writebyte_gyr(char adr,char data);
kim1212 1:fed25406cc14 83 bool read_gyr(short *gyr);
kim1212 0:c317a0f96763 84 void calib_gyr();
kim1212 0:c317a0f96763 85 void init_gyr(char range,char odr_bw);
kim1212 0:c317a0f96763 86
kim1212 0:c317a0f96763 87 char readbyte_mag(char adr);
kim1212 0:c317a0f96763 88 void writebyte_mag(char adr,char data);
kim1212 0:c317a0f96763 89 void readnbyte_mag(char adr,char *data,char num);//numは配列の数
kim1212 1:fed25406cc14 90 bool read_mag(short *mag);
kim1212 1:fed25406cc14 91 void init_mag(unsigned char REPXY,unsigned char REPZ);
kim1212 0:c317a0f96763 92
kim1212 0:c317a0f96763 93
kim1212 0:c317a0f96763 94
kim1212 0:c317a0f96763 95 void offset();
kim1212 0:c317a0f96763 96
kim1212 0:c317a0f96763 97 private:
kim1212 0:c317a0f96763 98 SPI bmx;
kim1212 0:c317a0f96763 99
kim1212 0:c317a0f96763 100 DigitalOut accss;
kim1212 0:c317a0f96763 101 DigitalOut gyrss;
kim1212 0:c317a0f96763 102 DigitalOut magss;
kim1212 0:c317a0f96763 103
kim1212 0:c317a0f96763 104 };
kim1212 0:c317a0f96763 105
kim1212 0:c317a0f96763 106 #endif