2020/08/26

Dependents:   STM32_MR_NOT_IM_REV2 STM32_MR_NOT_IM_REV2 STM32_MR_NOT_IM_REV2_829 STM32_MR_include_IM_rev2

Committer:
falconsyunya
Date:
Mon Aug 31 11:21:16 2020 +0000
Revision:
3:58349cbf9ed9
Parent:
2:7e049ebd96ab
2020/08/31

Who changed what in which revision?

UserRevisionLine numberNew contents of line
makidia 0:d56d821617b6 1 #include "mbed.h"
makidia 0:d56d821617b6 2 #include "BMX055.h"
makidia 0:d56d821617b6 3
falconsyunya 3:58349cbf9ed9 4 BMX055::BMX055(PinName SDA, PinName SCL) : bmx055(SDA,SCL)
falconsyunya 3:58349cbf9ed9 5 {
makidia 0:d56d821617b6 6 bmx055.frequency(100000);
makidia 0:d56d821617b6 7 bmx_init();
makidia 0:d56d821617b6 8 }
makidia 0:d56d821617b6 9
makidia 0:d56d821617b6 10 void BMX055::bmx_init(void)
makidia 0:d56d821617b6 11 {
falconsyunya 3:58349cbf9ed9 12 char buf[2]= {0};
makidia 0:d56d821617b6 13 printf("accel setting\r\n");
falconsyunya 3:58349cbf9ed9 14 buf[0]=0x14;
falconsyunya 3:58349cbf9ed9 15 buf[1]=0xB6;
falconsyunya 3:58349cbf9ed9 16 bmx055.write(ACC,buf,2);
falconsyunya 3:58349cbf9ed9 17 wait_ms(2);
falconsyunya 3:58349cbf9ed9 18 buf[0]=0x0F;
falconsyunya 3:58349cbf9ed9 19 buf[1]=0x11;//加速度の計測レンジの設定
falconsyunya 3:58349cbf9ed9 20 bmx055.write(ACC,buf,2);
falconsyunya 3:58349cbf9ed9 21 buf[0]=0x10;
falconsyunya 3:58349cbf9ed9 22 buf[1]=0x08;
falconsyunya 3:58349cbf9ed9 23 bmx055.write(ACC,buf,2);
falconsyunya 3:58349cbf9ed9 24 buf[0]=0x11;
falconsyunya 3:58349cbf9ed9 25 buf[1]=0x00;
makidia 0:d56d821617b6 26 bmx055.write(ACC,buf,2);
falconsyunya 3:58349cbf9ed9 27 wait_ms(2);
falconsyunya 3:58349cbf9ed9 28
makidia 0:d56d821617b6 29 printf("gyroscope setting\r\n");
falconsyunya 3:58349cbf9ed9 30 buf[0]=0x0F;
falconsyunya 3:58349cbf9ed9 31 buf[1]=0x04;//角加速度の計測レンジの設定
falconsyunya 3:58349cbf9ed9 32 bmx055.write(GYRO,buf,2);
falconsyunya 3:58349cbf9ed9 33 wait(0.1);
falconsyunya 3:58349cbf9ed9 34 buf[0]=0x10;
falconsyunya 3:58349cbf9ed9 35 buf[1]=0x07;
falconsyunya 3:58349cbf9ed9 36 bmx055.write(GYRO,buf,2);
falconsyunya 3:58349cbf9ed9 37 wait(0.1);
falconsyunya 3:58349cbf9ed9 38 buf[0]=0x11;
falconsyunya 3:58349cbf9ed9 39 buf[1]=0x00;
falconsyunya 3:58349cbf9ed9 40 bmx055.write(GYRO,buf,2);
falconsyunya 3:58349cbf9ed9 41 wait(0.1);
makidia 0:d56d821617b6 42
makidia 0:d56d821617b6 43 printf("magnet setting\r\n");
falconsyunya 3:58349cbf9ed9 44 buf[0]=0x4B;
falconsyunya 3:58349cbf9ed9 45 buf[1]=0x82;
falconsyunya 3:58349cbf9ed9 46 bmx055.write(MAG,buf,2);
falconsyunya 3:58349cbf9ed9 47 wait(0.1);
falconsyunya 3:58349cbf9ed9 48 buf[0]=0x4B;
falconsyunya 3:58349cbf9ed9 49 buf[1]=0x01;
makidia 0:d56d821617b6 50 bmx055.write(MAG,buf,2);
falconsyunya 3:58349cbf9ed9 51 wait(0.1);
falconsyunya 3:58349cbf9ed9 52 buf[0]=0x4C;
falconsyunya 3:58349cbf9ed9 53 buf[1]=0x00;
makidia 0:d56d821617b6 54 bmx055.write(MAG,buf,2);
falconsyunya 3:58349cbf9ed9 55 buf[0]=0x4E;
falconsyunya 3:58349cbf9ed9 56 buf[1]=0x84;
makidia 0:d56d821617b6 57 bmx055.write(MAG,buf,2);
falconsyunya 3:58349cbf9ed9 58 buf[0]=0x51;
falconsyunya 3:58349cbf9ed9 59 buf[1]=0x04;
falconsyunya 3:58349cbf9ed9 60 bmx055.write(MAG,buf,2);
falconsyunya 3:58349cbf9ed9 61 buf[0]=0x52;
falconsyunya 3:58349cbf9ed9 62 buf[1]=0x16;
makidia 0:d56d821617b6 63 bmx055.write(MAG,buf,2);
makidia 0:d56d821617b6 64 wait(0.1);
makidia 0:d56d821617b6 65
makidia 0:d56d821617b6 66 buf[0]=0x00;
makidia 0:d56d821617b6 67 bmx055.write(MAG,buf,1,1);
makidia 0:d56d821617b6 68 bmx055.read(MAG,buf,1);
makidia 0:d56d821617b6 69 printf("read:0x%02x\r\n",buf[0]);
makidia 0:d56d821617b6 70 }
makidia 0:d56d821617b6 71
falconsyunya 3:58349cbf9ed9 72 void BMX055::getAcc(void)
falconsyunya 3:58349cbf9ed9 73 {
falconsyunya 3:58349cbf9ed9 74 uint8_t data[6]= {0};
falconsyunya 3:58349cbf9ed9 75 char reg = 0x02;
falconsyunya 3:58349cbf9ed9 76 bmx055.write(ACC,&reg,1,true);
makidia 0:d56d821617b6 77 bmx055.read(ACC,(char*)data,6);
makidia 0:d56d821617b6 78
falconsyunya 3:58349cbf9ed9 79 for(int i=0; i<3; i++) {
falconsyunya 3:58349cbf9ed9 80 accel[i]=(int16_t)(((int16_t)data[i*2+1]<<8) | data[i*2]) >> 4;//ビット演算
makidia 0:d56d821617b6 81 }
makidia 0:d56d821617b6 82 }
makidia 0:d56d821617b6 83
falconsyunya 3:58349cbf9ed9 84 void BMX055::getGyro(void)
falconsyunya 3:58349cbf9ed9 85 {
falconsyunya 3:58349cbf9ed9 86 uint8_t data[6]= {0};
falconsyunya 3:58349cbf9ed9 87 char reg = 0x02;
falconsyunya 3:58349cbf9ed9 88 bmx055.write(GYRO,&reg,1,true);
falconsyunya 3:58349cbf9ed9 89 bmx055.read(GYRO,(char*)data,6);
makidia 0:d56d821617b6 90
falconsyunya 3:58349cbf9ed9 91 for(int i=0; i<3; i++) {
falconsyunya 3:58349cbf9ed9 92 gyroscope[i]=(int16_t)(((int16_t)data[i*2+1]<<8) | data[i*2]);
makidia 0:d56d821617b6 93 }
makidia 0:d56d821617b6 94 }
makidia 0:d56d821617b6 95
falconsyunya 3:58349cbf9ed9 96 void BMX055::getMag(void)
falconsyunya 3:58349cbf9ed9 97 {
falconsyunya 3:58349cbf9ed9 98 uint8_t data[8]= {0};
falconsyunya 3:58349cbf9ed9 99 char reg = 0x42;
falconsyunya 3:58349cbf9ed9 100 bmx055.write(MAG,&reg,1,true);
falconsyunya 3:58349cbf9ed9 101 bmx055.read(MAG,(char*)data,8);
makidia 0:d56d821617b6 102
falconsyunya 3:58349cbf9ed9 103 magnet[0]=(int16_t)(((int16_t)data[1]<<8) | data[0]) >> 3;
falconsyunya 3:58349cbf9ed9 104 magnet[1]=(int16_t)(((int16_t)data[3]<<8) | data[2]) >> 3;
falconsyunya 3:58349cbf9ed9 105 magnet[2]=(int16_t)(((int16_t)data[5]<<8) | data[4]) >> 1;
makidia 0:d56d821617b6 106 }