mpu6050学习
一、MPU6050初始化
- /**************************实现函数********************************************
- *函数原型: void MPU6050_initialize(void)
- *功 能: 初始化 MPU6050 以进入可用状态。
- *******************************************************************************/
- void MPU6050_initialize(void)
- {
- IICwriteByte(devAddr, MPU6050_RA_PWR_MGMT_1, 0x80); //PWR_MGMT_1 -- DEVICE_RESET 1
- delay_ms(50);
- IICwriteByte(devAddr, MPU6050_RA_SMPLRT_DIV, 0x00); //SMPLRT_DIV -- SMPLRT_DIV = 0 Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
- IICwriteByte(devAddr, MPU6050_RA_PWR_MGMT_1, 0x03); //PWR_MGMT_1 -- SLEEP 0; CYCLE 0; TEMP_DIS 0; CLKSEL 3 (PLL with Z Gyro reference)
- IICwriteByte(devAddr, MPU6050_RA_INT_PIN_CFG, 0 << 7 | 0 << 6 | 0 << 5 | 0 << 4 | 0 << 3 | 0 << 2 | 1 << 1 | 0 << 0); // INT_PIN_CFG -- INT_LEVEL_HIGH, INT_OPEN_DIS, LATCH_INT_DIS, INT_RD_CLEAR_DIS, FSYNC_INT_LEVEL_HIGH, FSYNC_INT_DIS, I2C_BYPASS_EN, CLOCK_DIS
- IICwriteByte(devAddr, MPU6050_RA_CONFIG, MPU6050_DLPF_BW_42); //CONFIG -- EXT_SYNC_SET 0 (disable input pin for data sync) ; default DLPF_CFG = 0 => ACC bandwidth = 260Hz GYRO bandwidth = 256Hz)
- MPU6050_setFullScaleGyroRange(MPU6050_GYRO_FS_2000);
- // Accel scale 8g (4096 LSB/g)
- IICwriteByte(devAddr, MPU6050_RA_ACCEL_CONFIG, 2 << 3);
- }
初始化过程
1. 对寄存器register 107 power management 1的bit7置1复位
2. 对寄存器register 25 Sample Rate Divider,设置SMPLRT_DIV为0。(最大)
3. 对寄存器register 107 power management 1 以z轴重力计为参考系。
4. 对寄存器register 55 INT PIN/BYPASS ENABLE CONFIGURATION设置为00000010:INT脚逻辑电平为高电平,推挽输出,产生50us脉冲,读取INT_STATUS后中断清除,关闭FSYNC中断,I2C_BYPASSS_EN为1和I2C_MST_EN为0时,MCU可以直接访问I2C总线。
5. 对寄存器register 27 陀螺仪设置量程为±2000°/s
6. 对寄存器register 28 加速度计量程为±8g
2017年6月4日:为了移植DMP官方的5.1库,花了好多时间。这里对IIC的Slave地址进行总结。
网上有各种各样的地址版本,如0x68,0xD0等等。明明地址不一样,为什么他们都能用呢。

就是这里:第一个地址是b1101000,而第二个地址是b1101001。注意这是7位的二进制数,我们一般用第一个,也就是b1101000
相关的IIC信息:

所以地址需要在后面添加一位读写位,所以正确的地址应该是b1101 0000和b1101 0001。
而网上的0xD0就是b1101 0000,但是0x68却是b01101000。
所以0x68其实是7位的地址,这也就是为什么有的IIC在发送地址的时候是左移1位的。
而使用D0的地址时却是直接使用的。这就是区别。。。。。。。艹
mpu6050学习的更多相关文章
- 基于I2C总线的MPU6050学习笔记
MPU6050学习笔记 1. 简述 一直想自己做个四轴飞行器,却无从下手,终于狠下决心,拿出尘封已久的MPU6050模块,开始摸索着数据手册分析,一步一步地实现了MPU6050模块的功能,从MPU60 ...
- MPU6050学习笔记(电源管理器1、2)
Technorati Tags: 嵌入式开发.模块开发 寄存器107号:电源管理器1 PWR_MGMT_1: Description: This register allows the user to ...
- 【mpu6050】学习笔记——基础知识点记录
如图: 假设为三维空间有一个向量R 满足关系: 即为加速度计的x轴,y轴,z轴. 对于MPU6050 其求出的数值为: 分母为灵敏度, ADCRx为读出值. 我关心的是Axr,Ayr,Azr即 ...
- 对MPU6050坐标矩阵修改的学习
MPU6050是根据三轴陀螺仪和三轴加速度计数据通过DMP运算的出欧拉角.系统默认为水平放置, 但是实际使用过程中并不都是水平放置,有些特殊的场合,要求芯片竖直放置,这时候就不得 不修改MPU6050 ...
- 重力加速度陀螺仪传感器MPU-6050(一)
MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化 为可输出的数字量.为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±50 ...
- 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
第44章 MPU6050传感器—姿态检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- 学习笔记-CCS-MSP430F5529[快速入门篇二]
由于2021的全国电赛延期了,从今天开始打算好好整理一下使用CCS编程的经验,本篇笔记会好好整理一下我备赛期间用CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输入捕获,PWM波输出,UAR ...
- stm32知识学习的先后顺序
这里大概的罗列了一些学习STM32的内容,以及学习顺序.如果是新手的话,建议边看中文手册和学习视频;如果是已经入门的,个人建议自己做一个项目,不论项目大小,当然里面会涉及到自己已经学习过的,或者是自己 ...
- 单片机入门stm32知识学习的先后顺序
这里大概的罗列了一些学习STM32的内容,以及学习顺序.如果是新手的话,建议边看中文手册和学习视频;如果是已经入门的,个人建议自己做一个项目,不论项目大小,当然里面会涉及到自己已经学习过的,或者是自己 ...
随机推荐
- onclick 调用js选择器
- Kafka数据如何同步至MaxCompute之实践讲解
摘要:本次分享主要介绍Kafka产品的原理和使用方式,以及同步数据到MaxCompute的参数介绍.独享集成资源组与自定义资源组的使用背景和配置方式.Kafka同步数据到MaxCompute的开发到生 ...
- php rand()函数 语法
php rand()函数 语法 rand()函数怎么用? php rand()函数表示从参数范围内得到一个随机数,语法是rand(X,Y),从两个参数范围内得到一个随机数,随机数大于等于X或者小于等于 ...
- LINUX为什么要进行内核移植 内核移植的作用
LINUX为什么要进行内核移植 内核移植的作用,不移植能用么? LZ的问题应该是为什么要重新编译内核吧.既然你已经可以跑了,证明你现在用的内核已经移植到你用的硬件上,自然你也不需要做什么移植.通常 ...
- 移动H5优化指南
转载于http://isux.tencent.com/h5-performance.html 移动H5前端性能优化指南 概述 秒完成或使用Loading4. 基于联通3G网络平均338KB/s(2.7 ...
- centOS不显示ipv4地址的解决办法
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...
- 私有IP地址
私有IP地址: 在ABC三类网络中,如下三段网络地址为私有IP地址,如何人都可以自行在自己的局域网中使用这些IP地址. A类私有:10.0.0.1----10.255.255.254 B类私有:172 ...
- 怎么学习PHP
学习PHP有半个月了.每天都要打代码and写笔记.学过C和Java,在学习PHP的过程中比较顺利吧 (^-^) 代码打得越多,运行得越多,慢慢得会对程序理解得越深.下面就讲讲我学习PHP的心得.PHP ...
- 什么是中间件?中间件和java应用关系是什么
中间件,比如websphere 是一种独立的系统软件,你的java应用要通过它来管理,比如数据库连接,消息通信等,中间件位于操作系统之上.简单滴说,你不可能直接把你的java应用部署在操作系统上,得由 ...
- Npm使用遇到的问题解决
0.运行项目: 1)git clone 项目 2)项目根目录执行npm install安装依赖 3)执行npm run dev启动 1.安装cnpm: npm install -g cnpm --re ...