MPU6050加速度传感器学习笔记之实验《获取原始数据》

1.硬件STM32-MPU6050 硬件IIC,MPU6050基本驱动程序,不包含DMP功能,没有移植官方驱动程序。本程序通过串口输出简单测量数据,没有驱动液晶显示。(不支持匿名上位机可视数据)。(使用硬件IIC时不能与液晶屏同时使用,因为FSMC的NADV与IIC1的SDA 是同一个引脚,互相影响了)...
摘要由CSDN通过智能技术生成

硬件STM32-MPU6050
硬件IIC,MPU6050基本驱动程序,不包含DMP功能,没有移植官方驱动程序。本程序通过串口输出简单测量数据,没有驱动液晶显示。(不支持匿名上位机可视数据)。(使用硬件IIC时不能与液晶屏同时使用,因为FSMC的NADV与IIC1的SDA 是同一个引脚,互相影响了)

mpu6050.c

#include "./mpu6050/mpu6050.h"
#include "./usart/bsp_usart.h"
#include "./i2c/bsp_i2c.h"

/**
  * @brief   写数据到MPU6050寄存器
  * @param   
  * @retval  
  */
void MPU6050_WriteReg(u8 reg_add,u8 reg_dat)//
{
   
	I2C_ByteWrite(reg_dat,reg_add); 
}

/**
  * @brief   从MPU6050寄存器读取数据
  * @param   
  * @retval  
  */
void MPU6050_ReadData(u8 reg_add,unsigned char* Read,u8 num)// 地址,变量指针,读取寄存器个数
{
   
	I2C_BufferRead(Read,reg_add,num);
}


/**
  * @brief   初始化MPU6050芯片
  * @param   
  * @retval  
  */
void MPU6050_Init(void)
{
   
  int i=0,j=0;
  //在初始化之前要延时一段时间,若没有延时,则断电后再上电数据可能会出错
  for(i=0;i<1000;i++)
  {
   
    for(j=0;j<1000;j++)
    {
   
      ;
    }
  }
	MPU6050_WriteReg(MPU6050_RA_PWR_MGMT_1, 0x00);	    //解除休眠状态
	MPU6050_WriteReg(MPU6050_RA_SMPLRT_DIV , 0x07);	    //陀螺仪采样率
	MPU6050_WriteReg(MPU6050_RA_CONFIG , 0x06);	        //配置低通滤波器
	MPU6050_WriteReg(MPU6050_RA_ACCEL_CONFIG , 0x01);	  //配置加速度传感器工作在2G模式
	MPU6050_WriteReg(MPU6050_RA_GYRO_CONFIG, 0x18);     //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
}

/**
  * @brief   读取MPU6050的ID,检测陀螺仪
  * @param   
  * @retval  正常返回1,异常返回0
  */
uint8_t MPU6050ReadID(void)
{
   
	unsigned char Re = 0;
    MPU6050_ReadData(MPU6050_RA_WHO_AM_I,&Re,1);    //读器件地址
	if(Re != 0x68)
	{
   
		MPU_ERROR("MPU6050 dectected error!\r\n检测不到MPU6050模块,请检查模块与开发板的接线");
		return 0;
	}
	else
	{
   
		MPU_INFO("MPU6050 ID = %d\r\n",Re);
		return 1;
	}
		
}

/**
  * @brief   读取MPU6050的加速度数据
  * @param   
  * @retval  
  */
void MPU6050ReadAcc(short *accData)
{
   
    u8 buf[6];
    MPU6050_ReadData(MPU6050_ACC_OUT, buf, 6);
    accData[0] = (buf[0] << 8) | buf[1];
    accData[1] = (buf[2] << 8) | buf[3];
    accData[2] = (buf[4] << 8) | buf[5];
}

/**
  * @brief   读取MPU6050的角加速度数据
  * @param   
  * @retval  
  */
void MPU6050ReadGyro(short *gyroData)
{
   
    u8 buf[6];
    MPU6050_ReadData(MPU6050_GYRO_OUT,buf,6);
    gyroData[0] = (buf[0] << 8) | buf[1];
    gyroData[1] = 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值