最近在做风力摆系统,用到MPU6050,在MPU6050初始化中,有多处涉及初始化频率的地方,小白一个,希望大佬可以帮助以下,谢谢啦。
在MPU_Init()中
- //初始化MPU6050
- //返回值:0,成功
- // 其他,错误代码
- u8 MPU_Init(void)
- {
- u8 res;
- IIC_Init();//初始化IIC总线
-
- delay_ms(1000);
-
- MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80); //复位MPU6050
- delay_ms(100);
- MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00); //唤醒MPU6050
- MPU_Set_Gyro_Fsr(3); //陀螺仪传感器,±2000dps
- MPU_Set_Accel_Fsr(0); //加速度传感器,±2g
- MPU_Set_Rate(50); //设置采样率50Hz
- MPU_Write_Byte(MPU_INT_EN_REG,0X00); //关闭所有中断
- MPU_Write_Byte(MPU_USER_CTRL_REG,0X00); //I2C主模式关闭
- MPU_Write_Byte(MPU_FIFO_EN_REG,0X00); //关闭FIFO
- MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80); //INT引脚低电平有效
- res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
- if(res==MPU_ADDR)//器件ID正确
- {
- MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01); //设置CLKSEL,PLL X轴为参考
- MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00); //加速度与陀螺仪都工作
- //MPU_Set_Rate(50); //设置采样率为50Hz
- MPU_Set_Rate(200);
- }else return 1;
- return 0;
- }
复制代码初始化了两次采样频率。
在mpu_dmp_init()
- //mpu6050,dmp初始化
- //返回值:0,正常
- // 其他,失败
- u8 mpu_dmp_init(void)
- {
- u8 res=0;
- IIC_Init(); //初始化IIC总线
- if(mpu_init()==0) //初始化MPU6050
- {
- res=mpu_set_sensors(INV_XYZ_GYRO|INV_XYZ_ACCEL);//设置所需要的传感器
- if(res)return 1;
- res=mpu_configure_fifo(INV_XYZ_GYRO | INV_XYZ_ACCEL);//设置FIFO
- if(res)return 2;
- res=mpu_set_sample_rate(DEFAULT_MPU_HZ); //设置采样率
- if(res)return 3;
- res=dmp_load_motion_driver_firmware(); //加载dmp固件
- if(res)return 4;
- res=dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation));//设置陀螺仪方向
- if(res)return 5;
- res=dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT|DMP_FEATURE_TAP| //设置dmp功能
- DMP_FEATURE_ANDROID_ORIENT|DMP_FEATURE_SEND_RAW_ACCEL|DMP_FEATURE_SEND_CAL_GYRO|
- DMP_FEATURE_GYRO_CAL);
- if(res)return 6;
- res=dmp_set_fifo_rate(DEFAULT_MPU_HZ); //设置DMP输出速率(最大不超过200Hz)
- if(res)return 7;
- res=run_self_test(); //自检
- if(res)return 8;
- res=mpu_set_dmp_state(1); //使能DMP
- if(res)return 9;
- }
- return 0;
- }
复制代码初始化了DMP输出输出频率
————————————————————————————————————————————————————————————————————————————————————————————
一些疑问:
1.为什么要初始化两次采样频率
2.为什么采样频率比DMP输出频率低
3.如果我以200HZ频率读取DMP,可以吗?需要修改DMP输出频率和采样频率吗?
4.谢谢大家
一周热门 更多>