MPU6000 SPI 陀螺仪数据正常读 加速度计数据读出来的值不会变。

2019-07-20 20:31发布

初始化:
void MPU6000_Init()

  uint8_t ctrl = 0x00;
 
  // 管脚初始化
  MPU6000_IO_Init();
 
 //MPU6000复位 往0x6B里面写0x80
 MPU6000_AccRebootCmd();
  HAL_Delay(20);
 
  //设置时钟源为陀螺仪的z轴
   ctrl = 0x03;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_PWR_MGMT_1, 1);
  HAL_Delay(20); 
 
 //启用SPI总线
  ctrl = 0x10;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_USER_CTRL, 1);
  HAL_Delay(20);
 
 //采样率分频,典型值:0x07(125Hz)
 ctrl = 0x07;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_SMPRT_DIV, 1); 
  HAL_Delay(20);
 
 //低通滤波频率,典型值0x06(5Hz)
 ctrl = 0x06;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_CONFIG, 1); 
  HAL_Delay(20);
 
  //陀螺仪量程+/-500
 ctrl = 0x08;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_GYRO_CONFIG, 1);
  HAL_Delay(20);
 
 //加速度量程+/-4g
 ctrl = 0x08;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_ACCEL_CONFIG, 1); 
  HAL_Delay(20);
 
  //配置中断模式,高电平有效。
 ctrl = 0x30;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_INT_PIN_CFG, 1);
 HAL_Delay(20);
 
 //允许中断
 ctrl = 0x01;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_INT_ENABLE, 1);  
  HAL_Delay(20);
}

读芯片的ID:  
  MPU6000_IO_Read(&tmp, MPU6000_WHO_AM_I_ADDR, 1); 返回tmp的值是0x68

进入中断后读取加速度测量值
  MPU6000_IO_Read(tmpbuffer,MPU6000_OUT_X_H_A,6);//读取加速度的原始值值0x3B到0x40,数据X,Y方向一直为零,z方向一直是0x0083   for(i=0; i<3; i++)
    pnRawData=(int16_t)(((uint16_t)tmpbuffer[2*i] << 8) + tmpbuffer[2*i+1]);

printf("pnRawData[0]= 0x%04x pnRawData[1]= 0x%04x pnRawData[2]= 0x%04x ",pnRawData[3],pnRawData[4],pnRawData[5]);

  MPU6000_IO_Read(tmpbuffer,MPU6000_OUT_X_H_M,6);//读取陀螺仪的原始值0x43到0x48,数据能随着板子变动而变动   for(i=3; i<6; i++)
    pnRawData=(int16_t)(((uint16_t)tmpbuffer[2*i] << 8) + tmpbuffer[2*i+1]); 

printf("pnRawData[3]= 0x%04x pnRawData[4]= 0x%04x  pnRawData[5]= 0x%04x ",pnRawData[3],pnRawData[4],pnRawData[5]);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
huaxia0313
1楼-- · 2019-07-21 07:21
回复【6楼】张晓斌:
---------------------------------
你用示波器抓抓时序吧,对比看时序。
张晓斌
2楼-- · 2019-07-21 08:15
回复【8楼】huaxia0313:
---------------------------
我这边可以读ID 但是读出的六个轴的数据在静止时波动太大】
haizhizi1988
3楼-- · 2019-07-21 10:40
张晓斌 发表于 2015-11-8 19:47
回复【8楼】huaxia0313:
---------------------------
我这边可以读ID&nbsp;但是读出的六个轴的数据在静止 ...

我读取mpu6000一直是FF。跪求源码752280300@qq.com
小融
4楼-- · 2019-07-21 13:06
楼主,您好!最近我在尝试MPU6500的SPI通讯,但是who am i不管怎样读出都是00,不知能不能向您索要一份您SPI调试MPU6500的源码?

一周热门 更多>