资产跟踪设备中BMA250E获取三轴加速度数值驱动代码
Posted 瑞奇Ricky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资产跟踪设备中BMA250E获取三轴加速度数值驱动代码相关的知识,希望对你有一定的参考价值。
近年来随着互联网的发展,线上购物与交通运输行业也随之发展。线上购物为传统的生产制造注入了新的活力。除了B2C线上交易得到了质的飞跃外,传统的B2B贸易也逐渐线上化。但运输过程中的风险一直是交易中企业双方所关心的重点话题。资产监测设备结合物联网技术能够对货物的实时位置、状态与运动轨迹等,为货物的运输的监测提供新的解决方案。
资产监测设备中结合了多种类型的传感器,来搜集资产的实时状况,通过通信模块与网络将信息传递至云端后台。
近期在某个定制资产跟踪设备的新项目合作过程中,开发人员遇到了如何用BMA250E获取三轴加速度数值驱动代码的问题,经过开发人员的进一步确认,提出了以下解决方案:
BMA250E是一款针对消费电子类应用的低重力、数字式加速度传感器,能够测量三个相互正交的方向上的加速度大小。测量值由传感器的ASIC电路,通过将采用了差动电容原理的,加速度微机械感应结构的输出值转换得到。BMA250E的封装和接口设计可以满足大多数情况下的硬件需求,极微小的引脚加上扁平的外形封装非常适合于移动平台的应用。
//读取一个字节数据
uint8_t Bsp_Gsensor_ReadByte(uint8_t reg_addr)
{
uint8_t data;
Bsp_Gsensor_IIC_Start();
Bsp_Gsensor_IIC_Write_Byte(Bsp_Gsensor_IIC_ADDR);
Bsp_Gsensor_IIC_Wait_Ack();
Bsp_Gsensor_IIC_Write_Byte(reg_addr);
// Bsp_Gsensor_IIC_Stop();
Bsp_Gsensor_IIC_Write_Byte(Bsp_Gsensor_IIC_ADDR + 0x01);
data = Bsp_Gsensor_IIC_Read_Byte(0);//发送NACK 停止传输
Bsp_Gsensor_IIC_Stop();
return data;
}
//三轴加速度结构体
typedef struct
float x;
float y;
float z;
}ACCD_t;
//获取加速度 返回值:float 加速度 单位:g
void Gsensor_GetACCD(ACCD_t *accd)
const uint16_t AccdNum = 3;
int16_t accd_value;
int16_t accd_l,accd_m;
float accd_f;
uint8_t xyz[AccdNum][2]
= {{Gsensor_REG_ACCD_X_LSB,Gsensor_REG_ACCD_X_MSB},
{Gsensor_REG_ACCD_Y_LSB,Gsensor_REG_ACCD_Y_MSB},
{Gsensor_REG_ACCD_Z_LSB,Gsensor_REG_ACCD_Z_MSB}};
for(uint16_t i = 0;i < 3;i++)
{
accd_l = (Bsp_Gsensor_ReadByte(xyz[i][0])>>2);
accd_m = Bsp_Gsensor_ReadByte(xyz[i][1]);
accd_value = (accd_l>>6) + (accd_m<<2);
accd_value &= 0x03ff;
if(accd_value >> 9)//负数
accd_value &= 0x01ff;
accd_value = ~accd_value;
accd_value += 1;
accd_value = - accd_value;
accd_f = (accd_value*Gsensor_MeasureRange/1024.0);
switch (i)
case 0:
accd->x = accd_f;
break;
case 1:
accd->y = accd_f;
case 2:
accd->z = accd_f;
default:
}
从事物联网资产跟踪设备的其他开发人员,在遇到类似问题时,可参考以上内容。
以上是关于资产跟踪设备中BMA250E获取三轴加速度数值驱动代码的主要内容,如果未能解决你的问题,请参考以下文章