接上一篇帖子,發帖一定會發完整的,不要著急等我慢慢更新。
MPU6050.C
#include "MPU6050.h"
void MPU6050_Init(void){ //初始化MPU6050
I2C_SAND_BYTE(MPU6050_ADD,MPU6050_RA_PWR_MGMT_1,0x80);//解除休眠狀態
delay_ms(1000); //等待器件就緒
I2C_SAND_BYTE(MPU6050_ADD,MPU6050_RA_PWR_MGMT_1,0x00);//解除休眠狀態
I2C_SAND_BYTE(MPU6050_ADD,MPU6050_RA_SMPLRT_DIV,0x07);//陀螺儀采樣率
I2C_SAND_BYTE(MPU6050_ADD,MPU6050_RA_CONFIG,0x06);
I2C_SAND_BYTE(MPU6050_ADD,MPU6050_RA_ACCEL_CONFIG,0x00);//配置加速度傳感器工作在16G模式
I2C_SAND_BYTE(MPU6050_ADD,MPU6050_RA_GYRO_CONFIG,0x18);//陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s)
}
void MPU6050_READ(u16* n){ //讀出X、Y、Z三軸加速度/陀螺儀原始數據 //n[0]是AX,n[1]是AY,n[2]是AZ,n[3]是GX,n[4]是GY,n[5]是GZ
u8 i;
u8 t[14];
I2C_READ_BUFFER(MPU6050_ADD, MPU6050_RA_ACCEL_XOUT_H, t, 14); //讀出連續的數據地址,包括了加速度和陀螺儀共12字節
for(i=0; i<3; i++) //整合加速度
n[i]=((t[2*i] << 8) + t[2*i+1]);
for(i=4; i<7; i++) //整合陀螺儀
n[i-1]=((t[2*i] << 8) + t[2*i+1]);
}
|