STM32 HAL库初始化MPU6050低功耗 中断唤醒

@[TOC]STM32初始化MPU6050低功耗 中断唤醒

STM32初始化MPU6050低功耗 中断唤醒

代码如下: 已亲自测试(2021.2.4) (以下代码 采样率是20Hz)

低功耗中断唤醒 记得连MPU6050的INT引脚到MCU

// An highlighted block

void Motion_Interrupt_Init(void)             //运动中断
{
//	uint8_t res = 0;
	extern I2C_HandleTypeDef hi2c2;
	HAL_I2C_Init(&hi2c2);
	
	MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x80);     //0X6B(107) 恢复成默认值
	HAL_Delay(100);//延时

	MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x00);   	//0X6B(107) 
	MPU_Write_Byte(MPU_PWR_MGMT2_REG,0x00);   	//0X6C(108) 
	//高通滤波器复位
	MPU_Write_Byte(MPU_ACCEL_CFG_REG,0x00);		//0X1C(28)  //0x10(+-4g)   
	//设置低通滤波器 256Hz带宽
	MPU_Write_Byte(MPU_CFG_REG,0x00);			//0X1A(26)
	//设置运动持续时间
	MPU_Write_Byte(MPU_MOTION_DUR,0x01);		//0X20(32)  0x01  (猜想:0x01:1ms)
//	//INT引脚/旁路使能配置
	MPU_Write_Byte(MPU_INTBP_CFG_REG,0x50);		//0X37(55) 高电平触发50us  不访问从IIC总线
	//设置运动阈值
	MPU_Write_Byte(MPU_MOTION_DET_REG,0x05);  	//0X1F(31) 运动阈值1~255   1
	//延时至少1ms 采集样本
	HAL_Delay(5);//延时
//	//运动检测控制寄存器
//	MPU_Write_Byte(MPU_MDETECT_CTRL_REG,0x30);		//0x69(105)	 不清楚为什么这么配置	
	//设置高通滤波器 保持设置
	MPU_Write_Byte(MPU_ACCEL_CFG_REG,0x07); 	//0X1C(28)	
	//设置运动中断使能
	MPU_Write_Byte(MPU_INT_EN_REG,0x40);		//0X38(56)
	
	//设置唤醒频率
	MPU_Write_Byte(MPU_PWR_MGMT2_REG,0x87); 	//0X6C(108)   采样率0xC7(40Hz)  0x87(20Hz)  0x47(5Hz) 0x07
	//启用循环模式(低功耗模式)
	MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x28);  	//0X6B(107) OK
}


  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值