MPU6050设置X,Y,Z轴的阈值中断唤醒STM32F103

2019-03-23 17:29发布

刚刚接触MPU6050,使用STM32F103C8T6驱动MPU6050,需要判断做收拾动作,但是还要省电,所以,我想到的是利用MPU6050的中断来唤醒STM32的待机模式,问题来了,刚刚玩MPU6050不了解很多东西,STM32待机模式进入后,MPU6050可以唤醒,但是MPU6050没有动,就自动唤醒了,刚进入待机模式就唤醒了,起不到省电作用,所以在此求助一些各位大神,朋友们,帮帮忙,MPU6050要怎么样设置,这些相应的参数。
当前我的设置是:
        MPU_IIC_Init();//初始化IIC总线
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);        //复位MPU6050
        MPU_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_USER_CTRL_REG,0X00);        //I2C主模式关闭
//        MPU_Write_Byte(MPU_INT_EN_REG,0X00);        //关闭所有中断
//        MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);        //关闭FIFO
//        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);        //INT引脚低电平有效
       
//        MPU_Write_Byte(MPU_INT_EN_REG,0X40);                   //打开运动中断                                  寄存器0X38            
        MPU_Write_Byte(MPU_INT_EN_REG,0X80);                   //打开自由落体中断                          寄存器0X38   
        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X10);                /* 中断信号为高电平,推挽输出,直到有读取操作才消失 寄存器0X37 */
//        MPU_Write_Byte(MPU_MOTION_DET_REG,0X01);          // 运动阈值                              寄存器0X1F
        MPU_Write_Byte(MPU_MOTION_DET_DUR,0Xff);          // 自由落体阈值                              寄存器0X1F
        MPU_Write_Byte(MPU_MOT_DUR,0X14);                 //检测时间20ms   单位1ms                  寄存器0X20
        MPU_Write_Byte(MPU_MDETECT_CTRL_REG,0XC8);        //运动检测控制、加速度计上电延时200ms。 单位1ms   寄存器0X69
               
        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(100);                                                //设置采样率为100Hz
        }


实现不了设定的阈值来唤醒STM32

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。