mpu6050读取数据一直没有变化

2019-07-21 01:58发布

学习的是精英STM32F103ZET6的mpu6050例程 想要移植到STM32F103C8上边 使用的是HAL库
iic的库是自己写的 可以保证正确性
正点原子的例程移植到HAL库的F103C8十分麻烦 于是打算自己用iic库函数读取数据
在CUBEMX生成文件并初始化mpu6050完成之后
我将对应的vcc gnd scl sda连接到stm32f103c8上边 AD0管脚没有接
最简单的我先读取了MPU6050陀螺仪储存数据的寄存器里面的值并用串口发送到电脑
电脑接受的x轴 y轴 z轴的数据一直都是18 18 02没有变化
在论坛里面找了很久试了很多办法都没有得到解决
希望用过这个模块的同学能帮我看看哪里出现了问题 感谢

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_I2C1_Init();

  MX_USART1_UART_Init();
  uint8_t abc[3]={0,1,2};
MPU_Init();
  


float pitch,roll,yaw;  
short aacx,aacy,aacz;
short gyrox,gyroy,gyroz;
short temp;  
uint8_t gyro[3]={gyrox,gyroy,gyroz};
uint8_t accel[3]={aacx,aacy,aacz};
u8 temp0[1]={temp};
u8 buff[6];



  while (1)
  {
    i2c_read_buf(buff,1,0x43);
  i2c_read_buf(buff+1,1,0x44);
  i2c_read_buf(buff+2,1,0x45);
  i2c_read_buf(buff+3,1,0x46);
  i2c_read_buf(buff+4,1,0x47);
  i2c_read_buf(buff+5,1,0x48);
  gyrox=((uint16_t)buff[0]<<8)|buff[1];  
  gyroy=((uint16_t)buff[2]<<8)|buff[3];  
  gyroz=((uint16_t)buff[4]<<8)|buff[5];
    if(MPU_Init()==0)
  {HAL_UART_Transmit(&huart1,gyro,3,100);}
  HAL_Delay(200);


}
这里是主函数,MPU的库是正点原子的库,思考了好几天都没有找到解决办法,谢谢大家了


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
养胖那只猪
1楼-- · 2019-07-22 08:10
确定一下时钟,IIC用的是硬件还是软件?我上一次通讯不成功就是在这里出错,不知道能否帮到你。
另外读取MPU6050仅是初始数据,转成角位数据楼主是怎么弄的?
82年的矿泉水
2楼-- · 2019-07-22 12:58
养胖那只猪 发表于 2019-5-5 13:40
确定一下时钟,IIC用的是硬件还是软件?我上一次通讯不成功就是在这里出错,不知道能否帮到你。
另外读取M ...

IIC用的软件模拟 是自己写的库 我现在能从寄存器里面读到数据 是不是说明iic通信没错? 但我读器件信息读出来不是0x68而是FF 问题是出在mpu的初始化上面吗? 我打算先读出基本数据 再用DMP算出那三个角度
82年的矿泉水
3楼-- · 2019-07-22 14:19
现在情况可以读出数据了,但是数据不会随着mpu的改变而改变,一直都是一个数值,谁遇到过这种情况又是怎么解决的呢??
peng1554
4楼-- · 2019-07-22 17:38
 精彩回答 2  元偷偷看……
82年的矿泉水
5楼-- · 2019-07-22 18:16
 精彩回答 2  元偷偷看……

一周热门 更多>