石家庄免费建站模板,门户网站包括哪些,做哪个行业的网站好,安装网络要多少钱ST的传感器驱动与HAL一直成功后#xff0c;能拿到数据了#xff0c;但是设备是横屏#xff0c;系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况#xff0c;设备横立展示的是竖屏#xff0c;设备竖立展示的是横屏。
这个是PCB上设计的传感器贴片方向和横屏不一致…ST的传感器驱动与HAL一直成功后能拿到数据了但是设备是横屏系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况设备横立展示的是竖屏设备竖立展示的是横屏。
这个是PCB上设计的传感器贴片方向和横屏不一致导致的只需要在HAL层旋转矩阵就行。利用地球重力加速度为9.8g的特性用手机和设备做平放、竖立放、横立放同步对比可推算出需要的旋转矩阵。
修改文件路径为/hardware/STMicroelectronics/SensorHAL_IIO/configuration.h
修改前默认数据是
#define CONFIG_ST_HAL_ACCEL_ROT_MATRIX 1,0,0,0,1,0,0,0,1
#define CONFIG_ST_HAL_MAGN_ROT_MATRIX 1,0,0,0,1,0,0,0,1
#define CONFIG_ST_HAL_GYRO_ROT_MATRIX 1,0,0,0,1,0,0,0,1
修改后数据是
#define CONFIG_ST_HAL_ACCEL_ROT_MATRIX 0,1,0,-1,0,0,0,0,1
#define CONFIG_ST_HAL_MAGN_ROT_MATRIX 0,1,0,-1,0,0,0,0,1
#define CONFIG_ST_HAL_GYRO_ROT_MATRIX 0,1,0,-1,0,0,0,0,1 由名称定义很好理解他们分别是加速度旋转矩阵磁力旋转矩阵陀螺仪旋转矩阵。这段有点数学基础的都好理解。[x,y,z]是原始采样数据[X,Y,Z]是最后上送到app的数据旋转矩阵数据为[a1,a2,a3,a4,a5,a6,a7,a8,a9]则有 — 带入原始数据[a1,a2,a3,a4,a5,a6,a7,a8,a9] [1,0,0,0,1,0,0,0,1]则有 也就是数据原因上送。
带入修改后的数据[a1,a2,a3,a4,a5,a6,a7,a8,a9] [0,1,0,-1,0,0,0,0,1]则有 这样就把坐标系旋转了90度了实现了默认竖屏变默认横屏。没搞清楚的在一张纸上画下XY坐标系旋转下实践出真知。
这段在readme里面有介绍这里写下自己的备忘大佬勿喷 新人入行经验分享如有所误欢迎指出~ 版权归属深圳市琪智科技有限公司-花花