BNO055支持串口及IIC通信两种通信模式,本文介绍单片机串口与BNO055通信。

本文完整keil工程下载链接:BNO055+STM32F429串口读取数据-嵌入式文档类资源-CSDN下载

IIC通信文章链接:BNO055数据读取之一:IIC_pwbhbh的博客-CSDN博客

BNO055的串口通信设置比较简单,参考手册资料:波特率115200,8位数据位,1位停止位,无校验,都是常见的串口配置。手册对读、写命令、数据返回、错误返回有着明确说明,就不再赘述了。

代码编写:

1、首先基于stm32F429建立一个串口通信工程,我的是基于标准库的。

2、编写bno055的初始化、数据读取代码:

bno055_api.c内主要为bno055的初始化函数  BNO055_Init()

三组传感器数据读取函数:

Read_BNO005_ACC(struct bno055_accel_t* acc)

Read_BNO005_MAG(struct bno055_mag_t* mag)

void Read_BNO005_GYRO(struct bno055_gyro_t* gyro)

bno055_api.c:

#include "bno055_api.h"
#include "bno055_usart.h"
#include "delay.h"struct bno055_gyro_t gyroData;
struct bno055_accel_t accData;u8 Read_Cmd[4]={0xAA,0x01,0,6};
u8 Write_Cmd[5]={0xAA,0x00,0x00,0x01,0x00};#define Writereg    Write_Cmd[2]
#define Writedat    Write_Cmd[4]struct bno055_accel_t ACC;
struct bno055_mag_t MAG;
struct bno055_gyro_t GYRO;void Read_BNO005_ACC(struct bno055_accel_t* acc)
{Read_Cmd[2] = BNO055_ACCEL_DATA_X_LSB_ADDR;BNO055_USART_Send_length(Read_Cmd,4);delay_ms(100);if(BNO055_USART_REC_LEN){if(BNO055_USART_REC[0]==0xBB){acc->x = BNO055_USART_REC[3]<<8 | BNO055_USART_REC[2];acc->y = BNO055_USART_REC[5]<<8 | BNO055_USART_REC[4];acc->z = BNO055_USART_REC[7]<<8 | BNO055_USART_REC[6];printf("ACC:X=%d,Y=%d,Z=%d\r\n",acc->x,acc->y,acc->z);}BNO055_USART_REC_LEN = 0;}
}void Read_BNO005_MAG(struct bno055_mag_t* mag)
{Read_Cmd[2] = BNO055_MAG_DATA_X_LSB_ADDR;BNO055_USART_Send_length(Read_Cmd,4);delay_ms(100);if(BNO055_USART_REC_LEN){if(BNO055_USART_REC[0]==0xBB){mag->x = BNO055_USART_REC[3]<<8 | BNO055_USART_REC[2];mag->y = BNO055_USART_REC[5]<<8 | BNO055_USART_REC[4];mag->z = BNO055_USART_REC[7]<<8 | BNO055_USART_REC[6];printf("MAG:X=%d,Y=%d,Z=%d\r\n",mag->x,mag->y,mag->z);}BNO055_USART_REC_LEN = 0;}
}void Read_BNO005_GYRO(struct bno055_gyro_t* gyro)
{Read_Cmd[2] = BNO055_ACCEL_DATA_X_LSB_ADDR;BNO055_USART_Send_length(Read_Cmd,4);delay_ms(100);if(BNO055_USART_REC_LEN){if(BNO055_USART_REC[0]==0xBB){gyro->x = BNO055_USART_REC[3]<<8 | BNO055_USART_REC[2];gyro->y = BNO055_USART_REC[5]<<8 | BNO055_USART_REC[4];gyro->z = BNO055_USART_REC[7]<<8 | BNO055_USART_REC[6];printf("GYR:X=%d,Y=%d,Z=%d\r\n",gyro->x,gyro->y,gyro->z);}BNO055_USART_REC_LEN = 0;}
}void BNOPrint(void)
{delay_ms(300);         //ÑÓʱʱ¼ä½÷É÷ÐÞ¸Äif(BNO055_USART_REC_LEN){for(u8 i = 0; i < BNO055_USART_REC_LEN; i++)printf("%02X ",BNO055_USART_REC[i]);printf("\r\n");BNO055_USART_REC_LEN = 0;}
}void BNO055_Init(void)
{BNO055_USART_Config();                 //ÅäÖô®¿ÚWritereg = BNO055_SYS_TRIGGER_ADDR;      //¸´Î»Writedat = BNO055_SYS_RST;BNO055_USART_Send_length(Write_Cmd,5);delay_ms(500);BNOPrint();Writereg = BNO055_OPR_MODE_ADDR;       //½øÈëÅäÖÃģʽWritedat = BNO055_OPERATION_MODE_CONFIG;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();//ÅäÖù¤×÷ģʽ  Writereg = BNO055_PAGE_ID_ADDR;            //page idWritedat = BNO055_PAGE_0;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();Writereg = BNO055_PWR_MODE_ADDR;       //power modeWritedat = BNO055_POWER_MODE_NORMAL;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();  Writereg = BNO055_SYS_TRIGGER_ADDR;        //sys trigger idWritedat = BNO055_INTR_NORST;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();//ÅäÖüĴæÆ÷Writereg = BNO055_PAGE_ID_ADDR;         //page idWritedat = BNO055_PAGE_1;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();Writereg = BNO055_ACCEL_CONFIG_ADDR;   //ACC configWritedat = BNO055_ACCEL_RANGE_4G;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();Writereg = BNO055_MAG_CONFIG_ADDR;      //Mag configWritedat = BNO055_MAG_DATA_OUTRATE_20HZ;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();Writereg = BNO055_GYRO_CONFIG_ADDR;      //GYRO configWritedat = BNO055_GYRO_RANGE_2000DPS;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();Writereg = BNO055_GYRO_MODE_CONFIG_ADDR;//GYRO configWritedat = BNO055_GYRO_POWER_MODE_NORMAL;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();   Writereg = BNO055_PAGE_ID_ADDR;            //page idWritedat = BNO055_PAGE_0;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();Writereg = BNO055_OPR_MODE_ADDR;       //opration_modeWritedat = BNO055_OPERATION_MODE_NDOF;BNO055_USART_Send_length(Write_Cmd,5);BNOPrint();
}

bno055_api.h

#ifndef __BNO055_API_H
#define __BNO055_API_H
#include "sys.h"
/* PAGE0 CONFIG REGISTERS START*/
/* Page id register definition and Value*/
#define BNO055_PAGE_ID_ADDR                 (0X07)
#define BNO055_PAGE_0                              (0X00)
#define BNO055_PAGE_1                              (0X01)/* PWR_Mode registers and Value*/
#define BNO055_PWR_MODE_ADDR                (0X3E)
#define BNO055_POWER_MODE_NORMAL                   (0X00)
#define BNO055_POWER_MODE_LOWPOWER                 (0X01)
#define BNO055_POWER_MODE_SUSPEND                  (0X02)/* OPR_Mode registers and Value*/
#define BNO055_OPR_MODE_ADDR                (0X3D)
#define BNO055_OPERATION_MODE_CONFIG               (0X00)
#define BNO055_OPERATION_MODE_ACCONLY              (0X01)
#define BNO055_OPERATION_MODE_MAGONLY              (0X02)
#define BNO055_OPERATION_MODE_GYRONLY              (0X03)
#define BNO055_OPERATION_MODE_ACCMAG               (0X04)
#define BNO055_OPERATION_MODE_ACCGYRO              (0X05)
#define BNO055_OPERATION_MODE_MAGGYRO              (0X06)
#define BNO055_OPERATION_MODE_AMG                  (0X07)
#define BNO055_OPERATION_MODE_IMUPLUS              (0X08)
#define BNO055_OPERATION_MODE_COMPASS              (0X09)
#define BNO055_OPERATION_MODE_M4G                  (0X0A)
#define BNO055_OPERATION_MODE_NDOF_FMC_OFF         (0X0B)
#define BNO055_OPERATION_MODE_NDOF                 (0X0C)/* SYS_TRIGGER registers and Value*/
#define BNO055_SYS_TRIGGER_ADDR             (0X3F)
#define BNO055_SYS_RST                             (0X20)
#define BNO055_INTR_RST                            (0X40)
#define BNO055_INTR_NORST                          (0X00)/* Unit selection register  and Value*/
#define BNO055_UNIT_SEL_ADDR                (0X3B)
/*Accel unit*/
#define BNO055_ACCEL_UNIT_MSQ                      (0x00)
#define BNO055_ACCEL_UNIT_MG                       (0x01)
/*Gyro unit*/
#define BNO055_GYRO_UNIT_DPS                       (0x00)
#define BNO055_GYRO_UNIT_RPS                       (0x02)
/* Euler unit*/
#define BNO055_EULER_UNIT_DEG                      (0x00)
#define BNO055_EULER_UNIT_RAD                      (0x04)
/*Temperature unit*/
#define BNO055_TEMP_UNIT_CELSIUS                   (0x00)
#define BNO055_TEMP_UNIT_FAHRENHEIT                (0x10)/* TEMP_SOURCE register  and Value*/
#define BNO055_TEMP_SOURCE_ADDR             (0X40)
/* Enable the temperature source */
#define BNO055_ACCEL_TEMP_EN                       (0x00)
#define BNO055_GYRO_TEMP_EN                        (0x01)
#define BNO055_MCU_TEMP_EN                         (0x03)
/* PAGE0 REGISTERS DEFINITION END*//* PAGE1 CONFIG REGISTERS DEFINITION*/
/* ACCEL CONFIG register  and Value*/
#define BNO055_ACCEL_CONFIG_ADDR            (0X08)
/* Accel Range */
#define BNO055_ACCEL_RANGE_2G                      (0X00)
#define BNO055_ACCEL_RANGE_4G                      (0X01)
#define BNO055_ACCEL_RANGE_8G                      (0X02)
#define BNO055_ACCEL_RANGE_16G                     (0X03)
/* Accel Bandwidth*/
#define BNO055_ACCEL_BW_7_81HZ                     (0x00 << 2)
#define BNO055_ACCEL_BW_15_63HZ                    (0x01 << 2)
#define BNO055_ACCEL_BW_31_25HZ                    (0x02 << 2)
#define BNO055_ACCEL_BW_62_5HZ                     (0X03 << 2)
#define BNO055_ACCEL_BW_125HZ                      (0X04 << 2)
#define BNO055_ACCEL_BW_250HZ                      (0X05 << 2)
#define BNO055_ACCEL_BW_500HZ                      (0X06 << 2)
#define BNO055_ACCEL_BW_1000HZ                     (0X07 << 2)
/* Accel Power mode*/
#define BNO055_ACCEL_NORMAL                        (0X00 << 5)
#define BNO055_ACCEL_SUSPEND                       (0X01 << 5)
#define BNO055_ACCEL_LOWPOWER_1                    (0X02 << 5)
#define BNO055_ACCEL_STANDBY                       (0X03 << 5)
#define BNO055_ACCEL_LOWPOWER_2                    (0X04 << 5)
#define BNO055_ACCEL_DEEPSUSPEND                   (0X05 << 5)/* MAG CONFIG register  and Value*/
#define BNO055_MAG_CONFIG_ADDR              (0X09)
/* Mag data output rate*/
#define BNO055_MAG_DATA_OUTRATE_2HZ                (0X00)
#define BNO055_MAG_DATA_OUTRATE_6HZ                (0X01)
#define BNO055_MAG_DATA_OUTRATE_8HZ                (0X02)
#define BNO055_MAG_DATA_OUTRATE_10HZ               (0X03)
#define BNO055_MAG_DATA_OUTRATE_15HZ               (0X04)
#define BNO055_MAG_DATA_OUTRATE_20HZ               (0X05)
#define BNO055_MAG_DATA_OUTRATE_25HZ               (0X06)
#define BNO055_MAG_DATA_OUTRATE_30HZ               (0X07)
/* Mag Operation mode*/
#define BNO055_MAG_OPERATION_MODE_LOWPOWER         (0X00 << 3)
#define BNO055_MAG_OPERATION_MODE_REGULAR          (0X01 << 3)
#define BNO055_MAG_OPERATION_MODE_ENHANCED_REGULAR (0X02 << 3)
#define BNO055_MAG_OPERATION_MODE_HIGH_ACCURACY    (0X03 << 3)
/* Mag power mode*/
#define BNO055_MAG_POWER_MODE_NORMAL               (0X00 << 5)
#define BNO055_MAG_POWER_MODE_SLEEP                (0X01 << 5)
#define BNO055_MAG_POWER_MODE_SUSPEND              (0X02 << 5)
#define BNO055_MAG_POWER_MODE_FORCE_MODE           (0X03 << 5)/* GYRO CONFIG register0  and Value*/
#define BNO055_GYRO_CONFIG_ADDR             (0X0A)
/* Gyro range*/
#define BNO055_GYRO_RANGE_2000DPS                  (0x00)
#define BNO055_GYRO_RANGE_1000DPS                  (0x01)
#define BNO055_GYRO_RANGE_500DPS                   (0x02)
#define BNO055_GYRO_RANGE_250DPS                   (0x03)
#define BNO055_GYRO_RANGE_125DPS                   (0x04)
/* Gyro Bandwidth*/
#define BNO055_GYRO_BW_523HZ                       (0x00 << 3)
#define BNO055_GYRO_BW_230HZ                       (0x01 << 3)
#define BNO055_GYRO_BW_116HZ                       (0x02 << 3)
#define BNO055_GYRO_BW_47HZ                        (0x03 << 3)
#define BNO055_GYRO_BW_23HZ                        (0x04 << 3)
#define BNO055_GYRO_BW_12HZ                        (0x05 << 3)
#define BNO055_GYRO_BW_64HZ                        (0x06 << 3)
#define BNO055_GYRO_BW_32HZ                        (0x07 << 3)/* GYRO CONFIG register1  and Value*/
#define BNO055_GYRO_MODE_CONFIG_ADDR        (0X0B)
/* Gyro power mode*/
#define BNO055_GYRO_POWER_MODE_NORMAL              (0X00)
#define BNO055_GYRO_POWER_MODE_FASTPOWERUP         (0X01)
#define BNO055_GYRO_POWER_MODE_DEEPSUSPEND         (0X02)
#define BNO055_GYRO_POWER_MODE_SUSPEND             (0X03)
#define BNO055_GYRO_POWER_MODE_ADVANCE_POWERSAVE   (0X04)/* ACC_SLEEP CONFIG register1  and Value*/
#define BNO055_ACCEL_SLEEP_CONFIG_ADDR      (0X0C)
#define BNO055_ACCEL_SLEEP_MODE_EVENT              (0X00)
#define BNO055_ACCEL_SLEEP_MODE_EQUI               (0X01)
/* Accel Sleep Duration */
#define BNO055_ACCEL_SLEEP_DURN_0_5MS              (0x05 << 1)
/* sets sleep duration to 0.5 ms  */
#define BNO055_ACCEL_SLEEP_DURN_1MS                (0x06 << 1)
/* sets sleep duration to 1 ms */
#define BNO055_ACCEL_SLEEP_DURN_2MS                (0x07 << 1)
/* sets sleep duration to 2 ms */
#define BNO055_ACCEL_SLEEP_DURN_4MS                (0x08 << 1)
/* sets sleep duration to 4 ms */
#define BNO055_ACCEL_SLEEP_DURN_6MS                (0x09 << 1)
/* sets sleep duration to 6 ms*/
#define BNO055_ACCEL_SLEEP_DURN_10MS               (0x0A << 1)
/* sets sleep duration to 10 ms */
#define BNO055_ACCEL_SLEEP_DURN_25MS               (0x0B << 1)
/* sets sleep duration to 25 ms */
#define BNO055_ACCEL_SLEEP_DURN_50MS               (0x0C << 1)
/* sets sleep duration to 50 ms */
#define BNO055_ACCEL_SLEEP_DURN_100MS              (0x0D << 1)
/* sets sleep duration to 100 ms */
#define BNO055_ACCEL_SLEEP_DURN_500MS              (0x0E << 1)
/* sets sleep duration to 500 ms */
#define BNO055_ACCEL_SLEEP_DURN_1S                 (0x0F << 1)/* GYRO_SLEEP CONFIG register1  and Value*/
#define BNO055_GYRO_SLEEP_CONFIG_ADDR       (0X0D)
#define BNO055_GYRO_No_AUTOSLPDUR                  (0x00 << 3)
#define BNO055_GYRO_4MS_AUTOSLPDUR                 (0x01 << 3)
#define BNO055_GYRO_5MS_AUTOSLPDUR                 (0x02 << 3)
#define BNO055_GYRO_8MS_AUTOSLPDUR                 (0x03 << 3)
#define BNO055_GYRO_10MS_AUTOSLPDUR                (0x04 << 3)
#define BNO055_GYRO_15MS_AUTOSLPDUR                (0x05 << 3)
#define BNO055_GYRO_20MS_AUTOSLPDUR                (0x06 << 3)
#define BNO055_GYRO_40MS_AUTOSLPDUR                (0x07 << 3)/* Interrupt registers*/
#define BNO055_INT_MASK_ADDR                (0X0F)
#define BNO055_INT_ADDR                     (0X10)
#define BNO055_ACCEL_ANY_MOTION_THRES_ADDR  (0X11)
#define BNO055_ACCEL_INTR_SETTINGS_ADDR     (0X12)
#define BNO055_ACCEL_HIGH_G_DURN_ADDR       (0X13)
#define BNO055_ACCEL_HIGH_G_THRES_ADDR      (0X14)
#define BNO055_ACCEL_NO_MOTION_THRES_ADDR   (0X15)
#define BNO055_ACCEL_NO_MOTION_SET_ADDR     (0X16)
#define BNO055_GYRO_INTR_SETING_ADDR        (0X17)
#define BNO055_GYRO_HIGHRATE_X_SET_ADDR     (0X18)
#define BNO055_GYRO_DURN_X_ADDR             (0X19)
#define BNO055_GYRO_HIGHRATE_Y_SET_ADDR     (0X1A)
#define BNO055_GYRO_DURN_Y_ADDR             (0X1B)
#define BNO055_GYRO_HIGHRATE_Z_SET_ADDR     (0X1C)
#define BNO055_GYRO_DURN_Z_ADDR             (0X1D)
#define BNO055_GYRO_ANY_MOTION_THRES_ADDR   (0X1E)
#define BNO055_GYRO_ANY_MOTION_SET_ADDR     (0X1F)/* PAGE0 REGISTER DEFINITION START*/
#define BNO055_CHIP_ID_ADDR                 (0x00)
#define BNO055_ACCEL_REV_ID_ADDR            (0x01)
#define BNO055_MAG_REV_ID_ADDR              (0x02)
#define BNO055_GYRO_REV_ID_ADDR             (0x03)
#define BNO055_SW_REV_ID_LSB_ADDR           (0x04)
#define BNO055_SW_REV_ID_MSB_ADDR           (0x05)
#define BNO055_BL_REV_ID_ADDR               (0X06)/* Accel data register*/
#define BNO055_ACCEL_DATA_X_LSB_ADDR        (0X08)
#define BNO055_ACCEL_DATA_X_MSB_ADDR        (0X09)
#define BNO055_ACCEL_DATA_Y_LSB_ADDR        (0X0A)
#define BNO055_ACCEL_DATA_Y_MSB_ADDR        (0X0B)
#define BNO055_ACCEL_DATA_Z_LSB_ADDR        (0X0C)
#define BNO055_ACCEL_DATA_Z_MSB_ADDR        (0X0D)/*Mag data register*/
#define BNO055_MAG_DATA_X_LSB_ADDR          (0X0E)
#define BNO055_MAG_DATA_X_MSB_ADDR          (0X0F)
#define BNO055_MAG_DATA_Y_LSB_ADDR          (0X10)
#define BNO055_MAG_DATA_Y_MSB_ADDR          (0X11)
#define BNO055_MAG_DATA_Z_LSB_ADDR          (0X12)
#define BNO055_MAG_DATA_Z_MSB_ADDR          (0X13)/*Gyro data registers*/
#define BNO055_GYRO_DATA_X_LSB_ADDR         (0X14)
#define BNO055_GYRO_DATA_X_MSB_ADDR         (0X15)
#define BNO055_GYRO_DATA_Y_LSB_ADDR         (0X16)
#define BNO055_GYRO_DATA_Y_MSB_ADDR         (0X17)
#define BNO055_GYRO_DATA_Z_LSB_ADDR         (0X18)
#define BNO055_GYRO_DATA_Z_MSB_ADDR         (0X19)/*Euler data registers*/
#define BNO055_EULER_H_LSB_ADDR             (0X1A)
#define BNO055_EULER_H_MSB_ADDR             (0X1B)#define BNO055_EULER_R_LSB_ADDR             (0X1C)
#define BNO055_EULER_R_MSB_ADDR             (0X1D)#define BNO055_EULER_P_LSB_ADDR             (0X1E)
#define BNO055_EULER_P_MSB_ADDR             (0X1F)/*Quaternion data registers*/
#define BNO055_QUATERNION_DATA_W_LSB_ADDR   (0X20)
#define BNO055_QUATERNION_DATA_W_MSB_ADDR   (0X21)
#define BNO055_QUATERNION_DATA_X_LSB_ADDR   (0X22)
#define BNO055_QUATERNION_DATA_X_MSB_ADDR   (0X23)
#define BNO055_QUATERNION_DATA_Y_LSB_ADDR   (0X24)
#define BNO055_QUATERNION_DATA_Y_MSB_ADDR   (0X25)
#define BNO055_QUATERNION_DATA_Z_LSB_ADDR   (0X26)
#define BNO055_QUATERNION_DATA_Z_MSB_ADDR   (0X27)/* Linear acceleration data registers*/
#define BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR (0X28)
#define BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR (0X29)
#define BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR (0X2A)
#define BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR (0X2B)
#define BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR (0X2C)
#define BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR (0X2D)/*Gravity data registers*/
#define BNO055_GRAVITY_DATA_X_LSB_ADDR      (0X2E)
#define BNO055_GRAVITY_DATA_X_MSB_ADDR      (0X2F)
#define BNO055_GRAVITY_DATA_Y_LSB_ADDR      (0X30)
#define BNO055_GRAVITY_DATA_Y_MSB_ADDR      (0X31)
#define BNO055_GRAVITY_DATA_Z_LSB_ADDR      (0X32)
#define BNO055_GRAVITY_DATA_Z_MSB_ADDR      (0X33)/* Temperature data register*/
#define BNO055_TEMP_ADDR                    (0X34)/* Status registers*/
#define BNO055_CALIB_STAT_ADDR              (0X35)
#define BNO055_SELFTEST_RESULT_ADDR         (0X36)
#define BNO055_INTR_STAT_ADDR               (0X37)
#define BNO055_SYS_CLK_STAT_ADDR            (0X38)
#define BNO055_SYS_STAT_ADDR                (0X39)
#define BNO055_SYS_ERR_ADDR                 (0X3A)/* Unit selection register*/
#define BNO055_UNIT_SEL_ADDR                (0X3B)
#define BNO055_DATA_SELECT_ADDR             (0X3C)/* Mode registers*/
#define BNO055_OPR_MODE_ADDR                (0X3D)
#define BNO055_PWR_MODE_ADDR                (0X3E)#define BNO055_SYS_TRIGGER_ADDR             (0X3F)
#define BNO055_TEMP_SOURCE_ADDR             (0X40)/* Axis remap registers*/
#define BNO055_AXIS_MAP_CONFIG_ADDR         (0X41)
#define BNO055_AXIS_MAP_SIGN_ADDR           (0X42)/* Radius registers*/
#define BNO055_ACCEL_RADIUS_LSB_ADDR        (0X67)
#define BNO055_ACCEL_RADIUS_MSB_ADDR        (0X68)
#define BNO055_MAG_RADIUS_LSB_ADDR          (0X69)
#define BNO055_MAG_RADIUS_MSB_ADDR          (0X6A)struct bno055_accel_t
{short x; /**< accel x data */short y; /**< accel y data */short z; /**< accel z data */
};/*!* @brief struct for Mag data read from registers*/
struct bno055_mag_t
{short x; /**< mag x data */short y; /**< mag y data */short z; /**< mag z data */
};/*!* @brief struct for Gyro data read from registers*/
struct bno055_gyro_t
{short x; /**< gyro x data */short y; /**< gyro y data */short z; /**< gyro z data */
};/*!* @brief struct for Euler data read from registers*/
struct bno055_euler_t
{short h; /**< Euler h data */short r; /**< Euler r data */short p; /**< Euler p data */
};/*!* @brief struct for Quaternion data read from registers*/
struct bno055_quaternion_t
{short w; /**< Quaternion w data */short x; /**< Quaternion x data */short y; /**< Quaternion y data */short z; /**< Quaternion z data */
};/*!* @brief struct for Linear Accel data read from registers*/
struct bno055_linear_accel_t
{short x; /**< Linear Accel x data */short y; /**< Linear Accel y data */short z; /**< Linear Accel z data */
};/*!* @brief struct for Gravity data read from registers*/
struct bno055_gravity_t
{short x; /**< Gravity x data */short y; /**< Gravity y data */short z; /**< Gravity z data */
};
/*!* @brief struct for Accel-output data of precision double*/
struct bno055_accel_double_t
{double x; /**< Accel x double data */double y; /**< Accel y double data */double z; /**< Accel z double data */
};/*!* @brief struct for Mag-output data of precision double*/
struct bno055_mag_double_t
{double x; /**< Mag x double data */double y; /**< Mag y double data */double z; /**< Mag z double data */
};/*!* @brief struct for Gyro-output data of precision double*/
struct bno055_gyro_double_t
{double x; /**< Gyro x double data */double y; /**< Gyro y double data */double z; /**< Gyro z double data */
};/*!* @brief struct for Euler-output data of precision double*/
struct bno055_euler_double_t
{double h; /**< Euler h double data */double r; /**< Euler r double data */double p; /**< Euler p double data */
};/*!* @brief struct for Linear Accel-output data of precision double*/
struct bno055_linear_accel_double_t
{double x; /**< linear accel x double data */double y; /**< linear accel y double data */double z; /**< linear accel z double data */
};/*!* @brief struct for Gravity-output data of precision double*/
struct bno055_gravity_double_t
{double x; /**< Gravity x double data */double y; /**< Gravity y double data */double z; /**< Gravity z double data */
};/*!* @brief struct for Accel-output data of precision float*/
struct bno055_accel_float_t
{float x; /**< accel x float data */float y; /**< accel y float data */float z; /**< accel z float data */
};/*!* @brief struct for Mag-output data of precision float*/
struct bno055_mag_float_t
{float x; /**< Mag x float data */float y; /**< Mag y float data */float z; /**< Mag z float data */
};/*!* @brief struct for Gyro-output data of precision float*/
struct bno055_gyro_float_t
{float x; /**< Gyro x float data */float y; /**< Gyro y float data */float z; /**< Gyro z float data */
};/*!* @brief struct for Euler-output data of precision float*/
struct bno055_euler_float_t
{float h; /**< Euler h float data */float r; /**< Euler r float data */float p; /**< Euler p float data */
};/*!* @brief struct for Linear accel-output data of precision float*/
struct bno055_linear_accel_float_t
{float x; /**< Linear accel x float data */float y; /**< Linear accel y float data */float z; /**< Linear accel z float data */
};/*!* @brief struct for Gravity-output data of precision float*/
struct bno055_gravity_float_t
{float x; /**< Gravity x float data */float y; /**< Gravity y float data */float z; /**< Gravity z float data */
};extern struct bno055_accel_t ACC;
extern struct bno055_mag_t MAG;
extern struct bno055_gyro_t GYRO;void BNOPrint(void);
void BNO055_Init(void);
void Read_BNO005_ACC(struct bno055_accel_t* acc);
void Read_BNO005_MAG(struct bno055_mag_t* mag);
void Read_BNO005_GYRO(struct bno055_gyro_t* gyro);#endif 

BNO055数据读取之二:USART相关推荐

  1. BNO055数据读取之一:IIC

    BNO055是一款性能优越的IUM芯片,数据输出类型多,可根据需要选择读取不同的IMU融合数据.现分享下使用CubeMX生成硬件IIC工程文件,再引入博世官方库文件,形成完整的BNO055驱动代码.单 ...

  2. 单细胞数据读取(二)之Read10X读不出来dgCMatrix报错

    前面我们也遇到过10x的数据读取不进去,如果大家遇到下面的报错,可以通过修改10x的原始重新读取,详细可以见链接https://blog.csdn.net/weixin_43949246/articl ...

  3. VC++中从txt文本中读取数据并且存到二维数组中

    这几天因为在做作业,所以不仅会想到这一类有关的问题.现在我需要实现的是讲txt文件的数据读取出来并且存储到一个二维数组中.,首先为了对待什么样的矩阵我们都可以读取,我们就要设置一个动态的矩阵,这样当我 ...

  4. PyTorch系列 (二): pytorch数据读取自制数据集并

    PyTorch系列 (二): pytorch数据读取 PyTorch 1: How to use data in pytorch Posted by WangW on February 1, 2019 ...

  5. 深度学习入门笔记(十二):深度学习数据读取

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  6. python:获取微信好友列表信息(二)进行导出微信好友到csv数据读取与处理

    接上一篇:https://blog.csdn.net/seoyundu/article/details/81543656 代码中:对csv文件读取,并利用pandas库处理,统计出好友信息. pand ...

  7. 【Unity3D读取数据】(二)Json文件操作(创建、读取、解析、修改)

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  8. redis 2m数据读取_Flink读写Redis(二)读取redis数据

    自定义flink的RedisSource,实现从redis中读取数据,借鉴了flink-connector-redis_2.11的实现思路,对redis读取操作进行封装,其中flink-connect ...

  9. TensorFlow学习笔记(二十二) tensorflow数据读取方法总结

    本文PDF文件下载地址:http://download.csdn.net/download/qq_36330643/9938438 Tensorflow的数据读取有三种方式: 1. Preloaded ...

最新文章

  1. 日志切割清理工具 Log-Cutter
  2. c++气泡框提示_黄骅屋顶隔热气泡膜厂家,机房专用吸音板_德发防火保温建材
  3. PS想象的力量无限大,设计师的脑洞无限大!
  4. Java Web 前端高性能优化(一)
  5. MySQL 性能优化 分布式
  6. java项目的事务怎么处理_java实际项目中如何处理分布式事务的
  7. 我为什么放弃了 Chrome?
  8. 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。...
  9. 初学者必知的Python中优雅的用法
  10. 开源标准数据集 —— mnist(手写字符识别)
  11. Java从0开始之Java环境搭建
  12. 5款免费的WordPress备份解决方案
  13. 账龄分析表excel模板_这种高端表格模板你会做吗?Excel制作带照片的员工信息查询表...
  14. 怎样进行微信营销才比较好
  15. 怎么画学计算机的男孩形象,怎么一步一步教大班幼儿画自己的画像:小男孩简笔画(步骤图解)...
  16. Hadoop学习----Hadoop介绍
  17. Android:Fragment生命周期(结合Activity的生命周期进行分析)
  18. submit的用法实例
  19. java web小游戏_用java web小游戏源代码。期末结课老师让做,急用,谢了
  20. 【2020年高被引学者】 唐杰 清华大学

热门文章

  1. TLV70433DBVR超低IQ低压差稳压器TI 24V输入电压150mA
  2. SQL 中的exists关键字
  3. 北京邮电大学计算机导师与学生关系,【推荐给考北邮的同学】——选导师那些事儿...
  4. 教程-使用FirefoxSend搭建一个临时文件分享系统
  5. linux学习笔记yum源.repo文件的理解
  6. Android 手机震动工具类
  7. 1.如何编译RPM包,2.rpm查看某个文件属于那个包3.查看changelog
  8. VirtualBox至强
  9. 热烈祝贺2021灵江国际钢琴大赛暨维也纳金色大厅之旅在沪启动
  10. 57个国家A类竞赛 大学生最具含金量竞赛 全国性赛事A类 A类学科竞赛 大学生推荐参加竞赛