BNO55移植到STM32平台及其他单片机平台


title: STM32移植BNO055(各种单片机都适用)
date: 2020-07-26
tags:
categories: STM32学习记录


背景

听说BNO055很牛逼,买一个来摸一摸。集成了磁力计,不需要自己再去配置外围电路,并且9轴陀螺仪能比6轴获取更多的信息,数据的精度也会好得多,最最重要的,这个模块除了有详细的官方文档,博世还写了快速使用手册,这极大的方便了用户的使用,缩短了产品的设计周期,无疑是它在消费电子领域兴起的重要原因之一,总之50块的价格绝对不吃亏。

准备

首先BNO055肯定要有一片,虽然相对于传统的MPU6XXX要贵上不少,但是上面的特性我也说过了,用过的人都说好。

另外,STM32开发板,仿真器,串口模块这些就不多说了,并且我是默认你有基本的STM32开发能力的,

前导认识

这里我使用HAL库+CubeMX编程,标准库或者寄存器编程的原理都一样,甚至使用德州仪器和NXP的单片机,移植方法都是类似的,走一个流程就能正常调用官方的API进行快速的开发和应用。

这里主要参考两个BNO055的官方文档,一个是Data Sheet数据手册,另一个是User Guide用户快速上手,相当于极简版的数据手册,最重要的是附加了手把手教你用API的步骤,可谓非常贴心。

下面粘贴官方的介绍,以及这款传感器支持的模式:

BNO055 是一款封装系统(SiP)芯片,包括一个 3 轴 14 位加速计,一个 3 轴 16 位陀螺仪,一个 3 轴磁 力计,和一个运行 BSX3.0 FusionLib 软件的 32 位 Cortex M0 +微控制器。 除了可以访问单个传感器信号(如加速度,旋转和磁场强度)之外,传感器还总共提供了五种不同的传感 器融合模式。具体模式下表:

在这里插入图片描述

非融合就不多说了,都看得懂,由于这款芯片中集成了一个CortexM0+内核,这赋予了它低功耗的情况下还能快速处理融合并输出融合结果的能力,所以我们通常使用的都是它自带的融合模式,减轻了外部处理单元的处理压力,使它的应用领域更加广泛。

融合模式:

  • IMU 或惯性测量单元是加速度计和陀螺仪的融合

  • COMPASS 是加速度计和磁力计的融合,也被称为倾斜补偿指南针

  • M4G(陀螺仪磁体)是加速度计和磁力计的融合体,但输出数据类似于 IMU 模式,因此陀螺仪的限制在 这种模式下得到了补偿。

  • NDOF_FMC_OFF 是所有三种传感器(加速度计,陀螺仪和磁力计)的融合,从而提供了九自由度 (NDOF)。在此模式下,“FMC(快速磁性校准)”功能被禁用,因此传感器需要类似于“图 8 模式”的移动来 校准磁力计。

  • NDOF 也是所有三种传感器的融合,但启用了“FMC”功能。通过 启用此功能,快速移动(即使不完整的“数字 8 模式”)将完全校准磁力计。

上图中也可以看到这些融合模式会输出什么样的数据供我们使用。具体的数据融合方式可以参考数据手册,里面有很详细的说明。这里我只是演示一遍具体的应用,关于应用主要的参考是快速应用手册中的一遍步骤。

Go

首先当然是创建或者自己准备一份可以正常运行的单片机源代码,需要注意的是,这个程序应该至少可以运行I2C模块,不管是软件模拟的还是硬件外设,例如我的代码就是这样,当然不可能放全部,这是该有的部分:

  #include "main.h"
  #include "i2c.h"
  #include "usart.h"
  #include "gpio.h"

  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_USART1_UART_Init();

下一步是下载官方的API源文件,地址:https://github.com/BoschSensortec/BNO055_driver,其实主要的东西就是两个头文件,那个C文件是演示如何使用的,我们用不到。下载后复制这两个头文件到自己的工程中,直接把官方文件夹copy到你的工程文件夹,便于管理就像下面这样:

在这里插入图片描述

然后我们就按照官方的指导走一遍:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值