[传感器大派送]+ 基于STM32的BM1422地磁传感器测试
前言 感谢ROHM社区提供的传感器套件,BM1422AGMV是一款三轴地磁传感器模块。
测试目标 1、依托于STM32开发板测试BM1422AGMV模块,通过串口打印出三轴地磁数据。 2、彻底的了解该模块的性能
硬件组成与连接 1、STM32F723E-DISCO开发板 2、ROHM的传感器底板Sensor Shield 3、BM1422AGMV气压传感器 由于STM32F723E-DISCO开发板有arduino接口,插上ROHM的传感器底板刚好合适,不需要额外的接线,十分方便,最后将我们的BM1422AGMV传感器模块插入传感器底板的I2C_3接口即可。 注意需要修改传感器供电,我这里选择的是3V,安装完成如下图:
传感器认识 了解任何一款传感器,最好的方式就是熟读它的数据手册,通过读本传感器芯片的数据手册,了解到该传感器的性能如下:
1、本传感器的IIC设备7位地址是:0001111,即0x1C;标准IIC时序,最大通讯速度为400KHZ. 2、芯片的地磁数据分为12bit/14bit,可以连续转换也可以单次转换,我使用的是14bit的连续使用方式。 按照上图的顺序,初始化代码如下: 读取三轴地磁数据:
需要说明的是,本函数转化的磁场数值单位为uT,将地磁数据读出来除24,在官方的数据手册中,并没有说明,我是查看了官方的arduino代码才得到除24的。 同样,芯片的0x60 0x61温度数据寄存器的数据与实际温度之间的关系,文档上没有这方面的描述,官方的arduino同样也没有,估计只有好官方的技术支持了。 在程序中,只需要将只需要调用rohm_bm1422agmv_Init()函数和rohm_bm1422agmv_GetMagVal()函数即可。串口数据打印如下:
另外关于传感器的校准方式,官方有这样的提到: 这个校准方式,目前还不是很明白,打算后期做个电子罗盘的时候,问问ROHM的技术工程师。 详细程序见附件: |