MPU6050讀不出來資料

2021-08-15 17:09:03 字數 1549 閱讀 8560

我使用的是mpu6050 gy521,stm32f407,軟體模擬iic。

問題描述:

mpu6050之前使用正點原子的例程可以讀出資料,但是和超聲波測距的程式融合在一起以後就出不來資料,而且現在單獨使用mpu6050也都不出資料了。

單步除錯發現if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)在這句中,mpu_dmp_get_data(&pitch,&roll,&yaw)的返回值為-1,if進不去,我一層一層查下去,main.c中mpu_dmp_get_data(&pitch,&roll,&yaw)>>inv_mpu.c中dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors,&more)>>inv_mpu_dmp_motion_driver.c中mpu_read_fifo_stream(dmp.packet_length, fifo_data, more)的返回值是-1>>inv_mpu.c中st.chip_cfg.dmp_on=0。

所以最根源是由於st.chip_cfg.dmp_on這個變數的值不對,不知道是什麼問題。

在網上找到許多和我類似的情況,現在一一整理別人的解決辦法:

一:返回值是-1的情況

int mpu_read_fifo_stream(unsigned short length, unsigned char *data,

unsigned char *more)

if (fifo_count > (st.hw->max_fifo >> 1))

}if (i2c_read(st.hw->addr, st.reg->fifo_r_w, length, data))

return -1;

more[0] = fifo_count / length - 1;

return 0;

}

這個就是上面提及的函式,裡面單步除錯時發現是由於這兩句導致返回值為-1

if (!st.chip_cfg.dmp_on)

return -1;

有人發現電源供電的問題,這句**是檢測dmp是否正常工作的,dmp_on出問題就是dmp這部分沒有正常工作,檢查模組供電是3.3v,還是5v.

u8 mpu_init(void)

else return 1;

return 0;

}

有人發現是mpu6050初始化的時候沒開fifo,開啟就好了

其中mpu_

write_byte(mpu_fifo_en_reg,0x00)

;這句話的意思是關閉fifo,只需要修改一下,開啟fifo。

if (tmp[0] & bit_fifo_overflow)
2.迴圈讀取資料,直到mpu6050返回0,表示讀取fifo成功

while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0)//返回0就成功了

MPU6050資料讀取

iicreadbytes devaddr,mpu6050 ra accel xout h,14,buffer 對於加計x軸的資料,buffer 0 存放高位 0xff,buffer 1 0x40存放低位 計算方法 if buffer 0 0x7f mpu6050 lastax buffer 0 25...

MPU6050原始資料對應關係

mpu6050原始資料對應關係 1.陀螺儀 如下圖,陀螺儀範圍 陀螺儀的範圍有 250 500 2000可選,而對應的精度分別是131lsb s 65.5lsb s 32.8lsb s 16.4 lsb s a.那麼這個精度和範圍的關係是什麼?首先mpu6050資料暫存器是乙個16位的,由於最高位是...

wd行動硬碟不能識別 WD行動硬碟讀不出來了

滿意答案 01.可能是硬碟與移動硬碟盒連線處鬆動 02.硬碟盒本身出了問題 主控晶元問題 03.資料線的問題 04.供電的問題 05.硬碟本身線路板的問題 06.硬碟盒線路板的問題 07.usb口的問題 脫落 開焊等 08.硬碟盒的焊點脫落或開焊 09.系統或裝置的驅動問題 10.硬碟分割槽問題 分...