本文開發環境:本文内容:
- MCU型号:STM32F103C8T6
- IDE環境: MDK 5.27
- 代碼生成工具:STM32CubeMx 5.6.1
- HAL庫版本:STM32Cube_FW_F1_V1.8.0
附件:
- STM32F1x HAL庫硬體 I2C 通信
- MPU9250 使用 DMP 輸出姿态角:Roll,Pitch,Yaw
- MPU9250 中 DMP 的移植
- MDK5 STM32F1 示例工程
- MPU9250 中文手冊
- MPU9250 英文參考資料
- DMP 官方驅動庫
- 正點原子阿波羅開發闆 MPU9250九軸傳感器實驗 工程
注意:
① MPU9250自測不通過可能原因:
- I2C速率問題,本文測試400KHz,資料良好,100KHz 和50Khz 會自測失敗
- 子產品需要放置水準,z軸指向上方
② 本文将 DMP庫移植到STM32F1,若是 STM32F4 單片機,可以考慮直接使用附件中,正點原子的 MPU9250 例程,它是基于STM32F4 的。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4lFVNhXV610MFpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4QDO4EzM1cTM5IzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
mpu9250 可以測量裝置的姿态,是平衡車和四軸飛行器常用的晶片,mpu9250 輸出的原始資料為,x,y,z軸的加速度,角速度和磁通量,通常原始資料沒有太大的意義,使用者更關心的是姿态角:Pitch,Roll 和 Yaw,它們是由原始資料通過計算得出,mpu9250 内置了資料處理子產品DMP,它可以将原始資料計算出四元數,MCU 通過四元數既可以計算得出姿态角,可見,DMP 節約了MCU的運算時間,也減輕了其運算負擔,mpu9250 更多請參考附錄資料,這裡隻記錄移植 DMP 庫的過程。一般的,硬體i2c需要外部上拉,由于 本文使用的 mpu9250 子產品的 i2c 有上拉電阻,是以不需額外上拉電路。
注意,DMP 官方的庫示例為 msp430,正點原子将其移植到STM32F4平台,并添加了mpu的初始化和通過四元數擷取姿态函數,是以本文使用正點原子的 DMP 庫作為移植的源碼,減輕工作量。
一、硬體連線
STM32 Board | mpu9250 子產品 |
---|---|
3.3V | VCC |
GND | GND |
PB7 | SDA |
PB6 | SCL |
3.3V | FSYNC |
①注意:FSYNC 懸空可能會出現檢測不到磁力計的錯誤(手冊簡易若不使用,可接GND,不過本文接的是VCC),未用到中斷及其它IO口,是以 EDA,ECL,AD0 和 INT 是懸空的。
二、DMP 移植前準備
1. 模闆工程
mpu9250 提供了 spi 和 i2c 兩種通信模式,本文采用硬體 i2c 來驅動,MCU型号為:STM32F103C8,F103 系列幾乎是通用的,按個人了解,本文附件工程編譯的 hex 檔案亦可下載下傳到其它型号中,如 STM32F103ZExx,STM32F103RCxx 等等。
移植之前,需要一個模闆工程,它可以使 STM32 使用 i2c 進行通信,本文使用 STM32CubeMx(下稱 Mx)生成 HAL 庫工程,并使用 ST-LINK 作為調試和列印資訊工具。ST-LINK 輸出調試資訊 以及 Mx 關于 i2c 的配置方法 這裡不再贅述,詳見連結。
②注意,Mx 預設 i2c 是 10KHz ,這裡需要設定為快速模式,并把速度設定為 400K(400000),否則, mpu9250 的 DMP 将自測失敗:
2. 測試
這一步需要測試 mpu9250 子產品和 STM32 的通信,通過手冊可知,mpu9250 的寄存器 WHOAMI(位址:0x75)預設存放一個值 0x71,它與其他寄存器的初始化無關,是以将子產品上電以後,就可以讀取改寄存器,若值正常,即 0x71 at 0x75則說明工程的 i2c 與 mpu9250 通信正常:
printf("-- Mpu9250 Project Start -- \r\n");
uint8_t recv = 0x00;
uint8_t i2c_err;
i2c_err = HAL_I2C_Mem_Read(&hi2c1, (0x68<<1), 0x75, I2C_MEMADD_SIZE_8BIT, &recv, 1, 0xfff);
if(recv == 0x71)
{
printf("mpu9250 ID Read: OK(0x71 at 0x75)\r\n");
}
else
{
printf("Err:%d\r\n",i2c_err);
}
注意到,
HAL_I2C_Mem_Read
函數的第2個參數為位址,需要使用者自行左移1位,按個人了解,這似乎庫函數完成這個操作更為合理,這部分可能會被更新,是以如果你使用的HAL庫版本與本文不同,此處應該注意,第3個參數為寄存器位址,第3個參數是一個指針,i2c将讀到的值存放在此指針指向的記憶體中,讀取以後,将值進行對比:
STM32 與 mpu9250 的 i2c 通信正常,它是移植的基礎,接下來DMP庫的移植。
三、DMP 源碼的移植
源碼在官方驅動檔案,
motion_driver_6.12
中,路徑:
motion_driver_6.12.zip\motion_driver_6.12\msp430\eMD-6.0\core
:
如前文所述,本文并不直接使用官方的DMP庫,而是移植正點原子的 DMP 庫,該庫檔案在阿波羅開發闆實驗34中:
該工程可以在正點原子論壇和附錄中下載下傳。
1. 添加源碼
首先将正點原子的DMP庫檔案夾 和 MPU9250 檔案夾(這個檔案夾包含
mpu9250.c/h
主要編寫上層函數,如 i2c 接口,讀取并列印資料,初始化mpu9250等。)拷貝在工程中:
其中,MPU9250 在 HARDWARE 檔案夾中:
接着将檔案添加到工程中,
DMP庫實際分多個檔案夾,在工程邏輯裡,隻存放在DMP檔案路徑下即可。
注意還需要設定頭檔案的路徑:
2. 置換 libmpllib.lib (M4 -> M3)
DMP\mpl 下 libmpllib.lib 靜态庫需要添加到工程中,但是由于正點原子為MCU為STM32F4,使用靜态庫對應M4核心,是以不能使用:
在官方固件庫中可以找到 M3 對應的版本,路徑如下:
解壓以後,置換(覆寫)工程中 DMP\mpl 的靜态庫:
以添加源檔案的方法,添加到工的DMP庫中即可:
至此,檔案已經添加完成,接下來是代碼的修改。
3. 添加全局宏定義
官方的庫支援多個平台,不同平台程式寫法不同,庫是通過宏定義來區分不同平台的,在這裡可以添加全局宏定義:
本文添加宏定義:
EMPL_TARGET_STM32F4
,
MPU9250
,
EMPL
,
MPL_LOG_NDEBUG=1
,簡單地或,這些宏定義打開了STM32平台需要的一些程式,可以通過搜尋功能,具體了解這些宏都打開什麼具體代碼。注意不同變量用英文格式的逗号隔開:
雖然本文使用的是STM32F1,此處添加的宏為
EMPL_TARGET_STM32F4
并無影響,因為該宏隻是用來打開與 STM32 相關的代碼,并不特定 F4 晶片。
4. DMP 庫接口函數定義(inv_mpu.c/h)
-
inv_mpu.c
DMP 需要調用 i2c 的讀寫函數,以及系統毫秒級的延時函數,通過宏定義可以設定:
#include "mpu9250.h"
...
#define i2c_write MPU_Write_Len
#define i2c_read MPU_Read_Len
#define delay_ms HAL_Delay
這樣,通過将
i2c_write
,
i2c_read
和
delay_ms
換成本文工程的API函數,DMP庫既可調用i2c的讀寫以及正确延時,注意要添加
mpu9250.h
頭檔案,否則MDK無法識别
MPU_Write_Len
這些函數,通過後文對
mpu9250.h
的修改,此處将可識别 .
HAL_Delay()
。
#include "myiic.h"
#include "delay.h"
#include "usart.h"
3個頭檔案為正點相關,需要删除。
-
inv_mpu.h
同時,
中,包含頭檔案inv_mpu.h
需要删除,與本文無關,另外該檔案使用到 u8 關鍵字,這是正點原子 uint8_t 的縮寫,需要類型定義:sys.h
#include "main.h"
typedef uint8_t u8;
typedef uint16_t u16;
清将這3代碼添加到
inv_mpu.h
中。
mpu_dmp_init()
中的
IIC_Init();
需要删除。
5. 接口函數與頭檔案(mpu9250.c)
接下來針對 mpu9250.c/h 進行移植,這2個檔案是正點原子編寫的,屬于DMP庫函數的上層應用。
正點原子使用的是模拟的i2c功能,是以工程可以看到模拟時序的代碼,這部分需要替換,将其替換成 HAL 函數即可,在mpu9250.c 檔案中:
//IIC連續寫
//addr:器件位址
//reg:寄存器位址
//len:寫入長度
//buf:資料區
//傳回值:0,正常
// 其他,錯誤代碼
u8 MPU_Write_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
u8 i;
IIC_Start();
IIC_Send_Byte((addr<<1)|0); //發送器件位址+寫指令
if(IIC_Wait_Ack()) //等待應答
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg); //寫寄存器位址
IIC_Wait_Ack(); //等待應答
for(i=0;i<len;i++)
{
IIC_Send_Byte(buf[i]); //發送資料
if(IIC_Wait_Ack()) //等待ACK
{
IIC_Stop();
return 1;
}
}
IIC_Stop();
return 0;
}
//IIC連續讀
//addr:器件位址
//reg:要讀取的寄存器位址
//len:要讀取的長度
//buf:讀取到的資料存儲區
//傳回值:0,正常
// 其他,錯誤代碼
u8 MPU_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
IIC_Start();
IIC_Send_Byte((addr<<1)|0); //發送器件位址+寫指令
if(IIC_Wait_Ack()) //等待應答
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg); //寫寄存器位址
IIC_Wait_Ack(); //等待應答
IIC_Start();
IIC_Send_Byte((addr<<1)|1); //發送器件位址+讀指令
IIC_Wait_Ack(); //等待應答
while(len)
{
if(len==1)*buf=IIC_Read_Byte(0);//讀資料,發送nACK
else *buf=IIC_Read_Byte(1); //讀資料,發送ACK
len--;
buf++;
}
IIC_Stop(); //産生一個停止條件
return 0;
}
//IIC寫一個位元組
//devaddr:器件IIC位址
//reg:寄存器位址
//data:資料
//傳回值:0,正常
// 其他,錯誤代碼
u8 MPU_Write_Byte(u8 addr,u8 reg,u8 data)
{
IIC_Start();
IIC_Send_Byte((addr<<1)|0); //發送器件位址+寫指令
if(IIC_Wait_Ack()) //等待應答
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg); //寫寄存器位址
IIC_Wait_Ack(); //等待應答
IIC_Send_Byte(data); //發送資料
if(IIC_Wait_Ack()) //等待ACK
{
IIC_Stop();
return 1;
}
IIC_Stop();
return 0;
}
//IIC讀一個位元組
//reg:寄存器位址
//傳回值:讀到的資料
u8 MPU_Read_Byte(u8 addr,u8 reg)
{
u8 res;
IIC_Start();
IIC_Send_Byte((addr<<1)|0); //發送器件位址+寫指令
IIC_Wait_Ack(); //等待應答
IIC_Send_Byte(reg); //寫寄存器位址
IIC_Wait_Ack(); //等待應答
IIC_Start();
IIC_Send_Byte((addr<<1)|1); //發送器件位址+讀指令
IIC_Wait_Ack(); //等待應答
res=IIC_Read_Byte(0); //讀資料,發送nACK
IIC_Stop(); //産生一個停止條件
return res;
}
這4個函數分别是:i2c 讀寫一或多個位元組,需要将其替換成本文使用HAL庫函數,替換後如下:
//IIC連續寫
//addr:器件位址
//reg:寄存器位址
//len:寫入長度
//buf:資料區
//傳回值:0,正常
// 其他,錯誤代碼
u8 MPU_Write_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
HAL_I2C_Mem_Write(&hi2c1, (addr<<1), reg, I2C_MEMADD_SIZE_8BIT, buf, len, 0xfff);
return 0;
}
//IIC連續讀
//addr:器件位址
//reg:要讀取的寄存器位址
//len:要讀取的長度
//buf:讀取到的資料存儲區
//傳回值:0,正常
// 其他,錯誤代碼
u8 MPU_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
HAL_I2C_Mem_Read(&hi2c1, (addr<<1), reg, I2C_MEMADD_SIZE_8BIT, buf, len, 0xfff);
return 0;
}
//IIC寫一個位元組
//devaddr:器件IIC位址
//reg:寄存器位址
//data:資料
//傳回值:0,正常
// 其他,錯誤代碼
u8 MPU_Write_Byte(u8 addr,u8 reg,u8 data)
{
HAL_I2C_Mem_Write(&hi2c1, (addr<<1), reg, I2C_MEMADD_SIZE_8BIT, &data, 1, 0xfff);
return 0;
}
//IIC讀一個位元組
//reg:寄存器位址
//傳回值:讀到的資料
u8 MPU_Read_Byte(u8 addr,u8 reg)
{
u8 res;
HAL_I2C_Mem_Read(&hi2c1, (addr<<1), reg, I2C_MEMADD_SIZE_8BIT, &res, 1, 0xfff);
return res;
}
注意到,該HAL庫版本,i2c位址需要使用者自行左移1位。
頭檔案部分:
#include "mpu9250.h"
#include "myiic.h"
#include "delay.h"
也需要修改為:
#include "mpu9250.h"
#include "main.h"
#include "i2c.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
#include "stdio.h"
mpu9250
頭檔案定義和聲明不需要改變,myiic.h 和 delay.h 是模拟 i2c 和延時部分函數,與HAL不同,需要修改。此外,本文還添加了
inv_mpu.h
和
inv_mpu_dmp_motion_driver.h
頭檔案,這部分正點原子main.c中,以為其 mpu9250 是寫在mian.c函數中,而本文是在 mpu9250.c 中。
最後,正點原子的
MPU9250_Init()
使用了
IIC_Init()
需要删除, 工程已經自動
main()
函數中初始化 i2c。其中
delay_ms()
需要改成
HAL_Delay()
:
u8 MPU9250_Init(void)
{
u8 res=0;
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X80);//複位MPU9250
HAL_Delay(100); //延時100ms
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X00);//喚醒MPU9250
MPU_Set_Gyro_Fsr(3); //陀螺儀傳感器,±2000dps
MPU_Set_Accel_Fsr(0); //加速度傳感器,±2g
MPU_Set_Rate(50); //設定采樣率50Hz
MPU_Write_Byte(MPU9250_ADDR,MPU_INT_EN_REG,0X00); //關閉所有中斷
MPU_Write_Byte(MPU9250_ADDR,MPU_USER_CTRL_REG,0X00);//I2C主模式關閉
MPU_Write_Byte(MPU9250_ADDR,MPU_FIFO_EN_REG,0X00); //關閉FIFO
MPU_Write_Byte(MPU9250_ADDR,MPU_INTBP_CFG_REG,0X82);//INT引腳低電平有效,開啟bypass模式,可以直接讀取磁力計
res=MPU_Read_Byte(MPU9250_ADDR,MPU_DEVICE_ID_REG); //讀取MPU6500的ID
if(res==MPU6500_ID) //器件ID正确
{
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X01); //設定CLKSEL,PLL X軸為參考
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT2_REG,0X00); //加速度與陀螺儀都工作
MPU_Set_Rate(50); //設定采樣率為50Hz
}else return 1;
res=MPU_Read_Byte(AK8963_ADDR,MAG_WIA); //讀取AK8963 ID
if(res==AK8963_ID)
{
MPU_Write_Byte(AK8963_ADDR,MAG_CNTL1,0X11); //設定AK8963為單次測量模式
}else return 1;
return 0;
}
6. u8/u16 宏定義 與 頭檔案(mpu9250.h)
正點原子使用了u8/u16 關鍵字來表示 uint8_t 和 uint16_t,在 mpu9250 中需要添加:
typedef uint8_t u8;
typedef uint16_t u16;
另外 mpu9250.h 的頭檔案 :
是正點原子的特有,它提供位帶操作燈,此處不需要用到,固删除即可。為了MDK識别 uint8_t 和 uint16_t,此處需要包含
main.h 頭檔案:
7. log_stm32.c
#include "stm32f4xx.h"
#include "usart.h"
log 處理部分,需要STM32頭檔案和列印函數,針對本文修改為:
#include "stm32f1xx.h"
#include "stdio.h"
至此,完成了檔案添加和設配,
8. C99 标準 與 微庫
請確定使用 c99 标準:
如果你使用其它編譯器,請保證它是支援c99的,我記得老版本的 MDK 也需要使用者指定使用c99标準。
本文使用的是c8t6,容量較小,如果不是用微庫,會導緻空間不夠:
編譯結果:0 Error(s),0 Warning(s)
9. 輸出姿态角
需要使用 API 函數,來測試移植的效果:
void mpu9250_Start(void)
{
float pitch,roll,yaw; //歐拉角
short aacx,aacy,aacz; //加速度傳感器原始資料
short gyrox,gyroy,gyroz; //陀螺儀原始資料
short temp; //溫度
uint8_t err = mpu_dmp_init();
while(err)
{
printf("mpu_init_err:%d\r\n",err);
while(1);
}
printf("mpu9250 Ok\r\n");
while(1)
{
err = mpu_mpl_get_data(&pitch,&roll,&yaw);
if(err == 0)
{
temp = MPU_Get_Temperature(); //得到溫度值(擴大了100倍)
MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度傳感器資料
MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺儀資料
//mpu6050_send_data(aacx,aacy,aacz,gyrox,gyroy,gyroz); //發送加速度+陀螺儀原始資料
printf("roll = %f pitch = %f yaw = %f (T = %d)\r\n",roll,pitch,yaw,temp);
}
}
}
注意,進入到
mpu9250_Start()
後就不斷的讀取資料,這裡必須瘋狂的讀取,加入延時可能會導緻資料不穩定,測試中,發現延時50ms資料穩定,但是仍然會出現另一個問題——角度更新速度很慢,即是,若插入延時50ms語句,将 mpu9250 立起來以後(Roll:0-> 90°),會發現列印的Roll角慢慢從0°增加到90°。
測試:
在
main()
函數 while(1) 調用該函數即可:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
while (1)
{
extern void mpu9250_Start(void);
printf("-- Mpu9250 Project Start -- \r\n");
uint8_t recv = 0x00;
uint8_t i2c_err;
i2c_err = HAL_I2C_Mem_Read(&hi2c1, (0x68<<1), 0x75, I2C_MEMADD_SIZE_8BIT, &recv, 1, 0xfff);
if(recv == 0x71)
{
printf("mpu9250 ID Read: OK(0x71 at 0x75)\r\n");
}
else
{
printf("Err:%d\r\n",i2c_err);
}
mpu9250_Start();
}
}
注意:上電時,子產品需要保持水準靜止,Roll 和 Pitch 有角度會導緻自測不通過。這裡 pitch 接近 90° 或 -90° 時候,Roll 角會計算出 ±180°,原因未明。
運作後列印資訊:
– Mpu9250 Project Start –
mpu9250 ID Read: OK(0x71 at 0x75)
mpu9250 Start !
[00000]roll = -0.620728 pitch = -3.342117 yaw = -0.018097 (T = 2912)
[00001]roll = -0.618210 pitch = -3.339798 yaw = -0.018082 (T = 2911)
[00002]roll = -0.617249 pitch = -3.336182 yaw = -0.018036 (T = 2913)
[00003]roll = -0.614746 pitch = -3.332611 yaw = -0.018005 (T = 2910)
[00004]roll = -0.612244 pitch = -3.329391 yaw = -0.017960 (T = 2912)
[00005]roll = -0.610107 pitch = -3.327469 yaw = -0.017944 (T = 2911)
[00006]roll = -0.609650 pitch = -3.324951 yaw = -0.017914 (T = 2911)
[00007]roll = -0.606903 pitch = -3.323837 yaw = -0.017899 (T = 2910)
[00008]roll = -0.603775 pitch = -3.325470 yaw = -30.951370 (T = 2912)
[00009]roll = -0.603867 pitch = -3.326645 yaw = -0.017944 (T = 2914)
[00010]roll = -0.600632 pitch = -3.325043 yaw = -0.017929 (T = 2913)
[00011]roll = -0.598740 pitch = -3.325958 yaw = -0.017944 (T = 2912)
[00012]roll = -0.595673 pitch = -3.323944 yaw = -0.017929 (T = 2912)
[00013]roll = -0.591949 pitch = -3.322510 yaw = -0.017914 (T = 2911)
[00014]roll = -0.591263 pitch = -3.323853 yaw = -0.017929 (T = 2911)
[00015]roll = -0.588211 pitch = -3.322418 yaw = -0.017914 (T = 2909)
[00016]roll = -0.585022 pitch = -3.320343 yaw = -0.017883 (T = 2913)
[00017]roll = -0.585098 pitch = -3.320389 yaw = -0.017883 (T = 2913)
[00018]roll = -0.583801 pitch = -3.321503 yaw = -0.017899 (T = 2912)
[00019]roll = -0.582504 pitch = -3.321640 yaw = -0.017899 (T = 2911)
[00020]roll = -0.580688 pitch = -3.319077 yaw = -0.017868 (T = 2913)
[00021]roll = -0.579758 pitch = -3.316071 yaw = -0.017838 (T = 2911)
[00022]roll = -0.573975 pitch = -3.316238 yaw = -0.017838 (T = 2912)
[00023]roll = -0.572037 pitch = -3.316574 yaw = -0.017853 (T = 2911)
[00024]roll = -0.572159 pitch = -3.318909 yaw = -0.017868 (T = 2911)
[00025]roll = -0.570068 pitch = -3.315369 yaw = -0.017838 (T = 2912)
[00026]roll = -0.568604 pitch = -3.314392 yaw = -0.017822 (T = 2911)
[00027]roll = -0.566040 pitch = -3.312424 yaw = -0.017807 (T = 2911)
[00028]roll = -0.562973 pitch = -3.309235 yaw = -0.017776 (T = 2912)
[00029]roll = -0.560150 pitch = -3.308868 yaw = -0.017776 (T = 2911)
[00030]roll = -0.561325 pitch = -3.307648 yaw = -0.017761 (T = 2911)
[00031]roll = -0.556793 pitch = -3.307846 yaw = -0.017761 (T = 2911)
[00032]roll = -0.556992 pitch = -3.304993 yaw = -0.017731 (T = 2910)
[00033]roll = -0.556549 pitch = -3.306137 yaw = -0.017746 (T = 2911)
[00034]roll = -0.553391 pitch = -3.306503 yaw = -0.017746 (T = 2911)
[00035]roll = -0.550919 pitch = -3.305664 yaw = -0.017746 (T = 2914)
[00036]roll = -0.548676 pitch = -3.308563 yaw = -0.017761 (T = 2911)
[00037]roll = -0.547714 pitch = -3.307068 yaw = -0.017761 (T = 2912)
[00038]roll = -0.544952 pitch = -3.308075 yaw = -0.017761 (T = 2911)
[00039]roll = -0.547546 pitch = -3.306259 yaw = -0.017746 (T = 2912)
[00040]roll = -0.546295 pitch = -3.303650 yaw = -0.017715 (T = 2911)
[00041]roll = -0.545883 pitch = -3.300827 yaw = -0.017700 (T = 2912)
[00042]roll = -0.545349 pitch = -3.299728 yaw = -0.017685 (T = 2908)
[00043]roll = -0.543106 pitch = -3.297882 yaw = -0.017670 (T = 2910)
[00044]roll = -0.539200 pitch = -3.295929 yaw = -0.017654 (T = 2911)
[00045]roll = -0.538452 pitch = -3.294464 yaw = -0.017639 (T = 2911)
[00046]roll = -0.535522 pitch = -3.293365 yaw = -0.017624 (T = 2912)
[00047]roll = -0.537323 pitch = -3.292068 yaw = -0.017609 (T = 2912)
[00048]roll = -0.535065 pitch = -3.291351 yaw = -0.017609 (T = 2911)
[00049]roll = -0.532852 pitch = -3.293121 yaw = -0.017624 (T = 2911)
[00050]roll = -0.530167 pitch = -3.292023 yaw = -0.017609 (T = 2911)
[00051]roll = -0.526825 pitch = -3.290344 yaw = -0.017593 (T = 2910)
[00052]roll = -0.523987 pitch = -3.291214 yaw = -0.017609 (T = 2912)
[00053]roll = -0.524521 pitch = -3.288651 yaw = -0.017578 (T = 2912)
[00054]roll = -0.522064 pitch = -3.286926 yaw = -0.017563 (T = 2911)
[00055]roll = -0.517929 pitch = -3.288925 yaw = -0.017578 (T = 2913)
[00056]roll = -0.515640 pitch = -3.288528 yaw = -0.017578 (T = 2910)
[00057]roll = -0.519424 pitch = -3.288788 yaw = -0.017578 (T = 2914)
[00058]roll = -0.516495 pitch = -3.287796 yaw = -0.017578 (T = 2912)
[00059]roll = -0.513855 pitch = -3.288116 yaw = -0.017578 (T = 2912)
[00060]roll = -0.509918 pitch = -3.286880 yaw = -0.017563 (T = 2913)
[00061]roll = -0.506516 pitch = -3.283585 yaw = -0.017532 (T = 2912)
[00062]roll = -0.504990 pitch = -3.283157 yaw = -0.017532 (T = 2914)
[00063]roll = -0.505630 pitch = -3.284363 yaw = -0.017548 (T = 2912)
[00064]roll = -0.504242 pitch = -3.285095 yaw = -0.017548 (T = 2913)
[00065]roll = -0.502899 pitch = -3.285751 yaw = -0.017548 (T = 2909)
[00066]roll = -0.501251 pitch = -3.286057 yaw = -0.017563 (T = 2914)
[00067]roll = -0.495560 pitch = -3.284348 yaw = -0.017548 (T = 2914)
[00068]roll = -0.491776 pitch = -3.282135 yaw = -0.017517 (T = 2912)
[00069]roll = -0.491333 pitch = -3.281113 yaw = -0.017517 (T = 2912)
[00070]roll = -0.490219 pitch = -3.279190 yaw = -0.017502 (T = 2913)
[00071]roll = -0.487610 pitch = -3.276489 yaw = -0.017471 (T = 2912)
[00072]roll = -0.486206 pitch = -3.275055 yaw = -0.017456 (T = 2916)
[00073]roll = -0.485947 pitch = -3.276688 yaw = -0.017471 (T = 2911)
[00074]roll = -0.483521 pitch = -3.277115 yaw = -0.017487 (T = 2914)
[00075]roll = -0.482315 pitch = -3.278290 yaw = -0.017487 (T = 2912)
[00076]roll = -0.481430 pitch = -3.278214 yaw = -0.017487 (T = 2910)
[00077]roll = -0.478714 pitch = -3.275620 yaw = -0.017471 (T = 2912)
[00078]roll = -0.477005 pitch = -3.271393 yaw = -0.017426 (T = 2912)
[00079]roll = -0.474487 pitch = -3.270004 yaw = -0.017426 (T = 2914)
[00080]roll = -0.472610 pitch = -3.270752 yaw = -0.017426 (T = 2912)
[00081]roll = -0.470825 pitch = -3.267075 yaw = -0.017395 (T = 2913)
[00082]roll = -0.469986 pitch = -3.265549 yaw = -0.017380 (T = 2914)
[00083]roll = -0.469498 pitch = -3.265610 yaw = -0.017380 (T = 2911)
[00084]roll = -0.468842 pitch = -3.265518 yaw = -0.017380 (T = 2911)
[00085]roll = -0.469193 pitch = -3.264648 yaw = -0.017380 (T = 2913)
[00086]roll = -0.467545 pitch = -3.263504 yaw = -0.017365 (T = 2913)
[00087]roll = -0.466888 pitch = -3.265549 yaw = -0.017380 (T = 2912)
[00088]roll = -0.463898 pitch = -3.261765 yaw = -0.017349 (T = 2911)
[00089]roll = -0.462585 pitch = -3.262482 yaw = -0.017365 (T = 2913)
[00090]roll = -0.462631 pitch = -3.263123 yaw = -0.017365 (T = 2910)
[00091]roll = -0.461212 pitch = -3.262390 yaw = -0.017365 (T = 2914)
[00092]roll = -0.462280 pitch = -3.262009 yaw = -0.017349 (T = 2913)
[00093]roll = -0.461288 pitch = -3.259125 yaw = -0.017334 (T = 2914)
[00094]roll = -0.461685 pitch = -3.260880 yaw = -0.017349 (T = 2911)
[00095]roll = -0.460602 pitch = -3.259750 yaw = -0.017334 (T = 2911)
[00096]roll = -0.459656 pitch = -3.260452 yaw = -0.017349 (T = 2913)
[00097]roll = -0.459702 pitch = -3.258621 yaw = -0.017334 (T = 2910)
[00098]roll = -0.458618 pitch = -3.256927 yaw = -0.017319 (T = 2913)
[00099]roll = -0.456802 pitch = -3.257385 yaw = -0.017319 (T = 2911)
[00100]roll = -0.453568 pitch = -3.257462 yaw = -0.017319 (T = 2912)
[00101]roll = -0.452698 pitch = -3.256210 yaw = -0.017303 (T = 2912)
[00102]roll = -0.454163 pitch = -3.256393 yaw = -0.017303 (T = 2912)
[00103]roll = -0.454971 pitch = -3.254883 yaw = -0.017303 (T = 2915)
[00104]roll = -0.453751 pitch = -3.254059 yaw = -0.017288 (T = 2912)
[00105]roll = -0.453171 pitch = -3.252045 yaw = -0.017273 (T = 2911)
[00106]roll = -0.452972 pitch = -3.249146 yaw = -0.017258 (T = 2911)
[00107]roll = -0.451370 pitch = -3.249268 yaw = -0.017258 (T = 2911)
[00108]roll = -0.450470 pitch = -3.245728 yaw = -0.017227 (T = 2913)
[00109]roll = -0.451111 pitch = -3.244354 yaw = -0.017212 (T = 2915)
[00110]roll = -0.448715 pitch = -3.244415 yaw = -0.017212 (T = 2914)
[00111]roll = -0.448380 pitch = -3.242584 yaw = -0.017197 (T = 2913)
[00112]roll = -0.448837 pitch = -3.240616 yaw = -0.017181 (T = 2914)
[00113]roll = -0.446960 pitch = -3.237930 yaw = -0.017166 (T = 2911)
[00114]roll = -0.446075 pitch = -3.235992 yaw = -0.017151 (T = 2911)
[00115]roll = -0.445038 pitch = -3.233490 yaw = -0.017136 (T = 2910)
[00116]roll = -0.444153 pitch = -3.232254 yaw = -0.017120 (T = 2915)
[00117]roll = -0.442154 pitch = -3.230728 yaw = -0.017105 (T = 2914)
[00118]roll = -0.441681 pitch = -3.227066 yaw = -0.017075 (T = 2914)
[00119]roll = -0.437637 pitch = -3.227921 yaw = -0.017090 (T = 2914)
[00120]roll = -0.437668 pitch = -3.230423 yaw = -0.017105 (T = 2917)
[00121]roll = -0.434158 pitch = -3.228699 yaw = -0.017090 (T = 2915)
[00122]roll = -0.431717 pitch = -3.230560 yaw = -0.017105 (T = 2913)
[00123]roll = -0.428436 pitch = -3.226288 yaw = -0.017075 (T = 2911)
[00124]roll = -0.427979 pitch = -3.224182 yaw = -0.017059 (T = 2914)
[00125]roll = -0.428040 pitch = -3.224091 yaw = -0.017059 (T = 2916)
[00126]roll = -0.427124 pitch = -3.224136 yaw = -0.017059 (T = 2912)
[00127]roll = -0.428268 pitch = -3.223160 yaw = -0.017044 (T = 2911)
[00128]roll = -0.426331 pitch = -3.221725 yaw = -0.017044 (T = 2910)
[00129]roll = -0.424591 pitch = -3.216324 yaw = -0.016998 (T = 2912)
[00130]roll = -0.423737 pitch = -3.214661 yaw = -0.016983 (T = 2915)
[00131]roll = -0.423508 pitch = -3.209976 yaw = -0.016953 (T = 2914)
[00132]roll = -0.422653 pitch = -3.208969 yaw = -0.016953 (T = 2913)
[00133]roll = -0.424591 pitch = -3.209213 yaw = -0.016953 (T = 2913)
[00134]roll = -0.423523 pitch = -3.208237 yaw = -0.016937 (T = 2913)
[00135]roll = -0.421326 pitch = -3.207291 yaw = -0.016937 (T = 2916)
[00136]roll = -0.420105 pitch = -3.206482 yaw = -0.016922 (T = 2913)
[00137]roll = -0.420395 pitch = -3.205872 yaw = -0.016922 (T = 2913)
[00138]roll = -0.421707 pitch = -3.204132 yaw = -0.016907 (T = 2912)
[00139]roll = -0.417984 pitch = -3.204468 yaw = -0.016907 (T = 2911)
[00140]roll = -0.413437 pitch = -3.201996 yaw = -0.016891 (T = 2914)
[00141]roll = -0.412781 pitch = -3.203278 yaw = -0.016907 (T = 2912)
[00142]roll = -0.413635 pitch = -3.203918 yaw = -0.016907 (T = 2914)
[00143]roll = -0.412994 pitch = -3.203247 yaw = -0.016907 (T = 2914)
[00144]roll = -0.411987 pitch = -3.200455 yaw = -0.016891 (T = 2913)
[00145]roll = -0.411331 pitch = -3.199738 yaw = -0.016876 (T = 2913)
[00146]roll = -0.411331 pitch = -3.200653 yaw = -0.016891 (T = 2914)
[00147]roll = -0.409302 pitch = -3.201096 yaw = -0.016891 (T = 2913)
[00148]roll = -0.408127 pitch = -3.198761 yaw = -0.016876 (T = 2913)
[00149]roll = -0.407974 pitch = -3.197388 yaw = -0.016861 (T = 2914)
[00150]roll = -0.407166 pitch = -3.193619 yaw = -0.016830 (T = 2912)
[00151]roll = -0.409729 pitch = -3.193939 yaw = -0.016830 (T = 2913)
[00152]roll = -0.410080 pitch = -3.189529 yaw = -0.016800 (T = 2912)
[00153]roll = -0.410263 pitch = -3.190720 yaw = -0.016815 (T = 2915)
[00154]roll = -0.407303 pitch = -3.188156 yaw = -0.016800 (T = 2913)
[00155]roll = -0.404343 pitch = -3.185654 yaw = -0.016785 (T = 2914)
[00156]roll = -0.404053 pitch = -3.185242 yaw = -0.016769 (T = 2914)
[00157]roll = -0.404129 pitch = -3.187225 yaw = -0.016785 (T = 2914)
[00158]roll = -0.403198 pitch = -3.188354 yaw = -0.016800 (T = 2912)
[00159]roll = -0.401398 pitch = -3.189056 yaw = -0.016800 (T = 2913)
[00160]roll = -0.399963 pitch = -3.188919 yaw = -0.016800 (T = 2913)
[00161]roll = -0.399002 pitch = -3.189697 yaw = -0.016800 (T = 2913)
[00162]roll = -0.396774 pitch = -3.190796 yaw = -0.016815 (T = 2915)
[00163]roll = -0.398712 pitch = -3.190826 yaw = -0.016815 (T = 2914)
[00164]roll = -0.399506 pitch = -3.190155 yaw = -0.016815 (T = 2913)
[00165]roll = -0.397888 pitch = -3.187820 yaw = -0.016800 (T = 2911)
[00166]roll = -0.395142 pitch = -3.187042 yaw = -0.016785 (T = 2915)
[00167]roll = -0.391205 pitch = -3.187881 yaw = -0.016800 (T = 2914)
[00168]roll = -0.387802 pitch = -3.190384 yaw = -0.016815 (T = 2913)
[00169]roll = -0.384247 pitch = -3.189255 yaw = -0.016800 (T = 2914)
[00170]roll = -0.382431 pitch = -3.190384 yaw = -0.016815 (T = 2913)
[00171]roll = -0.378937 pitch = -3.193314 yaw = -0.016830 (T = 2913)
[00172]roll = -0.378799 pitch = -3.192474 yaw = -0.016830 (T = 2913)
[00173]roll = -0.377670 pitch = -3.190399 yaw = -0.016815 (T = 2917)
[00174]roll = -0.376862 pitch = -3.191147 yaw = -0.016815 (T = 2914)
[00175]roll = -0.377426 pitch = -3.188538 yaw = -0.016800 (T = 2914)
[00176]roll = -0.371262 pitch = -3.187881 yaw = -0.016800 (T = 2911)
[00177]roll = -0.370651 pitch = -3.185379 yaw = -0.016785 (T = 2912)
[00178]roll = -0.369370 pitch = -3.186234 yaw = -0.016785 (T = 2914)
[00179]roll = -0.368118 pitch = -3.184357 yaw = -0.016769 (T = 2913)
[00180]roll = -0.368362 pitch = -3.185730 yaw = -0.016785 (T = 2915)
[00181]roll = -0.370468 pitch = -3.184753 yaw = -0.016769 (T = 2913)
[00182]roll = -0.369049 pitch = -3.186005 yaw = -0.016785 (T = 2913)
···
[04134]roll = -0.246155 pitch = -3.181274 yaw = -0.014923 (T = 2914)
[04135]roll = -0.245407 pitch = -3.181213 yaw = -0.014923 (T = 2915)
[04136]roll = -0.245193 pitch = -3.180496 yaw = -0.014923 (T = 2914)
[04137]roll = -0.244644 pitch = -3.182343 yaw = -0.014923 (T = 2916)
[04138]roll = -0.246246 pitch = -3.184464 yaw = -0.014938 (T = 2916)
[04139]roll = -0.246704 pitch = -3.182816 yaw = -0.014923 (T = 2916)
[04140]roll = -0.247330 pitch = -3.179962 yaw = -0.014908 (T = 2913)
[04141]roll = -0.246429 pitch = -3.180466 yaw = -0.014923 (T = 2911)
[04142]roll = -0.248047 pitch = -3.179703 yaw = -0.014908 (T = 2914)
[04143]roll = -0.249649 pitch = -3.180130 yaw = -0.014908 (T = 2913)
[04144]roll = -0.250580 pitch = -3.180145 yaw = -0.014908 (T = 2914)
[04145]roll = -0.250168 pitch = -3.181488 yaw = -0.014923 (T = 2913)
[04146]roll = -0.247589 pitch = -3.181183 yaw = -0.014923 (T = 2917)
[04147]roll = -0.249359 pitch = -3.182114 yaw = -0.014923 (T = 2915)
[04148]roll = -0.249619 pitch = -3.181213 yaw = -0.014923 (T = 2913)
[04149]roll = -0.250885 pitch = -3.179810 yaw = -0.014908 (T = 2917)
[04150]roll = -0.252472 pitch = -3.178223 yaw = -0.014908 (T = 2915)
[04151]roll = -0.251862 pitch = -3.179230 yaw = -0.014908 (T = 2915)
[04152]roll = -0.250443 pitch = -3.179642 yaw = -0.014908 (T = 2918)
[04153]roll = -0.253723 pitch = -3.180328 yaw = -0.014908 (T = 2914)
[04154]roll = -0.254288 pitch = -3.182968 yaw = -0.014923 (T = 2913)
[04155]roll = -0.254532 pitch = -3.181839 yaw = -0.014923 (T = 2914)
[04156]roll = -0.253250 pitch = -3.182373 yaw = -0.014923 (T = 2911)
[04157]roll = -0.253357 pitch = -3.183899 yaw = -0.014923 (T = 2914)
[04158]roll = -0.251617 pitch = -3.185684 yaw = -0.014938 (T = 2915)
[04159]roll = -0.252380 pitch = -3.187622 yaw = -0.014938 (T = 2915)
[04160]roll = -0.254486 pitch = -3.187500 yaw = -0.014938 (T = 2917)
[04161]roll = -0.255249 pitch = -3.188065 yaw = -0.014954 (T = 2912)
[04162]roll = -0.255997 pitch = -3.188660 yaw = -0.014954 (T = 2915)
[04163]roll = -0.256561 pitch = -3.186707 yaw = -0.014938 (T = 2913)
[04164]roll = -0.259811 pitch = -3.189560 yaw = -0.014954 (T = 2917)
[04165]roll = -0.261032 pitch = -3.190155 yaw = -0.014954 (T = 2912)
[04166]roll = -0.260406 pitch = -3.187347 yaw = -0.014938 (T = 2915)
子產品靜止狀态,資料穩定。
四、附件
mpu9250 (提取碼:1234 )
[檔案]:
- mpu9250_DMP:本文示例工程
- 正點原子 MPU9250 資料:正點原子工 mpu9250 參考資料
- 實驗34 MPU9250九軸傳感器實驗 :正點原子 F4 示例工程
- motion_driver_6.12 : 官方 DMP估計庫