MPU9250调试
MPU9250 芯片概述
MPU9250芯片是一个9轴姿态传感芯片,其中包含了3轴加速度传感器、3轴角速度传感器以及三轴磁力计。
其本质上是MPU6050芯片+AK8963。
可以获取传感芯片的加速度、角速度、以及磁力值。
角速度可以知芯片的转动速度,加速度可以知道芯片运动的距离、速度情况,而磁力计可以知道物芯片的运动方向。
另外MPU9250芯片内置DMP姿态融合器,可以在不涉及算法的情况下,直接读取出描述物体状态的四元数,从而得出物体的三维角度--航向角、翻滚角、俯仰角。
驱动程序的设计
由于MPU9250芯片使用的是I2C接口,所以在这里,我首先需要I2C的驱动。
在我的驱动中,I2C使用GPIO口模拟的,因为这样在以后移植时更加方便。
在完成IOI2C的驱动之后,就是对MPU9250的寄存器进行操作,来成功获取传感数据。
MPU9250的寄存器操作
操作MPU9250寄存器并且开启DMP模式,获取三维角度,其步骤如下:
- 复位,配置PWR_MGMT_1 0x80,延时一段时间
- 配置PWR_MGMT_1(一般为00,表示使用内部晶振20Mhz)
- 设置采样频率
- 设置量程(角速度、加速度量程)
- 外部中断打开,并且配置成相应的工作方式
- 开启DMP,以及FIFO
其中DMP的开启需要密码,而且具体的操作方法及寄存器在数据手册上都无法找到,是本人在网站经过查找融合了多人的驱动调试出来的。
代码调用
本人将调通之后的代码整理之后,只需调用几个API就可以实现参数的获取了。
主要分为两步:
- 初始化
IIC_Init();//模拟I2C驱动的初始化,一定要先初始化I2C接口才能操作MPU9250芯片
Init_MPU9250_With_DMP();//初始化MPU9250,配置并且开启DMP,设置中断方式为加速度方式
- 函数调用
while(1)
{
fifo_count = MPU9250_getFIFOCount();//读取FIFO计数
if(fifo_count >= 0x0200)//如果FIFO值>0x0200,此时DMP的结果错误,直接复位FIFO
{
MPU9250_resetFIFO();
}
else
{
if(fifo_count >= 0x2a)//如果FIFO值 > 0x2a,此时DMP转换完成并且数值正常
{
readdmp(); //首先要读取DMP FIFO,读取之后才能进行计算姿态的操作
MPU9250_resetFIFO();
getyawpitchroll();//计算并且获取yaw、pitch、roll,结果保存在yprf[3]数组中
}
}
}
NOTE:
在判断DMP是否完成时,应当从FIFO的计数中去判断,当计数大于等于42,说明DMP转换完成,也可以采用中断的方式来作为标志。
本例程中使用的I2C为GPIO模拟的I2C,主要是移植方便,但是在将此驱动移植到不同平台时需要注意寄存器以及引脚的定义。
注意芯片上电之后需要先复位,即设置PWR_MGMT_1为0x80,过一段时间之后再设置为0x00,否则有时芯片会工作异常
具体的程序在我的代码库中,如果大家发现其中的问题,欢迎E-mail给我。
代码链接如下:
MPU9250-MPU6050驱动
MPU9250调试的更多相关文章
- MPU9250/MPU6050与运动数据处理与卡尔曼滤波(1)
第一篇--概述和MPU6050及其自带的DMP输出四元数 概述 InvenSense(国内一般译为应美盛)公司产的数字运动传感器在国内非常流行,我用过它的两款,9250和6050.出于被国产芯片惯坏的 ...
- C# Web应用调试开启外部访问
在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...
- NodeJs之调试
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...
- 微信公众号开发之VS远程调试
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...
- 写出易调试的SQL(修订版)
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...
- tomcat开发远程调试端口以及利用eclipse进行远程调试
一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...
- Hawk 4.7 单步调试
单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上 ...
- Visual Studio 2012远程调试中遇到的问题
有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...
- iOS逆向工程之Hopper+LLDB调试第三方App
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...
随机推荐
- VC2010 调用 Webservice
开发环境:VC2010,gsoap_2.8.23 http://blog.csdn.net/zhaiwenjuan/article/details/6590941 使用soapcpp2的时候要加参数- ...
- Android显示等宽图片的问题
安卓开发常遇到一个问题,就是在listView里面,在不知道图片宽高的前提下,另图片布满屏幕(图片宽度等于屏幕宽度,高度自适应).在listView中,只是设置scaleType,imageView. ...
- Docker实践(2)—虚拟网络
1 docker(container)的虚拟网络 docker的虚拟网络结构: host创建一个虚拟bridge,每个container对应一个虚拟网络设备(TAP设备),与bridge一起构成一个虚 ...
- 支付宝Wap支付你了解多少?
上几篇文章详细介绍了支付宝APP支付.微信APP支付 此文章来介绍下支付宝Wap支付(也叫作手机网站支付) 目录 1.创建应用并获取APPID 2.配置应用环境 3.配置沙箱环境 4.服务端实现(Ma ...
- Mysql自动备份工具1.0(2013年11月15日更新)
Mysql自动备份工具1.0 下载地址 2013-11-15 1.解决日历控件在Windows7/8/8.1环境下遮挡按钮问题:2.解决按月备份当月没有该日期问题: 2013-11-13 1.Mysq ...
- Drupal7_2:安装drupal
Drupal7_2:安装drupal 分类: Drupal72012-10-30 01:06 1074人阅读 评论(0) 收藏 举报 假设你已经搭建好了所需的必备环境,接下来就参照以下几步,快速安装一 ...
- PHP ERROR : Call to undefined function curl_init()
在使用PHP 的Curl方法时出现了以下错误 可能的解决办法: 在php.ini 中确保 启用了php_curl.dll组件 确保PHP版本 (PHP 4 >= 4.0.2, PHP 5, PH ...
- java.lang.OutOfMemoryError: PermGen space PermGen space & java.lang.OutOfMemoryError: Java heap space Heap siz
java.lang.OutOfMemoryError: PermGen space PermGen space 由-XX:PermSize -XX:MaxPermSize 引起 java.lang. ...
- HTTP 错误 500.21 - Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法
IIS在发布网站后找不到首页,提示以上错误,原因是在“应用程序池”中,把对应的网站的“托管管道模式”设置为“集成”即可.
- eclipse无线连接android真机能进调试
将手机与电脑连接到同一个网段, 在手机上安装wifi adb程序,并打开,会得到一个IP及端口,比如是 192.168.1.126:5555 进入android sdk目录sdk\platform-t ...