BMI088是一款高性能惯性测量单元,是很多商业飞控使用的传感器。

最近在自己的无人机上也用到了它,要配置它需要用到官方API,如果是用arduino的话直接下载第三方库就行了,如果是其它设备,没有第三方库,就只能苦逼的去看官方库了。

官方库还挺长挺复杂的,这里对官方库进行一个简要的解析。

首先这里是官方库链接:https://github.com/boschsensortec/BMI08x-Sensor-API

这里面有很多文件,其中基础的配置文件有三个:bmi08a.c bmi08xa.c bmi08g.c
包含的头文件有:bmi08.h bmi08x.h bmi08_defs.h

这三个头文件互相链接,最终用户需要包含的头文件只有bmi08x.h

除了这些文件之外,还有很多高级配置文件,不过只要懂了基本配置文件,高级配置文件也很简单易懂了。

官方库之所以这么复杂,是因为保留了SPI, I2C, BMI085 和BMI088四个接口,并且几乎在每一步配置后都要检查是否成功,所以代码的可读性不太高。

最重要的是bmi08_defs.h文件的最下面,定义了一个bmi08_dev的结构体,如下:

这个结构体包含了几乎所有配置所需的东西,官方API就是把这个结构体不断传递到各个配置函数中去,然后再根据结构体的数据去读写寄存器。

这个结构体有一个需要注意的东西就是其中的三个函数指针:

这三个函数就是最基本的寄存器读,写,和一个挂起延时函数。

也就是说,对于不同的设备,需要用户自行定义这三个函数!

在example/bmi08x/common中,官方给出了这三个函数的实现,但是是给博世自己的开发板用的,其中使用了coines平台,显然无法适配其它设备,不过我们通过可以参考或修改common文件来适配自己的设备。

另外我们可以参考example/bmi08x/read_sensor_data文件,来查看如何具体进行配置。但里面有一个究极大坑。

在init_bmi08(void)这个函数中,有这样一步操作:

我一直卡在这一步好几天,最后才知道这一步去配置的寄存器根本不存在!

所以在使用时忽略或者删除这一步就行了!

最后read_sensor_data文件中使用的是中断读取,实际上也可以直接读取,bmi088读取速率有好几档,最高好像是1600HZ。

看代码看得我脑袋都大了一圈,深刻明白了代码阅读器的重要性。

博世BMI088官方代码库解析相关推荐

  1. react相关代码库以及框架的源码解析

    持续更新中react相关库源码浅析, react ts3 项目 ???对react相关代码库以及框架的源码进行了一定的分析 ?react16.6 View contents 源码实例分析:可见runl ...

  2. REVISITING DYNAMIC CONVOLUTION VIA MATRIXDECOMPOSITION 官方代码解析心得

    概要:这篇文章是动态卷积的改进版,最近研究了下官方代码. 下文所述,如有错误,欢迎指正. 代码并不长,但是想看懂也不是那么容易.论文里讲的是动态卷积的改进,即 结构图示如下: 初看代码,大概率会错误的 ...

  3. C/C++使用Quirc库解析二维码(QRcode)

    C/C++使用Quirc库解析二维码 Quirc介绍 Quirc库使用 遇到的坑 整理的知识点 总结 Quirc介绍 Quirc是一个基于C/C++的一个二维码库,其在码云上的官网 https://g ...

  4. 【三维视觉】【深度学习】ubuntu18.04下PointNet官方代码Pytorch实现

    [三维视觉][深度学习]ubuntu18.04下PointNet官方代码Pytorch实现 提示:最近开始在三维深度学习方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法. 文章目录 [ ...

  5. python代码库-Python常用库大全

    Python常用库大全,看看有没有你需要的. 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具 ...

  6. python代码库-哪些 Python 库让你相见恨晚?

    Awesome Python 中文版网站?jobbole.github.io Awesome Python中文版来啦! 本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载! 英文 ...

  7. Android 天气预报【解析XML / Json文件(2种方式:手动解析、Gson库解析)】

    源码 [工程文件]:https://gitee.com/lwx001/Weather XML : activity_main.xml : <RelativeLayout xmlns:androi ...

  8. Qt Creator使用Clang代码模型解析C ++文件

    Qt Creator使用Clang代码模型解析C ++文件 使用Clang代码模型解析C ++文件 关于Clang代码模型 配置C语代码模型 lang检查 在项目级别指定Clang代码模型设置 使用编 ...

  9. Delphi语言最好的JSON代码库 mORMot学习笔记1

    mORMot没有控件安装,直接添加到lib路径, 工程中直接添加syncommons,syndb等到uses里 -------------------------------------------- ...

最新文章

  1. Oracle 11g r2 安装
  2. android clipdrawable 小例子
  3. 将json转换成struts参数
  4. 03_4_this关键字
  5. CVPR 2020最新热点:物体位姿估计
  6. php 多进程 消息队列,[PHP] 多进程通信-消息队列使用
  7. SDL学习——画图、点阵显示
  8. dz php表单发送邮件,php 发送邮件
  9. WordPress Exploit Scanner插件安全绕过漏洞
  10. 在线教学、视频会议 Webus Fox(1)文本、语音、视频聊天及电子白板基本用法...
  11. 一个十分简单有效的改善origin下载速度慢的方法
  12. Android自定义控件学习
  13. 桑拿锁技术升级:桑拿手牌复制休矣!
  14. bmp批量转换jpg的方法
  15. Java 获取屏幕尺寸
  16. 未来智安XDR与中科方德高可信服务器操作系统完成产品兼容性互认证
  17. 落地语音交互,出门问问从Google Glass开始
  18. qtCharts----柱状图、折线图、饼图、曲线图
  19. PyQt5制作简单的 数据标注 工具(分类用)
  20. bash命令补全工具bash-completion

热门文章

  1. 房地产税预期影响房价走势:一线城市继续上行
  2. C语言与JAVA内存管理_深入理解C语言内存管理
  3. 齐悟机器人王一_专注智能对话 王一校友当选“2020年度全美十大华人杰出青年”...
  4. 老字号“斗汽”登顶热搜,国产汽水打完“情怀牌”还剩什么?
  5. 线程的等待和唤醒机制
  6. 预装绿坝,Linux何以为生?
  7. 测试工程师提高质量的OKR该如何写?
  8. IP地址,子网掩码计算子网地址,广播地址,子网划分。
  9. V神合著的《Decentralized Society: Finding Web3’s Soul》论文中有哪些有价值的信息需要我们注意的
  10. 尼采:快乐的知识(下)