mpu6050.h main.h varint.h D:/gitt/MicrochipFor32/bsp_MPU6050/mpu6050.cpp MPU_SELF_TESTX_REG 0X0D MPU_SELF_TESTY_REG 0X0E MPU_SELF_TESTZ_REG 0X0F MPU_SELF_TESTA_REG 0X10 MPU_SAMPLE_RATE_REG 0X19 MPU_CFG_REG 0X1A MPU_GYRO_CFG_REG 0X1B MPU_ACCEL_CFG_REG 0X1C MPU_MOTION_DET_REG 0X1F MPU_FIFO_EN_REG 0X23 MPU_I2CMST_CTRL_REG 0X24 MPU_I2CSLV0_ADDR_REG 0X25 MPU_I2CSLV0_REG 0X26 MPU_I2CSLV0_CTRL_REG 0X27 MPU_I2CSLV1_ADDR_REG 0X28 MPU_I2CSLV1_REG 0X29 MPU_I2CSLV1_CTRL_REG 0X2A MPU_I2CSLV2_ADDR_REG 0X2B MPU_I2CSLV2_REG 0X2C MPU_I2CSLV2_CTRL_REG 0X2D MPU_I2CSLV3_ADDR_REG 0X2E MPU_I2CSLV3_REG 0X2F MPU_I2CSLV3_CTRL_REG 0X30 MPU_I2CSLV4_ADDR_REG 0X31 MPU_I2CSLV4_REG 0X32 MPU_I2CSLV4_DO_REG 0X33 MPU_I2CSLV4_CTRL_REG 0X34 MPU_I2CSLV4_DI_REG 0X35 MPU_I2CMST_STA_REG 0X36 MPU_INTBP_CFG_REG 0X37 MPU_INT_EN_REG 0X38 MPU_INT_STA_REG 0X3A MPU_ACCEL_XOUTH_REG 0X3B MPU_ACCEL_XOUTL_REG 0X3C MPU_ACCEL_YOUTH_REG 0X3D MPU_ACCEL_YOUTL_REG 0X3E MPU_ACCEL_ZOUTH_REG 0X3F MPU_ACCEL_ZOUTL_REG 0X40 MPU_TEMP_OUTH_REG 0X41 MPU_TEMP_OUTL_REG 0X42 MPU_GYRO_XOUTH_REG 0X43 MPU_GYRO_XOUTL_REG 0X44 MPU_GYRO_YOUTH_REG 0X45 MPU_GYRO_YOUTL_REG 0X46 MPU_GYRO_ZOUTH_REG 0X47 MPU_GYRO_ZOUTL_REG 0X48 MPU_I2CSLV0_DO_REG 0X63 MPU_I2CSLV1_DO_REG 0X64 MPU_I2CSLV2_DO_REG 0X65 MPU_I2CSLV3_DO_REG 0X66 MPU_I2CMST_DELAY_REG 0X67 MPU_SIGPATH_RST_REG 0X68 MPU_MDETECT_CTRL_REG 0X69 MPU_USER_CTRL_REG 0X6A MPU_PWR_MGMT1_REG 0X6B MPU_PWR_MGMT2_REG 0X6C MPU_FIFO_CNTH_REG 0X72 MPU_FIFO_CNTL_REG 0X73 MPU_FIFO_RW_REG 0X74 MPU_DEVICE_ID_REG 0X75 MPU_ADDR 0X68 u8 u8 MPU_Init (void) MPU_Init void 初始化MPU6050 0,成功 delay_ms MPU_ADDR MPU_DEVICE_ID_REG MPU_FIFO_EN_REG MPU_INT_EN_REG MPU_INTBP_CFG_REG MPU_PWR_MGMT1_REG MPU_PWR_MGMT2_REG MPU_Read_Byte MPU_Set_Accel_Fsr MPU_Set_Gyro_Fsr MPU_Set_Rate MPU_USER_CTRL_REG MPU_Write_Byte u8 u8 MPU_Write_Len (u8 addr, u8 reg, u8 len, u8 *buf) MPU_Write_Len u8 addr u8 reg u8 len u8 * buf IIC连续写 addr 器件地址 reg 寄存器地址 len 写入长度 *buf 数据区 0,设置成功 mpu6050IIC u8 u8 MPU_Read_Len (u8 addr, u8 reg, u8 len, u8 *buf) MPU_Read_Len u8 addr u8 reg u8 len u8 * buf IIC连续读 addr 器件地址 reg 寄存器地址 len 读取长度 *buf 读取数据区 0,设置成功 mpu6050IIC MPU_Get_Accelerometer MPU_Get_Gyroscope MPU_Get_Temperature u8 u8 MPU_Write_Byte (u8 reg, u8 data) MPU_Write_Byte u8 reg u8 data IIC写一个字节 reg 寄存器地址 data 数据 0,设置成功 mpu6050IIC MPU_ADDR MPU_Init MPU_Set_Accel_Fsr MPU_Set_Gyro_Fsr MPU_Set_LPF MPU_Set_Rate u8 u8 MPU_Read_Byte (u8 reg) MPU_Read_Byte u8 reg IIC读一个字节 reg 寄存器地址 0,设置成功 mpu6050IIC MPU_ADDR MPU_Init u8 u8 MPU_Set_Gyro_Fsr (u8 fsr) MPU_Set_Gyro_Fsr u8 fsr 设置MPU6050陀螺仪传感器满量程范围 fsr 0,±250dps 1,±500dps 2,±1000dps 3,±2000dps 0,设置成功 MPU_GYRO_CFG_REG MPU_Write_Byte MPU_Init u8 u8 MPU_Set_Accel_Fsr (u8 fsr) MPU_Set_Accel_Fsr u8 fsr 设置MPU6050加速度传感器满量程范围 fsr 0,±2g 1,±4g 2,±8g 3,±16g 0,设置成功 MPU_ACCEL_CFG_REG MPU_Write_Byte MPU_Init u8 u8 MPU_Set_LPF (u16 lpf) MPU_Set_LPF u16 lpf 设置MPU6050的数字低通滤波器 lpf 数字低通滤波频率(Hz) 0,设置成功 MPU_CFG_REG MPU_Write_Byte MPU_Set_Rate u8 u8 MPU_Set_Rate (u16 rate) MPU_Set_Rate u16 rate 设置MPU6050的采样率(假定Fs=1KHz) rate 4~1000(Hz) 0,设置成功 MPU_SAMPLE_RATE_REG MPU_Set_LPF MPU_Write_Byte MPU_Init u8 u8 MPU_Set_Fifo (u8 sens) MPU_Set_Fifo u8 sens short short MPU_Get_Temperature (void) MPU_Get_Temperature void 得到温度值 温度值(扩大了100倍) MPU_ADDR MPU_Read_Len MPU_TEMP_OUTH_REG u8 u8 MPU_Get_Gyroscope (short *gx, short *gy, short *gz) MPU_Get_Gyroscope short * gx short * gy short * gz 得到陀螺仪值(原始值) gx 陀螺仪x轴的原始读数(带符号) gy 陀螺仪y轴的原始读数(带符号) gx 陀螺仪z轴的原始读数(带符号) 0,设置成功 MPU_ADDR MPU_GYRO_XOUTH_REG MPU_Read_Len u8 u8 MPU_Get_Accelerometer (short *ax, short *ay, short *az) MPU_Get_Accelerometer short * ax short * ay short * az 得到加速度值(原始值) ax 陀螺仪a轴的原始读数(带符号) ay 陀螺仪a轴的原始读数(带符号) ax 陀螺仪a轴的原始读数(带符号) 0,设置成功 MPU_ACCEL_XOUTH_REG MPU_ADDR MPU_Read_Len #pragmaonce #ifdef__cplusplus extern"C"{ #endif #include"main.h" #include"varint.h" //#defineMPU_ACCEL_OFFS_REG0X06//accel_offs寄存器,可读取版本号,寄存器手册未提到 //#defineMPU_PROD_ID_REG0X0C//prodid寄存器,在寄存器手册未提到 #defineMPU_SELF_TESTX_REG0X0D//自检寄存器X #defineMPU_SELF_TESTY_REG0X0E//自检寄存器Y #defineMPU_SELF_TESTZ_REG0X0F//自检寄存器Z #defineMPU_SELF_TESTA_REG0X10//自检寄存器A #defineMPU_SAMPLE_RATE_REG0X19//采样频率分频器 #defineMPU_CFG_REG0X1A//配置寄存器 #defineMPU_GYRO_CFG_REG0X1B//陀螺仪配置寄存器 #defineMPU_ACCEL_CFG_REG0X1C//加速度计配置寄存器 #defineMPU_MOTION_DET_REG0X1F//运动检测阀值设置寄存器 #defineMPU_FIFO_EN_REG0X23//FIFO使能寄存器 #defineMPU_I2CMST_CTRL_REG0X24//IIC主机控制寄存器 #defineMPU_I2CSLV0_ADDR_REG0X25//IIC从机0器件地址寄存器 #defineMPU_I2CSLV0_REG0X26//IIC从机0数据地址寄存器 #defineMPU_I2CSLV0_CTRL_REG0X27//IIC从机0控制寄存器 #defineMPU_I2CSLV1_ADDR_REG0X28//IIC从机1器件地址寄存器 #defineMPU_I2CSLV1_REG0X29//IIC从机1数据地址寄存器 #defineMPU_I2CSLV1_CTRL_REG0X2A//IIC从机1控制寄存器 #defineMPU_I2CSLV2_ADDR_REG0X2B//IIC从机2器件地址寄存器 #defineMPU_I2CSLV2_REG0X2C//IIC从机2数据地址寄存器 #defineMPU_I2CSLV2_CTRL_REG0X2D//IIC从机2控制寄存器 #defineMPU_I2CSLV3_ADDR_REG0X2E//IIC从机3器件地址寄存器 #defineMPU_I2CSLV3_REG0X2F//IIC从机3数据地址寄存器 #defineMPU_I2CSLV3_CTRL_REG0X30//IIC从机3控制寄存器 #defineMPU_I2CSLV4_ADDR_REG0X31//IIC从机4器件地址寄存器 #defineMPU_I2CSLV4_REG0X32//IIC从机4数据地址寄存器 #defineMPU_I2CSLV4_DO_REG0X33//IIC从机4写数据寄存器 #defineMPU_I2CSLV4_CTRL_REG0X34//IIC从机4控制寄存器 #defineMPU_I2CSLV4_DI_REG0X35//IIC从机4读数据寄存器 #defineMPU_I2CMST_STA_REG0X36//IIC主机状态寄存器 #defineMPU_INTBP_CFG_REG0X37//中断/旁路设置寄存器 #defineMPU_INT_EN_REG0X38//中断使能寄存器 #defineMPU_INT_STA_REG0X3A//中断状态寄存器 #defineMPU_ACCEL_XOUTH_REG0X3B//加速度值,X轴高8位寄存器 #defineMPU_ACCEL_XOUTL_REG0X3C//加速度值,X轴低8位寄存器 #defineMPU_ACCEL_YOUTH_REG0X3D//加速度值,Y轴高8位寄存器 #defineMPU_ACCEL_YOUTL_REG0X3E//加速度值,Y轴低8位寄存器 #defineMPU_ACCEL_ZOUTH_REG0X3F//加速度值,Z轴高8位寄存器 #defineMPU_ACCEL_ZOUTL_REG0X40//加速度值,Z轴低8位寄存器 #defineMPU_TEMP_OUTH_REG0X41//温度值高八位寄存器 #defineMPU_TEMP_OUTL_REG0X42//温度值低8位寄存器 #defineMPU_GYRO_XOUTH_REG0X43//陀螺仪值,X轴高8位寄存器 #defineMPU_GYRO_XOUTL_REG0X44//陀螺仪值,X轴低8位寄存器 #defineMPU_GYRO_YOUTH_REG0X45//陀螺仪值,Y轴高8位寄存器 #defineMPU_GYRO_YOUTL_REG0X46//陀螺仪值,Y轴低8位寄存器 #defineMPU_GYRO_ZOUTH_REG0X47//陀螺仪值,Z轴高8位寄存器 #defineMPU_GYRO_ZOUTL_REG0X48//陀螺仪值,Z轴低8位寄存器 #defineMPU_I2CSLV0_DO_REG0X63//IIC从机0数据寄存器 #defineMPU_I2CSLV1_DO_REG0X64//IIC从机1数据寄存器 #defineMPU_I2CSLV2_DO_REG0X65//IIC从机2数据寄存器 #defineMPU_I2CSLV3_DO_REG0X66//IIC从机3数据寄存器 #defineMPU_I2CMST_DELAY_REG0X67//IIC主机延时管理寄存器 #defineMPU_SIGPATH_RST_REG0X68//信号通道复位寄存器 #defineMPU_MDETECT_CTRL_REG0X69//运动检测控制寄存器 #defineMPU_USER_CTRL_REG0X6A//用户控制寄存器 #defineMPU_PWR_MGMT1_REG0X6B//电源管理寄存器1 #defineMPU_PWR_MGMT2_REG0X6C//电源管理寄存器2 #defineMPU_FIFO_CNTH_REG0X72//FIFO计数寄存器高八位 #defineMPU_FIFO_CNTL_REG0X73//FIFO计数寄存器低八位 #defineMPU_FIFO_RW_REG0X74//FIFO读写寄存器 #defineMPU_DEVICE_ID_REG0X75//器件ID寄存器 //如果AD0脚(9脚)接地,IIC地址为0X68(不包含最低位). //如果接V3.3,则IIC地址为0X69(不包含最低位). #defineMPU_ADDR0X68 u8MPU_Init(void);//初始化MPU6050 u8MPU_Write_Len(u8addr,u8reg,u8len,u8*buf);//IIC连续写 u8MPU_Read_Len(u8addr,u8reg,u8len,u8*buf);//IIC连续读 u8MPU_Write_Byte(u8reg,u8data);//IIC写一个字节 u8MPU_Read_Byte(u8reg);//IIC读一个字节 u8MPU_Set_Gyro_Fsr(u8fsr); u8MPU_Set_Accel_Fsr(u8fsr); u8MPU_Set_LPF(u16lpf); u8MPU_Set_Rate(u16rate); u8MPU_Set_Fifo(u8sens); shortMPU_Get_Temperature(void); u8MPU_Get_Gyroscope(short*gx,short*gy,short*gz); u8MPU_Get_Accelerometer(short*ax,short*ay,short*az); #ifdef__cplusplus } #endif