OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5571|回复: 6

超简单的运动检测,mpu6050

[复制链接]

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-10-8
在线时间
6 小时
发表于 2019-3-27 10:00:53 | 显示全部楼层 |阅读模式
#define MPU_ADDR                0X68


typedef struct
{
    unsigned char reg;
    unsigned char val;
}mpu6050cfg_t;

mpu6050cfg_t mpu6050[]={
            {MPU_PWR_MGMT1_REG,0X80},//复位MPU6050
            {MPU_PWR_MGMT1_REG,0x08},//电源管理寄存器1
            {MPU_PWR_MGMT2_REG,0xC8},//电源管理寄存器2
            {MPU_SAMPLE_RATE_REG,0x07},//采样频率分频器
            {MPU_CFG_REG,0x04},//配置寄存器
            {MPU_ACCEL_CFG_REG,0xFC},//加速度计配置寄存器
            {MPU_MOTION_DET_REG,0x03},//运动检测阀值设置寄存器
            {MPU_CHECK_TIME_REG,0x01},//检测时间
            {MPU_INT_EN_REG,0x40}//中断使能寄存器
};




void mpu6050_init(int fd_i2c)
{
    int i,iRet;
    unsigned char rdBuff;
    iRet = aod_i2c_write(fd_i2c, MPU_ADDR, mpu6050[0].reg, &mpu6050[0].val, 1);//复位MPU6050
    sleep(1);
    for(i=1; i < sizeof(mpu6050 )/sizeof(mpu6050cfg_t); i++)
    {
        aod_i2c_write(fd_i2c, MPU_ADDR, mpu6050.reg, &mpu6050.val, 1);
        usleep(200);
    }

    for(i=1; i < sizeof(mpu6050 )/sizeof(mpu6050cfg_t); i++)
    {
        iRet = aod_i2c_read(fd_i2c, MPU_ADDR, mpu6050.reg, &rdBuff, 1);
        printf("read iRet:%d,(0x%x,0x%x)\n", iRet, mpu6050.reg, rdBuff);
        usleep(200);
    }
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

153

主题

310

帖子

0

精华

高级会员

Rank: 4

积分
673
金钱
673
注册时间
2019-3-26
在线时间
18 小时
发表于 2019-3-27 15:15:15 | 显示全部楼层
http://www.iis7.com/c/90/
回复 支持 反对

使用道具 举报

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-10-8
在线时间
6 小时
 楼主| 发表于 2019-3-29 13:43:25 | 显示全部楼层

这个就是能用的呀, 还有解决什么呢...
回复 支持 反对

使用道具 举报

19

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2018-8-2
在线时间
170 小时
发表于 2019-7-16 17:52:16 | 显示全部楼层
楼主,你这个是不是配置运动唤醒?sleep(1)?
回复 支持 反对

使用道具 举报

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-10-8
在线时间
6 小时
 楼主| 发表于 2019-8-15 13:42:31 | 显示全部楼层
Leven175 发表于 2019-7-16 17:52
楼主,你这个是不是配置运动唤醒?sleep(1)?

这个sleep不是我要休眠的时间。 。这段代码只是当时我调试的,封装的就不是这样了。
回复 支持 反对

使用道具 举报

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-10-8
在线时间
6 小时
 楼主| 发表于 2019-8-15 13:43:37 | 显示全部楼层
Jane 发表于 2019-8-15 13:42
这个sleep不是我要休眠的时间。 。这段代码只是当时我调试的,封装的就不是这样了。



//配置运动检测
static mpu6050cfg_t mpu6050_cfg[]={//配置mpu6050
                {MPU_MOTION_DET_REG,0x05},//运动检测阀值设置寄存器*
                {MPU_CHECK_TIME_REG,0x01},//检测时间*
                //{MPU_INTBP_CFG_REG,0x80},//INT引脚旁路,逻辑电平为低电平
                {MPU_INTBP_CFG_REG,0x00},//INT引脚旁路,逻辑电平为高电平
                {MPU_INT_EN_REG,0x00}//中断使能寄存器*    默认不开启
};
int mpu_Init(I2C_FUN i2c_w, I2C_FUN i2c_r)
{
        int i;
        I2C_Write = i2c_w;
        I2C_Read  = i2c_r;

        if( (i=mpu_dmp_init()) !=0 )//dmp初始化
        {
                printf("mpu6050 error = %d \n",i);
                return -1;
        }
        for( i=0; i < sizeof(mpu6050_cfg )/sizeof(mpu6050cfg_t); i++ )
        {
                I2C_Write(MPU_ADDR, mpu6050_cfg.reg, &mpu6050_cfg.val, 1);
        }

        return 0;
}
回复 支持 反对

使用道具 举报

19

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2018-8-2
在线时间
170 小时
发表于 2019-8-23 06:51:41 | 显示全部楼层
Jane 发表于 2019-8-15 13:43
//配置运动检测
static mpu6050cfg_t mpu6050_cfg[]={//配置mpu6050
                {MPU_MOTION_DET_REG,0x05}, ...

感谢楼主!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 03:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表