重力传感器方向

有8种贴片方式,正面四种,反面四种。

因此在代码中就需要调整x轴y轴,或者x轴,y轴的正反方向。

mtk下实现方法如下:

首先在dts种设置方向,direction即为方向:

/* sensor standardization */
		cust_accel@0 {
		compatible = "mediatek,bma222e_new";
		i2c_num	= <2>;
		i2c_addr = <0x18 0 0 0>;
		direction = <6>; //0->6
		power_id = <0xffff>;
		power_vol = <0>;
		firlen = <0>;
		is_batch_supported = <0>;
		};

在driver代码中,根据dts中给定的direction可以获取cvt:

err = hwmsen_get_convert(obj->hw.direction, &obj->cvt);

cvt为如下数据:

struct hwmsen_convert map[] = {
	{ { 1, 1, 1}, {0, 1, 2} },
	{ {-1, 1, 1}, {1, 0, 2} },
	{ {-1, -1, 1}, {0, 1, 2} },
	{ { 1, -1, 1}, {1, 0, 2} },
 
	{ {-1, 1, -1}, {0, 1, 2} },
	{ { 1, 1, -1}, {1, 0, 2} },
	{ { 1, -1, -1}, {0, 1, 2} },
	{ {-1, -1, -1}, {1, 0, 2} },
 
};

以此为例direction为6,cvt即为{1,-1,-1} 方向, {0,1,2} xyz3轴是否需要交换

下列代码为最终进行数据重调整的代码

/*remap coordinate*/
acc[obj->cvt.map[MPU6050_AXIS_X]] = obj->cvt.sign[MPU6050_AXIS_X]*obj>data[MPU6050_AXIS_X];
acc[obj->cvt.map[MPU6050_AXIS_Y]] = obj->cvt.sign[MPU6050_AXIS_Y]*obj>data[MPU6050_AXIS_Y];
acc[obj->cvt.map[MPU6050_AXIS_Z]] = obj->cvt.sign[MPU6050_AXIS_Z]*obj>data[MPU6050_AXIS_Z];

参考文档:https://blog.csdn.net/qq_38750572/article/details/103807126

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值