打印
[STM32F1]

MPU6050设置的问题

[复制链接]
649|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
songqian17|  楼主 | 2021-9-6 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚刚接触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

使用特权

评论回复
沙发
supernan| | 2021-9-6 22:13 | 只看该作者
量一下6050中断输出脚的电平变化看看

使用特权

评论回复
板凳
renyaq| | 2021-9-6 22:16 | 只看该作者
仔细看下6050的配置,应该就是配置问题,改改代码就行了

使用特权

评论回复
地板
renyaq| | 2021-9-6 22:21 | 只看该作者
我看到了“MPU6050设置X,Y,Z轴的阈值中断唤醒STM32F103”这个帖子,我想问一下,mpu6050不是一直发送数据到stm32吗,这样stm32不随时都有中断,不能睡眠了吗?你是怎么处理的呀?

使用特权

评论回复
5
pangb| | 2021-9-6 22:24 | 只看该作者
这个问题解决了吗  我也遇到了这种问题

使用特权

评论回复
6
songqian17|  楼主 | 2021-9-6 22:27 | 只看该作者

哦,那我就知道怎么回事了,多谢大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

463

主题

5749

帖子

1

粉丝