[DESCRIPTION]
设置菜单里进行陀螺仪和重力传感器的校准原理及写入的数据格式
[SOLUTION]
重力传感器:
平放取20次平均,({0,0,9.8}-平均值)=校准值 (float型)
–写入Driver:校准值×1000 //JNI再IOCTL Driver中的Gsensor_IOCTL_SET_CALI,只写nvram而不写入
driver的话需要重启后才能生效。开机过程中的nvram_daemon会去读取nvram中的值
写入driver,从而生效
–写入Nvram:校准值×65536/9.80665 ( 有做round处理,所以可能写进去的和读出来的稍微不一样,小数点被舍掉
了)
–所以上层APK读取和写入Nvram的值时都需要处理
陀螺仪
平放取20次平均,({0,0,0}-平均值)=校准值 (float型)
–写入Driver:校准值 //JNI再IOCTL Driver中的GYROSCOPE_IOCTL_SET_CALI,只写nvram而不写入
driver的话需要重启后才能生效。开机过程中的nvram_daemon会去读取nvram中的值
写入driver,从而生效
–写入Nvram:校准值×1000
设置菜单里进行陀螺仪和重力传感器的校准原理及写入的数据格式
[SOLUTION]
重力传感器:
平放取20次平均,({0,0,9.8}-平均值)=校准值 (float型)
–写入Driver:校准值×1000 //JNI再IOCTL Driver中的Gsensor_IOCTL_SET_CALI,只写nvram而不写入
driver的话需要重启后才能生效。开机过程中的nvram_daemon会去读取nvram中的值
写入driver,从而生效
–写入Nvram:校准值×65536/9.80665 ( 有做round处理,所以可能写进去的和读出来的稍微不一样,小数点被舍掉
了)
–所以上层APK读取和写入Nvram的值时都需要处理
陀螺仪
平放取20次平均,({0,0,0}-平均值)=校准值 (float型)
–写入Driver:校准值 //JNI再IOCTL Driver中的GYROSCOPE_IOCTL_SET_CALI,只写nvram而不写入
driver的话需要重启后才能生效。开机过程中的nvram_daemon会去读取nvram中的值
写入driver,从而生效
–写入Nvram:校准值×1000
–所以上层APK读取和写入Nvram的值时都需要处理
来源:一牛网论坛
本文详细介绍了在设置菜单中进行陀螺仪和重力传感器校准的具体原理及数据处理方式。通过平均值计算得到校准值,并阐述了校准值如何转换为设备可以接受的格式写入驱动程序及非易失性内存。
7494

被折叠的 条评论
为什么被折叠?



