博世传感器BMM150
博世磁力计BMM150数据读取读取步骤博世磁力计BMM150数据读取
最近一段时间一直在读取各种传感器数据,发现有些传感器使用较多网上也有很多参考例程,例如mpu6050,hmc5983,ms5611。但是大部分你想用的传感器是没有的,所以只能自己造轮子,最近自己就写了一些,都是根据器件的英文datasheet来写的,所以掌握方法很重要。
这里还出现了了个插曲,记得我当时在淘宝上买了个模块,但买家并没有给我任何参考资料,我就很好奇了,没有测试代码怎么保证你这个模块是可以用的呢?最后果不其然买的第一个搞了几天都没数据,然后又重新买了个一烧程序,马上可以用。所以,我呵呵呵呵呵呵。。。。。
读取步骤
一般传感器的数据读取包括三个大的部分,第一部分是初始化传感器,这里一般是配置寄存器参数(当然一般在拿到一个传感器的时候都会读取一下ID判断传感器是否可用);第二部分一般是读取传感器里的原始数据;第三部分一般是对传感器数据进行一些处理,比如说将无符号整数转化为整数型,还有些要除以个比例因子来得到传感器的输出数据。下面就正对BMM150来做一些介绍
初始化
Suspend mode是传感器的初始模式,一上电就是,没什么好讲的,Sleep mode可以看到在这个模式下可以读到传感器的ID,但是需要将0X4B这个寄存器的最低位置1.
在STM32实现就是如下:
结果如下
可以看到结果和datasheet上的吻合
读取数据
从datasheet里可以看到要读取传感器数据需要将模式切换到normal mode模式所以首先需要在初始化里完成模式切换
以X轴为例,这里只需读取对应的寄存器值即可
可以看到X轴的数据在0x42和0x43寄存器里,我们把它读出来取相应的位数即可。
我们用串口输出下可以看到数据
这里我们就顺利拿到了传感器的原始数据,当然了一般来说拿到传感器的原始数据只是完成了工作的第一步,后续还是有很多的工作,比如说一些校准,软磁和硬磁的干扰补偿。
** 第一次写博客主要原因是因为淘宝很多厂家只抄些硬件模块原理图而不做配套的软件demo,为了方便大家调试避免重复造轮子,当然也为了自己写一些记录文档 ,后续会坚持多写一些算法相关的如传感器校准,卡尔曼滤波**
转载请注明出处/zhuhui4893/article/details/85375716
如果觉得《博世传感器BMM150数据读取》对你有帮助,请点赞、收藏,并留下你的观点哦!