7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
SMPLRT_DIV[7:0] |
采樣頻率=陀螺儀輸出頻率/(1+SMPLRT_DIV)
(6) 配置寄存器 (地址:0x1A)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
- | - | EXT_SYNC_SET[2:0] | DLPF_CFG[2:0] |
Bit 5~Bit 3:該段內的值確定采樣的值將代替傳感器數(shù)據(jù)寄存器中的最低有效位
0:輸入禁用
1:TEMP_OUT_L寄存器第0位
2:GYRO_XOUT_L寄存器第0位
3:GYRO_YOUT_L寄存器第0位
4:GYRO_ZOUT_L寄存器第0位
5:ACCEL_XOUT_L寄存器第0位
6:ACCEL _YOUT_L寄存器第0位
7:ACCEL _ZOUT_L寄存器第0位
Bit 2~Bit 0:低通濾波器設置
值 | 加速度傳感器(Fs=1kHz) | 角速度傳感器 |
---|---|---|
帶寬(Hz) | 延遲(ms) | 帶寬(Hz) |
000 | 260 | 0 |
001 | 184 | 2.0 |
010 | 94 | 3.0 |
011 | 44 | 4.9 |
100 | 21 | 8.5 |
101 | 10 | 13.8 |
110 | 5 | 19.0 |
111 | 保留 | 保留 |
(7) 電源管理寄存器2 (地址:0x6C)
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
LP_WAKE_CTRL[1:0] | STBY_XA | STBY_YA | STBY_ZA | STBY_XG | STBY_YG | XTBY_ZG |
Bit 7~Bit 6:低功耗模式下的喚醒頻率
0:1.25Hz
1:5Hz
2:20Hz
3:40Hz
Bit 5:X軸加速度待機模式
0:禁用
1:啟用
Bit 4:Y軸加速度待機模式
0:禁用
1:啟用
Bit 3:Z軸加速度待機模式
0:禁用
1:啟用
Bit 2:X軸陀螺儀待機模式
0:禁用
1:啟用
Bit 1:Y軸陀螺儀待機模式
0:禁用
1:啟用
Bit 0:Z軸陀螺儀待機模式
0:禁用
1:啟用
19.3.2 源代碼
(1)創(chuàng)建mpu6050.h文件,輸入以下代碼。
/*********************************************************************************************************
MUP6050 驅 動 文 件
*********************************************************************************************************/
#ifndef _MPU6050_H_
#define _MPU6050_H_
#include "sys.h"
/*********************************************************************************************************
硬 件 端 口 定 義
*********************************************************************************************************/
#define MPU_IIC_SCL PBout( 10) //SCL
#define MPU_IIC_SDA PBout( 11 ) //SDA
#define MPU_READ_SDA PBin( 11 ) //輸入SDA
#define MPU_AD0_CTRL PAout( 15 ) //控制AD0電平,從而控制MPU地址
/*********************************************************************************************************
數(shù) 據(jù) 結 構 定 義
*********************************************************************************************************/
//如果AD0腳(9腳)接地,IIC地址為0X68(不包含最低位)
//如果接V3.3,則IIC地址為0X69(不包含最低位)
#define MPU_ADDR 0X68
#define MPU_ACCEL_OFFS_REG 0X06 //accel_offs寄存器,可讀取版本號,寄存器手冊未提到
#define MPU_PROD_ID_REG 0X0C //prod id寄存器,在寄存器手冊未提到
#define MPU_SELF_TESTX_REG 0X0D //自檢寄存器X
#define MPU_SELF_TESTY_REG 0X0E //自檢寄存器Y
#define MPU_SELF_TESTZ_REG 0X0F //自檢寄存器Z
#define MPU_SELF_TESTA_REG 0X10 //自檢寄存器A
#define MPU_SAMPLE_RATE_REG 0X19 //采樣頻率分頻器
#define MPU_CFG_REG 0X1A //配置寄存器
#define MPU_GYRO_CFG_REG 0X1B //陀螺儀配置寄存器
#define MPU_ACCEL_CFG_REG 0X1C //加速度計配置寄存器
#define MPU_MOTION_DET_REG 0X1F //運動檢測閥值設置寄存器
#define MPU_FIFO_EN_REG 0X23 //FIFO使能寄存器
#define MPU_I2CMST_CTRL_REG 0X24 //IIC主機控制寄存器
#define MPU_I2CSLV0_ADDR_REG 0X25 //IIC從機0器件地址寄存器
#define MPU_I2CSLV0_REG 0X26 //IIC從機0數(shù)據(jù)地址寄存器
#define MPU_I2CSLV0_CTRL_REG 0X27 //IIC從機0控制寄存器
#define MPU_I2CSLV1_ADDR_REG 0X28 //IIC從機1器件地址寄存器
#define MPU_I2CSLV1_REG 0X29 //IIC從機1數(shù)據(jù)地址寄存器
#define MPU_I2CSLV1_CTRL_REG 0X2A //IIC從機1控制寄存器
#define MPU_I2CSLV2_ADDR_REG 0X2B //IIC從機2器件地址寄存器
#define MPU_I2CSLV2_REG 0X2C //IIC從機2數(shù)據(jù)地址寄存器
#define MPU_I2CSLV2_CTRL_REG 0X2D //IIC從機2控制寄存器
#define MPU_I2CSLV3_ADDR_REG 0X2E //IIC從機3器件地址寄存器
#define MPU_I2CSLV3_REG 0X2F //IIC從機3數(shù)據(jù)地址寄存器
#define MPU_I2CSLV3_CTRL_REG 0X30 //IIC從機3控制寄存器
#define MPU_I2CSLV4_ADDR_REG 0X31 //IIC從機4器件地址寄存器
#define MPU_I2CSLV4_REG 0X32 //IIC從機4數(shù)據(jù)地址寄存器
#define MPU_I2CSLV4_DO_REG 0X33 //IIC從機4寫數(shù)據(jù)寄存器
#define MPU_I2CSLV4_CTRL_REG 0X34 //IIC從機4控制寄存器
#define MPU_I2CSLV4_DI_REG 0X35 //IIC從機4讀數(shù)據(jù)寄存器
#define MPU_I2CMST_STA_REG 0X36 //IIC主機狀態(tài)寄存器
#define MPU_INTBP_CFG_REG 0X37 //中斷/旁路設置寄存器
#define MPU_INT_EN_REG 0X38 //中斷使能寄存器
#define MPU_INT_STA_REG 0X3A //中斷狀態(tài)寄存器
#define MPU_ACCEL_XOUTH_REG 0X3B //加速度值,X軸高8位寄存器
#define MPU_ACCEL_XOUTL_REG 0X3C //加速度值,X軸低8位寄存器
#define MPU_ACCEL_YOUTH_REG 0X3D //加速度值,Y軸高8位寄存器
#define MPU_ACCEL_YOUTL_REG 0X3E //加速度值,Y軸低8位寄存器
#define MPU_ACCEL_ZOUTH_REG 0X3F //加速度值,Z軸高8位寄存器
#define MPU_ACCEL_ZOUTL_REG 0X40 //加速度值,Z軸低8位寄存器
#define MPU_TEMP_OUTH_REG 0X41 //溫度值高八位寄存器
#define MPU_TEMP_OUTL_REG 0X42 //溫度值低8位寄存器
#define MPU_GYRO_XOUTH_REG 0X43 //陀螺儀值,X軸高8位寄存器
#define MPU_GYRO_XOUTL_REG 0X44 //陀螺儀值,X軸低8位寄存器
#define MPU_GYRO_YOUTH_REG 0X45 //陀螺儀值,Y軸高8位寄存器
#define MPU_GYRO_YOUTL_REG 0X46 //陀螺儀值,Y軸低8位寄存器
#define MPU_GYRO_ZOUTH_REG 0X47 //陀螺儀值,Z軸高8位寄存器
#define MPU_GYRO_ZOUTL_REG 0X48 //陀螺儀值,Z軸低8位寄存器
#define MPU_I2CSLV0_DO_REG 0X63 //IIC從機0數(shù)據(jù)寄存器
#define MPU_I2CSLV1_DO_REG 0X64 //IIC從機1數(shù)據(jù)寄存器
#define MPU_I2CSLV2_DO_REG 0X65 //IIC從機2數(shù)據(jù)寄存器
#define MPU_I2CSLV3_DO_REG 0X66 //IIC從機3數(shù)據(jù)寄存器
#define MPU_I2CMST_DELAY_REG 0X67 //IIC主機延時管理寄存器
#define MPU_SIGPATH_RST_REG 0X68 //信號通道復位寄存器
#define MPU_MDETECT_CTRL_REG 0X69 //運動檢測控制寄存器
#define MPU_USER_CTRL_REG 0X6A //用戶控制寄存器
#define MPU_PWR_MGMT1_REG 0X6B //電源管理寄存器1
#define MPU_PWR_MGMT2_REG 0X6C //電源管理寄存器2
#define MPU_FIFO_CNTH_REG 0X72 //FIFO計數(shù)寄存器高八位
#define MPU_FIFO_CNTL_REG 0X73 //FIFO計數(shù)寄存器低八位
#define MPU_FIFO_RW_REG 0X74 //FIFO讀寫寄存器
#define MPU_DEVICE_ID_REG 0X75 //器件ID寄存器
/*********************************************************************************************************
函 數(shù) 列 表
*********************************************************************************************************/
void MPU_IIC_Init( void ) ; //初始化IIC
u8 MPU_Init( void ) ; //初始化MPU6050
u8 MPU_Read_Len( u8 addr, u8 reg, u8 len, u8 *buf ) ; //IIC連續(xù)讀
u8 MPU_Write_Len( u8 addr, u8 reg, u8 len, u8 *buf ) ; //IIC連續(xù)寫
short MPU_Get_Temperature( void ) ; //獲取溫度
u8 MPU_Get_Gyroscope( short *gx, short *gy, short *gz ) ; //獲取陀螺儀值
u8 MPU_Get_Accelerometer( short *ax, short *ay, short *az ) ; //獲取加速度值
#endif
-
傳感器
+關注
關注
2553文章
51390瀏覽量
756571 -
處理器
+關注
關注
68文章
19407瀏覽量
231181 -
MPU6050
+關注
關注
39文章
307瀏覽量
71662
發(fā)布評論請先 登錄
相關推薦
評論