分享到:
最近接触 MPU6050 ,下面对 6050 初始化配置做一点总结,如有错误还望不吝赐教。
检验 IIC 底层:
在初始化 MPU6050 前,先确定 单片机 与 MPU6050 通信是否正常, 根据手册 MPU6050 采用
的是 400kbit/s 的 IIC 。
验证 IIC 底层的方法:
读取寄存器 117(WHO_AM_I )的值,也就是读取 MPU6050 的器件地址,默认 0x68。若能
够读到 0x68,说明你的 IIC 地层没什么问题。当然了,读取 MPU6050 地址时,可以不用对
MPU6050 进行任何配置,只要给器件供电就行了。此时, MPU6050 上电默认时钟是内部
8MHz 振荡器。
MPU6050 初始化配置:
借鉴网上资料,有关 MPU6050 的基本配置的几个寄存器为:
寄存器 25 – Sample Rate Divider (SMPRT_DIV ):配置陀螺仪输出分频
寄存器 26 – Configuration (CONFIG ):配置数字低通滤波器
寄存器 27 – Gyroscope Configuration (GYRO_CONFIG ):配置陀螺仪满量程
寄存器 28 – Accelerometer Configuration (ACCEL_CONFIG ):加速度满量程
寄存器 107 – Power Management 1 (PWR_MGMT_1 ):配置模式、时钟
注意:
第一步:解除休眠,进入工作模式,一定要延时等待上百毫秒,否则初始化不成功。 // 另一
个程序并没有设置延时
第二步:配置好 MPU6050 时钟源,一般选择陀螺仪一个方向上的时钟源,以保证陀螺仪采
集数据的精度。
第三步:选择加速度满量程、陀螺仪满量程,配置数字低通滤波器、陀螺仪输出分频。
简单配置完这几个寄存器,就可以读取 MPU6050 数据了,高级配置还请参考 MPU6050 的
相关手册。
举例如下:
i2cWrite(devAddr,MPU6050_RA_PWR_MGMT_1,0x00); // 解除休眠
delay_ms(200); /* 解除休眠后的延时要上百毫秒,否则初始化不成功 */
// 另一个程序并没有设置延时
i2cWrite(devAddr,MPU6050_RA_PWR_MGMT_1,0x03); // 选时钟
i2cWrite(devAddr,MPU6050_RA_CONFIG,0x03); // 加速度 44hz 滤波,
陀螺仪 42hz 滤波
i2cWrite(devAddr,MPU6050_RA_SMPLRT_DIV,0x00); // 陀螺仪采样率, 1khz
效果不错
i2cWrite(devAddr,MPU6050_RA_GYRO_CONFIG,0x18); // 陀螺仪最大量程
+-2000 度每秒
i2cWrite(devAddr,MPU6050_RA_ACCEL_CONFIG,0x08); // 加速度度最大量程
+-4G
(0 )
(0 )
回复
举报
- 普通用户_df233dd87146457
-
0 发帖2 回复104 积分
- 私信他 +关注
- 普通用户_df233dd87146457
-
0 发帖2 回复104 积分
- 私信他 +关注
- a9de0a3f846c493
-
0 发帖98 回复296 积分
- 私信他 +关注
- 普通用户_a2610dfa0ce74a7
-
0 发帖4 回复108 积分
- 私信他 +关注
发表回复
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖