16#define delay_ms(var) HAL_Delay(var)
79 else if(lpf>=98)data=2;
80 else if(lpf>=42)data=3;
81 else if(lpf>=20)data=4;
82 else if(lpf>=10)data=5;
94 if(rate>1000)rate=1000;
110 raw=((
u16)buf[0]<<8)|buf[1];
111 temp=36.53+((double)raw)/340;
125 *gx=((
u16)buf[0]<<8)|buf[1];
126 *gy=((
u16)buf[2]<<8)|buf[3];
127 *gz=((
u16)buf[4]<<8)|buf[5];}
141 *ax=((
u16)buf[0]<<8)|buf[1];
142 *ay=((
u16)buf[2]<<8)|buf[3];
143 *az=((
u16)buf[4]<<8)|buf[5];}
STM32版本的软件IIC 需要使用构造函数初始化
void IIC_Write(u8 id, u8 addr, u8 *dat, u32 len)
使用总线发送定长数据
u8 IIC_ReadOneByte(u8 id, u8 addr)
使用总线接收一个字节数据
void IIC_Read(u8 id, u8 addr, u8 *dat, u32 len)
使用总线接收定长数据
void IIC_WriteOneByte(u8 id, u8 addr, u8 dat)
使用总线发送一个字节数据
const struct gyro_reg_s reg
u8 MPU_Set_Rate(u16 rate)
设置MPU6050的采样率(假定Fs=1KHz)
u8 MPU_Write_Byte(u8 reg, u8 data)
IIC写一个字节
u8 MPU_Read_Byte(u8 reg)
IIC读一个字节
u8 MPU_Get_Accelerometer(short *ax, short *ay, short *az)
得到加速度值(原始值)
u8 MPU_Set_LPF(u16 lpf)
设置MPU6050的数字低通滤波器
short MPU_Get_Temperature(void)
得到温度值
u8 MPU_Write_Len(u8 addr, u8 reg, u8 len, u8 *buf)
IIC连续写
bscpp_IIC_STM32 mpu6050IIC(IIC_SCK_GPIO_Port, IIC_SCK_Pin, IIC_SDA_GPIO_Port, IIC_SDA_Pin)
u8 MPU_Read_Len(u8 addr, u8 reg, u8 len, u8 *buf)
IIC连续读
u8 MPU_Set_Accel_Fsr(u8 fsr)
设置MPU6050加速度传感器满量程范围
u8 MPU_Get_Gyroscope(short *gx, short *gy, short *gz)
得到陀螺仪值(原始值)
u8 MPU_Set_Gyro_Fsr(u8 fsr)
设置MPU6050陀螺仪传感器满量程范围
u8 MPU_Init(void)
初始化MPU6050
#define MPU_USER_CTRL_REG
#define MPU_PWR_MGMT2_REG
#define MPU_INTBP_CFG_REG
#define MPU_SAMPLE_RATE_REG
#define MPU_ACCEL_XOUTH_REG
#define MPU_ACCEL_CFG_REG
#define MPU_GYRO_XOUTH_REG
#define MPU_DEVICE_ID_REG
#define MPU_PWR_MGMT1_REG
#define MPU_TEMP_OUTH_REG