博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nordic NRF51822 从零开始系列(外部设备片—MPU6050DMP驱动的移植)
阅读量:5831 次
发布时间:2019-06-18

本文共 1618 字,大约阅读时间需要 5 分钟。

一、硬件准备

            (1)开发板和软件参看 
            (2)mpu6050模块

二、前置知识

            (1)    (最好记住,以后会有很大用处的)

三、移植所需要的文件

        

            (1)MPU6050的DMP文件(本例程使用的是正点原子例程中分离出来的)
                
            (2)
nrf_51822 官方例程库中的几个文件
                    1:mpu6050.h和mpu6050.c
                    2:twi_master.h 和 twi_sw_master.c (模拟IIC)或者使用(twi_hw_master.c)
                            两个选一既可以,官方已经封装好了接口了,所以没什么区别,本例程使用
模拟
                   3:nrf_delay.h 和 nrf_delay.h
                   
上面的文件都可以在例程包里的Source->ext-sensors 和Include->ext-sensors中找到
                   4: twi_master_config.h
IIC配置文件 可以在例程文件夹nrf51822文件下搜索既可以找到

四、移植过程梳理

      (1)明确要移植什么?

                        1、IIC通信接口
                        2、对inv_mpu6050添加部分函数方便使用

      (2)移植到哪里?

                    mpu6050官方的DMP驱动c文件中给出了以下内容
                
                明显的,我们移植驱动理论上
只要干一件事情就可以了:
将i2c_write和i2c_read两个函数重新定向就行了
                
                这是这两个函数的额声明。

      (3)移植过程

                   1:将上诉所所说的几个文件包含进工程并且添加对应的编译搜索路径
                   2:打开mpu6050.h 和mpu6050.c
                  在头文件中添加声明,在c文件中添加以下两个函数
 
/*函数功能:mpu6050 写寄存器//参数列表    /// devic_address:设备地址 register_address:寄存器地址,len:数据长度 data:数据头部指针*/    bool mpu6050_write(uint8_t device_address, uint8_t register_address, uint8_t len, uint8_t *data);/*函数功能:mpu6050 读寄存器//参数列表    /// devic_address:设备地址 register_address:寄存器地址,number_of_bytes:数据长度 data:数据buf指针*/bool mpu6050_read(uint8_t device_address, uint8_t register_address, uint8_t number_of_bytes, uint8_t *destination);
bool mpu6050_write(uint8_t device_address, uint8_t register_address, uint8_t len, uint8_t *data) //mpu6050 {    uint8_t w2_data[len+1];		for(int i=0;i

              3、在inv_mpu.c和inv_mpu_dmp_driver.c中包含进去,用这两个函数重定向i2cwrite和i2cread既完成了大体工作
              4、添加自定义的函数,本例程直接使用了正点原子添加的几个函数,添加地方在inv_mpu.c文件最下方,根据编译器提示错误的地方稍作修改既可以使用
              5、在main文件中添加inv_mpu.h,twi_master.h,并在主函数依次完成
                    iic初始化:
 twi_master_init();
                    mpu6050初始化:
 while(mpu_dmp_init());
使用while循环确保初始化成功
                   
调用:mpu_dmp_get_data()获取欧拉角,角速度,加速度(该函数为自己添加的函数那一部分)
             6、通过串口查看获得的数据
                    
            

转载于:https://www.cnblogs.com/CXianRen/p/10484981.html

你可能感兴趣的文章
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
6、Web Service-拦截器
查看>>
Flask 源码流程,上下文管理
查看>>
stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.
查看>>
ZAB与Paxos算法的联系与区别
查看>>