BMX055に4線式SPIモードで接続するためのライブラリです
BMX055.h@1:fed25406cc14, 2018-02-13 (annotated)
- Committer:
- kim1212
- Date:
- Tue Feb 13 04:13:42 2018 +0000
- Revision:
- 1:fed25406cc14
- Parent:
- 0:c317a0f96763
??????????????????
Who changed what in which revision?
User | Revision | Line number | New 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 |