stm32的陀螺儀芯片MPU6050的初始化寄存器配置


MPU6050讀取數據步驟:

1,檢查MCU(主機)與MPU6050(姿態傳感器)是否通信成功

2,設置MPU6050為復位狀態,並且100ms延時,確保復位完成

3,喚醒MPU6050,選擇PLL為時鍾源

4,配置6軸數據全部輸出(3軸加速度與3軸陀螺儀)

5,禁止所有中斷(避免傳感器讀取到一個數據就中斷,而耽誤系統進程)

6,設置MPU6050的內部采樣頻率以及低通濾波器(小的飛行器一一般設施在20~30Hz即可)

7,設置陀螺儀與加速度計的滿量程范圍

8,主處理芯片可以直接訪問MPU6050輔助I2C

下面來一步一步配置:

1,檢查MCU(主機)與MPU6050(姿態傳感器)是否通信成功

我們選用的讀取MPU6050儲存ID的寄存器即0x75,如果讀出來ID是默認值0x68,那么是不是可以證明通信成功了

2,設置MPU6050為復位狀態,並且100ms延時,確保復位完成

看到電源管理寄存器1(0x6B)

我們只需要將第7位寄存器置1即可復位,別的寄存器不做配置,就都置0。

那么將0x6B配置為0x80即可

3,喚醒MPU6050,選擇PLL為時鍾源

還是對0x6B進行配置,看到[2:0]寄存器,這里我們配置為0x01。

自動選擇最好的時鍾源

4,配置6軸數據全部輸出(3軸加速度與3軸陀螺儀)

看到電源管理2寄存器(0x6C)

 我們看到[0:5]為加速度與陀螺儀是否待機的配置,[6:7]為低功耗模式的設置。

在這里我們不需要待機與低功耗,說話以直接每一位都置為0即可,0x6C置0x00

5,禁止所有中斷(避免傳感器讀取到一個數據就中斷,而耽誤系統進程)

看控制中斷使能的寄存器(0x38)

 我們不讓中斷產生,所以還是將寄存器配置為0x00

6,設置MPU6050的內部采樣頻率以及低通濾波器

配置SMPLRT_DIV的值就可以進行分頻,DLPF為數字低通濾波器,后面我們為了使數據更加穩定是要進行配置的,那么陀螺儀的輸出頻率=1kHz,這時候我們假設SMPLRT_DIV置1,那么陀螺儀的輸出頻率為500Hz,這時候要考慮飛機姿態結算的頻率,假設高於500Hz,那么意味着可能兩次姿態結算用的都是同一組陀螺儀數據。這樣不利於提升精度。所以我們這里SMPLRT_DIV置0。保持1000Hz,即0x19置為0x00

 

 0x1A寄存器是對DLPF(數字低通濾波)進行配置,一般將他們的DLPF都設為20Hz

即配置寄存器0x1A為0x04

7,設置陀螺儀與加速度計的滿量程范圍

我們不進行自檢,所以只看[3:4]位,我們將角度設置大一些,2000度/s,

將寄存器0x1B配置為0x18

 同樣的,加速度計我們也不進行自檢,所以所以只看[3:4]位,我們將角度配置為+-4g

將寄存器0x1C配置為0x08

8,主處理芯片可以直接訪問MPU6050輔助I2C

看到最后Bit1的I2C_BYPASS_EN的配置說明:

輔助I2C可以用來外接磁力計或其他傳感器。 有兩種工作模式: I2C Master Mode, 此時 MPU-60X0作為主設備與外接傳感器通信; Pass-Through Mode, 此時僅用作連接, 允許 MPU 和外接傳感器同時和芯片通信

我們直接將寄存器0x37配置為0x02即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM