重力传感器方向
有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->6power_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
總結
- 上一篇: 高可用集群下的负载均衡(6):hapro
- 下一篇: 思维模型 复用