BNO055数据读取之二:USART
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相关推荐
- BNO055数据读取之一:IIC
BNO055是一款性能优越的IUM芯片,数据输出类型多,可根据需要选择读取不同的IMU融合数据.现分享下使用CubeMX生成硬件IIC工程文件,再引入博世官方库文件,形成完整的BNO055驱动代码.单 ...
- 单细胞数据读取(二)之Read10X读不出来dgCMatrix报错
前面我们也遇到过10x的数据读取不进去,如果大家遇到下面的报错,可以通过修改10x的原始重新读取,详细可以见链接https://blog.csdn.net/weixin_43949246/articl ...
- VC++中从txt文本中读取数据并且存到二维数组中
这几天因为在做作业,所以不仅会想到这一类有关的问题.现在我需要实现的是讲txt文件的数据读取出来并且存储到一个二维数组中.,首先为了对待什么样的矩阵我们都可以读取,我们就要设置一个动态的矩阵,这样当我 ...
- PyTorch系列 (二): pytorch数据读取自制数据集并
PyTorch系列 (二): pytorch数据读取 PyTorch 1: How to use data in pytorch Posted by WangW on February 1, 2019 ...
- 深度学习入门笔记(十二):深度学习数据读取
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- python:获取微信好友列表信息(二)进行导出微信好友到csv数据读取与处理
接上一篇:https://blog.csdn.net/seoyundu/article/details/81543656 代码中:对csv文件读取,并利用pandas库处理,统计出好友信息. pand ...
- 【Unity3D读取数据】(二)Json文件操作(创建、读取、解析、修改)
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...
- redis 2m数据读取_Flink读写Redis(二)读取redis数据
自定义flink的RedisSource,实现从redis中读取数据,借鉴了flink-connector-redis_2.11的实现思路,对redis读取操作进行封装,其中flink-connect ...
- TensorFlow学习笔记(二十二) tensorflow数据读取方法总结
本文PDF文件下载地址:http://download.csdn.net/download/qq_36330643/9938438 Tensorflow的数据读取有三种方式: 1. Preloaded ...
最新文章
- 日志切割清理工具 Log-Cutter
- c++气泡框提示_黄骅屋顶隔热气泡膜厂家,机房专用吸音板_德发防火保温建材
- PS想象的力量无限大,设计师的脑洞无限大!
- Java Web 前端高性能优化(一)
- MySQL 性能优化 分布式
- java项目的事务怎么处理_java实际项目中如何处理分布式事务的
- 我为什么放弃了 Chrome?
- 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。...
- 初学者必知的Python中优雅的用法
- 开源标准数据集 —— mnist(手写字符识别)
- Java从0开始之Java环境搭建
- 5款免费的WordPress备份解决方案
- 账龄分析表excel模板_这种高端表格模板你会做吗?Excel制作带照片的员工信息查询表...
- 怎样进行微信营销才比较好
- 怎么画学计算机的男孩形象,怎么一步一步教大班幼儿画自己的画像:小男孩简笔画(步骤图解)...
- Hadoop学习----Hadoop介绍
- Android:Fragment生命周期(结合Activity的生命周期进行分析)
- submit的用法实例
- java web小游戏_用java web小游戏源代码。期末结课老师让做,急用,谢了
- 【2020年高被引学者】 唐杰 清华大学
热门文章
- TLV70433DBVR超低IQ低压差稳压器TI 24V输入电压150mA
- SQL 中的exists关键字
- 北京邮电大学计算机导师与学生关系,【推荐给考北邮的同学】——选导师那些事儿...
- 教程-使用FirefoxSend搭建一个临时文件分享系统
- linux学习笔记yum源.repo文件的理解
- Android 手机震动工具类
- 1.如何编译RPM包,2.rpm查看某个文件属于那个包3.查看changelog
- VirtualBox至强
- 热烈祝贺2021灵江国际钢琴大赛暨维也纳金色大厅之旅在沪启动
- 57个国家A类竞赛 大学生最具含金量竞赛 全国性赛事A类 A类学科竞赛 大学生推荐参加竞赛