接下來,我們介紹一下利用STM32F1讀取MPU6050的加速度和角度傳感器數據(非中斷方式),需要哪些初始化步驟:
1)初始化IIC接口
MPU6050采用IIC與STM32F1通信,所以我們需要先初始化與MPU6050連接的SDA和SCL數據線。
2)復位MPU6050
這一步讓MPU6050內部所有寄存器恢復默認值,通過對電源管理寄存器1(0X6B)的bit7寫1實現。復位后,電源管理寄存器1恢復默認值(0X40),然后必須設置該寄存器為0X00,以喚醒MPU6050,進入正常工作狀態。
3)設置角速度傳感器(陀螺儀)和加速度傳感器的滿量程范圍
這一步,我們設置兩個傳感器的滿量程范圍(FSR),分別通過陀螺儀配置寄存器(0X1B)和加速度傳感器配置寄存器(0X1C)設置。我們一般設置陀螺儀的滿量程范圍為±2000dps,加速度傳感器的滿量程范圍為±2g。
4)設置其他參數
這里,我們還需要配置的參數有:關閉中斷、關閉AUXIIC接口、禁止FIFO、設置陀螺儀采樣率和設置數字低通濾波器(DLPF)等。本章我們不用中斷方式讀取數據,所以關閉中斷,然后也沒用到AUXIIC接口外接其他傳感器,所以也關閉這個接口。分別通過中斷使能寄存器(0X38)和用戶控制寄存器(0X6A)控制。MPU6050可以使用FIFO存儲傳感器數據,不過本章我們沒有用到,所以關閉所有FIFO通道,這個通過FIFO使能寄存器
(0X23)控制,默認都是0(即禁止FIFO),所以用默認值就可以了。陀螺儀采樣率通過采
樣率分頻寄存器(0X19)控制,這個采樣率我們一般設置為50即可。數字低通濾波器(DLPF)則通過配置寄存器(0X1A)設置,一般設置DLPF為帶寬的1/2即可。
5)配置系統時鐘源并使能角速度傳感器和加速度傳感器
系統時鐘源同樣是通過電源管理寄存器1(0X1B)來設置,該寄存器的最低三位用于設置系統時鐘源選擇,默認值是0(內部8MRC震蕩),不過我們一般設置為1,選擇x軸陀螺PLL作為時鐘源,以獲得更高精度的時鐘。同時,使能角速度傳感器和加速度傳感器,這兩個操作通過電源管理寄存器2(0X6C)來設置,設置對應位為0即可開啟。
至此,MPU6050的初始化就完成了,可以正常工作了(其他未設置的寄存器全部采用默認值即可),接下來,我們就可以讀取相關寄存器,得到加速度傳感器、角速度傳感器和溫度傳感器的數據了。
首先,我們介紹電源管理寄存器1,該寄存器地址為0X6B,各位描述如圖1.1.3所示:
圖1.1.3電源管理寄存器1各位描述
其中,DEVICE_RESET位用來控制復位,設置為1,復位MPU6050,復位結束后,MPU硬件自動清零該位。SLEEEP位用于控制MPU6050的工作模式,復位后,該位為1,即進入了睡眠模式(低功耗),所以我們要清零該位,以進入正常工作模式。TEMP_DIS用于設置是否使能溫度傳感器,設置為0,則使能。最后CLKSEL[2:0]用于選擇系統時鐘源,選擇關系如表1.1.1所示:
表1.1.1CLKSEL選擇列表
默認是使用內部8MRC晶振的,精度不高,所以我們一般選擇X/Y/Z軸陀螺作為參考的PLL作為時鐘源,一般設置CLKSEL=001即可。
接著,我們看陀螺儀配置寄存器,該寄存器地址為:0X1B,各位描述如圖1.1.4所示:
圖1.1.4陀螺儀配置寄存器各位描述
該寄存器我們只關心FS_SEL[1:0]這兩個位,用于設置陀螺儀的滿量程范圍:0,±250°/S;1,±500°/S;2,±1000°/S;3,±2000°/S;我們一般設置為3,即±2000°/S,因為陀螺儀的ADC為16位分辨率,所以得到靈敏度為:65536/4000=16.4LSB/(°/S)。
接下來,我們看加速度傳感器配置寄存器,寄存器地址為:0X1C,各位描述如圖1.1.5所示:
圖1.1.5加速度傳感器配置寄存器各位描述
該寄存器我們只關心AFS_SEL[1:0]這兩個位,用于設置加速度傳感器的滿量程范圍:0,±2g;1,±4g;2,±8g;3,±16g;我們一般設置為0,即±2g,因為加速度傳感器的ADC也是16位,所以得到靈敏度為:65536/4=16384LSB/g。
接下來,我看看FIFO使能寄存器,寄存器地址為:0X1C,各位描述如圖1.1.6所示:
圖1.1.6FIFO使能寄存器各位描述
該寄存器用于控制FIFO使能,在簡單讀取傳感器數據的時候,可以不用FIFO,設置對應位為0即可禁止FIFO,設置為1,則使能FIFO。注意加速度傳感器的3個軸,全由1個位(ACCEL_FIFO_EN)控制,只要該位置1,則加速度傳感器的三個通道都開啟FIFO了。
接下來,我們看陀螺儀采樣率分頻寄存器,寄存器地址為:0X19,各位描述如圖1.1.7所示:
圖1.1.7陀螺儀采樣率分頻寄存器各位描述
該寄存器用于設置MPU6050的陀螺儀采樣頻率,計算公式為:
采樣頻率=陀螺儀輸出頻率/(1+SMPLRT_DIV)
這里陀螺儀的輸出頻率,是1Khz或者8Khz,與數字低通濾波器(DLPF)的設置有關,當DLPF_CFG=0/7的時候,頻率為8Khz,其他情況是1Khz。而且DLPF濾波頻率一般設置為采樣率的一半。采樣率,我們假定設置為50Hz,那么SMPLRT_DIV=1000/50-1=19。