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
BMX055.cpp
- Committer:
- falconsyunya
- Date:
- 2020-08-31
- Revision:
- 3:58349cbf9ed9
- Parent:
- 2:7e049ebd96ab
File content as of revision 3:58349cbf9ed9:
#include "mbed.h" #include "BMX055.h" BMX055::BMX055(PinName SDA, PinName SCL) : bmx055(SDA,SCL) { bmx055.frequency(100000); bmx_init(); } void BMX055::bmx_init(void) { char buf[2]= {0}; printf("accel setting\r\n"); buf[0]=0x14; buf[1]=0xB6; bmx055.write(ACC,buf,2); wait_ms(2); buf[0]=0x0F; buf[1]=0x11;//加速度の計測レンジの設定 bmx055.write(ACC,buf,2); buf[0]=0x10; buf[1]=0x08; bmx055.write(ACC,buf,2); buf[0]=0x11; buf[1]=0x00; bmx055.write(ACC,buf,2); wait_ms(2); printf("gyroscope setting\r\n"); buf[0]=0x0F; buf[1]=0x04;//角加速度の計測レンジの設定 bmx055.write(GYRO,buf,2); wait(0.1); buf[0]=0x10; buf[1]=0x07; bmx055.write(GYRO,buf,2); wait(0.1); buf[0]=0x11; buf[1]=0x00; bmx055.write(GYRO,buf,2); wait(0.1); printf("magnet setting\r\n"); buf[0]=0x4B; buf[1]=0x82; bmx055.write(MAG,buf,2); wait(0.1); buf[0]=0x4B; buf[1]=0x01; bmx055.write(MAG,buf,2); wait(0.1); buf[0]=0x4C; buf[1]=0x00; bmx055.write(MAG,buf,2); buf[0]=0x4E; buf[1]=0x84; bmx055.write(MAG,buf,2); buf[0]=0x51; buf[1]=0x04; bmx055.write(MAG,buf,2); buf[0]=0x52; buf[1]=0x16; bmx055.write(MAG,buf,2); wait(0.1); buf[0]=0x00; bmx055.write(MAG,buf,1,1); bmx055.read(MAG,buf,1); printf("read:0x%02x\r\n",buf[0]); } void BMX055::getAcc(void) { uint8_t data[6]= {0}; char reg = 0x02; bmx055.write(ACC,®,1,true); bmx055.read(ACC,(char*)data,6); for(int i=0; i<3; i++) { accel[i]=(int16_t)(((int16_t)data[i*2+1]<<8) | data[i*2]) >> 4;//ビット演算 } } void BMX055::getGyro(void) { uint8_t data[6]= {0}; char reg = 0x02; bmx055.write(GYRO,®,1,true); bmx055.read(GYRO,(char*)data,6); for(int i=0; i<3; i++) { gyroscope[i]=(int16_t)(((int16_t)data[i*2+1]<<8) | data[i*2]); } } void BMX055::getMag(void) { uint8_t data[8]= {0}; char reg = 0x42; bmx055.write(MAG,®,1,true); bmx055.read(MAG,(char*)data,8); magnet[0]=(int16_t)(((int16_t)data[1]<<8) | data[0]) >> 3; magnet[1]=(int16_t)(((int16_t)data[3]<<8) | data[2]) >> 3; magnet[2]=(int16_t)(((int16_t)data[5]<<8) | data[4]) >> 1; }