高通平台G-sensor校准流程

高通平台G-sensor校准流程
在这里插入图片描述
1.app层 runSensorTest在这里插入图片描述
在这里插入图片描述
jni接口在这里插入图片描述
2.hal层的接口
jni中调用libSensor1的接口sensor1_open
在这里插入图片描述
在这里插入图片描述
3.adsp驱动中的流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
调用到对应驱动文件中的run_test,以bma2x2为例:
在这里插入图片描述
run_test 函数中由多种校准模式其中SNS_DDF_TEST_OEM模式会计算当前机器的数据bias,并存储下来。在这里插入图片描述
除了SNS_DDF_TEST_OEM还有SNS_DDF_TEST_SELF_SW和SNS_DDF_TEST_SELF_HW等。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
sns_dd_inertial_test_handle_timer完成3个任务
1.sns_dd_inertial_test_get_data 获取校准数据
2.cal_update,更新bias以及motion_state
3.根据state->algo_output.motion_state判断校准是否成功。在这里插入图片描述
这里说明一下为什么会z轴数据+9.8,因为adsp中默认校准时水平放置在桌面,X,Y轴数据为0,Z轴的数据为-9.8,所以这边加上9.8之后,就变成X,Y,Z三个轴都是0,0,0了。在这里插入图片描述
在这里插入图片描述
继续看在这里插入图片描述
回到sns_dd_inertial_test_handle_timer函数,通过cal_update获取到对应的bias值后,判断是否超出门限值,bias值是否可用。在这里插入图片描述
校准成功调用 sns_dd_inertial_test_complete(state, SNS_DD_ITEST_SUCCESS);在这里插入图片描述
在这里插入图片描述

校准数据返回到bma2x2驱动文件中根据返回值err不通不同,走不同的路径。在这里插入图片描述
(status == SNS_DDF_SUCCESS) || (err == SNS_DD_ITEST_ZERO_VARIANCE)都判定校准成功,上报SNS_DDF_EVENT_BIAS_READY event。在这里插入图片描述
在这里插入图片描述
将对应的bias值存放到指定sns.reg路径下
SNS_REG_ITEM_ACC_X_BIAS_V02
SNS_REG_ITEM_ACC_Y_BIAS_V02
SNS_REG_ITEM_ACC_Z_BIAS_V02在这里插入图片描述
在这里插入图片描述
sns.reg中的校准后校准参数存放位置。在这里插入图片描述
sns_dd_acc_bma2x2_get_data中上报数据时+对应的bias,从而使得上报数据变成校准后的数据上报给app。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值