關(guān)于MPU6050的溫度問(wèn)題,我用的是stm32F103VET6的硬件I2C,對(duì)MPU6050進(jìn)行讀寫(xiě)。最開(kāi)始出現(xiàn)的問(wèn)題是I2C問(wèn)題,對(duì)于硬件I2C的讀寫(xiě)圖,嚴(yán)格對(duì)照

后來(lái)I2C解決了,通信也成功了,但是讀出的數(shù)據(jù)在電腦終端顯示差異很大,數(shù)據(jù)一會(huì)36左右一會(huì)又是在常溫,此時(shí)檢查代碼int16_t MPU6050_TemData()
{
int16_t L,H;
H = (int16_t)MPU6050_Read_Data(TEMP_OUT_H);
L = (int16_t)MPU6050_Read_Data(TEMP_OUT_L);
H = (H<<8)|(L);
return(H);
}最后把代碼修改為 int16_t MPU6050_TemData()
{
int16_t L,H;
H = (uint16_t)MPU6050_Read_Data(TEMP_OUT_H);
L = (uint16_t)MPU6050_Read_Data(TEMP_OUT_L);
H = (int16_t)((H<<8)+(L&0xff));
return(H);
},數(shù)據(jù)很穩(wěn)定,變化趨勢(shì)正確,問(wèn)題解決。 關(guān)于這里,把L強(qiáng)制轉(zhuǎn)換為16位數(shù)還是有符號(hào)的,而L本身也是8位有符號(hào)的,在轉(zhuǎn)換成16位后,其第八位符號(hào)位跑到第16位符號(hào)位,然后與H組合,出現(xiàn)了問(wèn)題
|