BMI055的加速度计和陀螺仪的地址是分开的,在读取的时候要分开读取,我是用的iic的方式读取的
#define ACC_ADDRESS 0X18 //加速度计的地址
#define GYRO_ADDRESS 0X68 //陀螺仪的地址
cpu:stm32f407 ,硬件iic读取
初始化函数:
u8 buff[6];
u8 addr = 0 ;
bmi_read(ACC_ADDRESS,0X00,&buff[0],8);
if(buff[0] != 0xFA)
{
printf("acc failed!\n");
return;
}
addr = 0x05;
bmi_write(ACC_ADDRESS,0x0F,&addr,8); //4g
addr = 0x0F;
bmi_write(ACC_ADDRESS,0x10,&addr,8); //ODR 1Khz
addr = 0x00;
bmi_write(ACC_ADDRESS,0x11,&addr,8); //normal model
addr = 0x00;
bmi_write(ACC_ADDRESS,0x12,&addr,8);
addr = 0x10;
bmi_write(ACC_ADDRESS,0x17,&addr,8); //int1 en
addr = 0x0;
bmi_write(ACC_ADDRESS,0x13,&addr,8);
bmi_read(GYRO_ADDRESS,0X00,&buff[1],8);
if(buff[1] != 0x0F)
{
printf("gyro failed!\n");
return;
}
addr= 0x02;
bmi_write(GYRO_ADDRESS,0x0F,&addr,8); //500dps
addr = 0x04;
bmi_write(GYRO_ADDRESS,0x10,&addr,8); //odr 200hz
addr = 0x80;
bmi_write(GYRO_ADDRESS,0x15,&addr,8);
读取acc:
bmi_read(ACC_ADDRESS,0X02,&buff[0],8);
bmi_read(ACC_ADDRESS,0X03,&buff[1],8);
//y
bmi_read(ACC_ADDRESS,0X04,&buff[2],8);
bmi_read(ACC_ADDRESS,0X05,&buff[3],8);
//z
bmi_read(ACC_ADDRESS,0X06,&buff[4],8);
bmi_read(ACC_ADDRESS,0X07,&buff[5],8);
读取gyro:
bmi_read(GYRO_ADDRESS,0X02,&buff[0],8);
bmi_read(GYRO_ADDRESS,0X03,&buff[1],8);
//y
bmi_read(GYRO_ADDRESS,0X04,&buff[2],8);
bmi_read(GYRO_ADDRESS,0X05,&buff[3],8);
//z
bmi_read(GYRO_ADDRESS,0X06,&buff[4],8);
bmi_read(GYRO_ADDRESS,0X07,&buff[5],8);
读取gyro:
bmi_read(GYRO_ADDRESS,0X02,&buff[0],8);
bmi_read(GYRO_ADDRESS,0X03,&buff[1],8);
//y
bmi_read(GYRO_ADDRESS,0X04,&buff[2],8);
bmi_read(GYRO_ADDRESS,0X05,&buff[3],8);
//z
bmi_read(GYRO_ADDRESS,0X06,&buff[4],8);
bmi_read(GYRO_ADDRESS,0X07,&buff[5],8);
下载链接:
https://download.csdn.net/download/liumengyang1992/20481328