基于STM32F4 四轴飞行器 日记 1.2 IIC与MPU6050 待续

**MPU6050内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主IIC接口,可以向应用端输出完整的9轴姿态融合演算数据。**

初始化MPU6050步骤(参考原子)
①初始化IIC接口。
②复位MPU6050。由电源管理寄存器1(0X6B)控制。
③设置角速度传感器和加速度传感器的满量程范围。由陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置 。
④设置其他参数。配置中断,由中断使能寄存器(0X38)控制;设置AUX IIC接口,由户控制寄存器(0X6A)控制;设置FIFO,由FIFO使能寄存器(0X23)控制;陀螺仪采样率 ,由采样率分频寄存器(0X19)控制;设置数字低通滤波器,由配置寄存器(0X1A)控制。
⑤设置系统时钟。由电源管理寄存器1(0X6B)控制。一般选择x轴陀螺PLL作为时钟源,以获得更高精度的时钟。
⑥使能角速度传感器(陀螺仪)和加速度传感器。由电源管理寄存器2(0X6C)控制

MPU6050初始化代码:“
Single_Write(MPU6050_Addr,PWR_MGMT_1, 0x00); //解除休眠状态
Single_Write(MPU6050_Addr,SMPLRT_DIV, 0x02); //取样率2分频,1k/2=500hz
Single_Write(MPU6050_Addr,CONFIG, 0x02); //低通滤波94hz
Single_Write(MPU6050_Addr,GYRO_CONFIG, 0x18); //2000dps
Single_Write(MPU6050_Addr,ACCEL_CONFIG, 0x11); //+-8g,5Hz高通滤波
“`
读取数据代码:
BUF[0]=Single_Read(MPU6050_Addr,GYRO_XOUT_L);
BUF[1]=Single_Read(MPU6050_Addr,GYRO_XOUT_H);
X= (BUF[1]<<8)|BUF[0];
X/=16.4; //读取计算X轴数据

BUF[2]=Single_Read(MPU6050_Addr,GYRO_YOUT_L);
BUF[3]=Single_Read(MPU6050_Addr,GYRO_YOUT_H);
Y= (BUF[3]<<8)|BUF[2];
Y/=16.4; //读取计算Y轴数据
BUF[4]=Single_Read(MPU6050_Addr,GYRO_ZOUT_L);
BUF[5]=Single_Read(MPU6050_Addr,GYRO_ZOUT_H);
Z= (BUF[5]<<8)|BUF[4];
Z/=16.4; //读取计算Z轴数据

 BUF[6]=Single_Read(MPU6050_Addr,ACCEL_XOUT_L); 

BUF[7]=Single_Read(MPU6050_Addr,ACCEL_XOUT_H);
X= (BUF[7]<<8)|BUF[6];
X/=163.84; //读取计算X轴数据

BUF[8]=Single_Read(MPU6050_Addr,ACCEL_YOUT_L);
BUF[9]=Single_Read(MPU6050_Addr,ACCEL_YOUT_H);
_Y= (BUF[9]<<8)|BUF[8];
Y/=163.84; //读取计算Y轴数据
BUF[10]=Single_Read(MPU6050_Addr,ACCEL_ZOUT_L);
BUF[11]=Single_Read(MPU6050_Addr,ACCEL_ZOUT_H);
Z= (BUF[11]<<8)|BUF[10];
Z/=163.84; //读取计算Z轴数据

BUF[12]=Single_Read(MPU6050_Addr,TEMP_OUT_L);
BUF[13]=Single_Read(MPU6050_Addr,TEMP_OUT_H);
T_T=(BUF[13]<<8)|BUF[12];
T_T = (-5)+((double) (T_T + 13200)) / 280;// 读取计算出温度

你可能感兴趣的:(四轴飞行器飞控)