【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常
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里面有介绍,这里写下自己的备忘,大佬勿喷!
新人入行,经验分享,如有所误,欢迎指出~
版权归属:深圳市琪智科技有限公司-花花
相关文章:
【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常
ST的传感器驱动与HAL一直成功后,能拿到数据了,但是设备是横屏,系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况,设备横立展示的是竖屏,设备竖立展示的是横屏。 这个是PCB上设计的传感器贴片方向和横屏不一致…...
JavaScript Es6_3笔记
JavaScript 进阶 文章目录 JavaScript 进阶编程思想面向过程面向对象 构造函数原型对象constructor 属性对象原型原型继承原型链 了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。 …...
Qt产生随机数
Qt产生随机数 提问:注意:实现: 提问: 有没有小伙伴遇到这么一种情况,使用rand()和qrand()函数生成的随机数好像不是那么随机,每次都一样。那这种就叫做“伪随机”,因为没有种随机数种子&#x…...
postgresql常用函数-数学函数
postgresql常用函数 简介数学函数算术运算符绝对值取整函数乘方与开方指数与对数整数商和余数弧度与角度常量 π符号函数生成随机数 简介 函数(function)是一些预定义好的代码模块,可以将输入进行计算和处理,最终输出一个 结果值…...
【排序】快速排序(前后指针法)—— 考的最少的一种算法
以从小到大的顺序进行说明。 前后指针法 是指对于一个数组,定义前后各一个指针(prev 和 cur) prev用于卡一个比基准值大的值进行交换cur用于向前遍历出比基准值小的,和prev进行交换 图解 初始化 选出基准值4 如果cur 所在的值…...
软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解
软考:中级软件设计师:关系代数 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &…...
openCV实战-系列教程2:阈值与平滑处理(图像阈值/图像平滑处理/高斯/中值滤波)、源码解读
1、图像阈值 t图像阈值函数,就是需要判断一下像素值大于一个数应该怎么处理,小于一个数应该怎么处理 ret, dst cv2.threshold(src, thresh, maxval, type) 参数解析: src: 原始输入图,只能输入单通道图像&#…...
C语言第五章-循环结构练习
1、设计一个小型模拟彩票中奖机,已知彩票中奖号码是一个固定的3位数(原始号码)。对任意一个3位数,取出它的每位数字和原始号码的每位数字比较,有1位数相同中三等奖,有2位数相同中二等奖,有3位数…...
Echarts面积图2.0(范围绘制)
代码: // 以下代码可以直接粘贴在echarts官网的示例上 // 范围值 let normalValue {type: 内部绘制,minValue: 200,maxValue: 750 } // 原本的绘图数据 let seriesData [820, 932, 901, 934, 1290, 1330, 1320] let minData Array.from({length: seriesData.len…...
flink checkpoint时exact-one模式和atleastone模式的区别
背景: flink在开启checkpoint的时候有两种模式可以选择,exact-one和atleastone模式,那么这两种模式有什么区别呢? exact-one和atleastone模式的区别 先说结论:exact-one可以完全做到状态的一致性,而atle…...
QEMU 仿真RISC-V freeRTOS 程序
1. 安裝RISC-V 仿真環境 --QEMU 安裝包下載地址: https://www.qemu.org/ 安裝命令及安裝成功效果如下所示, target-list 設定爲riscv32-softmmu, $ cat ~/project/qemu-8.0.4/install.sh sudo apt-get install libglib2.0-dev sudo apt-get install libpixman-1-dev ./co…...
用大白话来讲讲多线程的知识架构
感觉多线程的知识又多又杂,自从接触java,就在一遍一遍捋脉络和深入学习。现在将这次的学习成果展示如下。 什么是多线程? 操作系统运行一个程序,就是一个线程。同时运行多个程序,就是多线程。即在同一时间࿰…...
【uniapp】微信小程序 , 海报轮播图弹窗,点击海报保存到本地,长按海报图片分享,收藏或保存
uivew 2.0 uniapp 海报画板 DCloud 插件市场 第一步,下载插件并导入HbuilderX 第二步,文件内 引入 海报组件 <template><painter ref"haibaorefs"></painter> <template> <script>import painter from /comp…...
SpringBoot与前端交互遇到的一些问题
一、XXX.jar中没有主清单属性 场景: SpringBoot打的jar包在Linux运行报错 解决方案: 百度找了很多都是一样的答案,但是解决不了我的问题,于是我新建了一个springboot项目发现打的jar包可以在Linux上运行。检查了下只要把下面这2个…...
Maven介绍与配置+IDEA集成Maven+使用Maven命令
目录 一、Maven简介 二、配置环境变量 三、IDEA集成Maven 1.配置本地仓库地址 2.集成Maven 3. pom.xml文件介绍 四、Maven命令 jar包太多、jar包相互依赖、不方便管理、项目编译还需要jar包,Maven工具来帮你! 一、Maven简介 Maven 是 Apache 软…...
毕业设计题目源码-毕业论文参考
目录 java语言ssm框架springboot框架微信小程序jspservletmysqljspservletsqlserverssh框架springmvc框架oracle无数据库 C#/asp/net语言B/S结构 浏览器模式C/S结构 窗体模式 安卓/androidapp 客户端appweb 客户端服务端 php语言php java语言 ssm框架 题目ssm828基于java的珠…...
SSH报错-Terminal shell path: C:\WINDOWS\System32\cmd.exe 此时不应有
最近接盘了实验室的工作,需要重新配置连接自己的VScode的SSH远程连接服务器,结果配置了一个下午都没搞好,决定记录一下,希望大家避免踩坑。在vscode上遇到的是这个报错: 错误日志 [11:40:12.097] Checking ssh with …...
Docker 轻量级可视化工具Portainer
1. 是什么 Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 2. 安装 2.1 官网 https://www.protainer.io/ https://docs.portainer.io/ce-2.9/start/install/server/docker/linux 2.2 …...
站点平台技术架构
系统架构部署思维导图 平台模块分配: 1.账号模块 2.权限模块 3.站点模块 4.配置模块 5.系统升级 6.日志模块 一、前期工作 1.系统保持一致性方案: GIT版本控制:通过总控端向租户端发送一个更新同步请求,租户端收到请求后执行GI…...
一个以太坊合约的漏洞分析-重入攻击
请找出下列合约漏洞,并说明如何盗取ContractB 中的数字资产,并修复合约。中说明:ContractB 的contract_a接口为ContractA 地址 pragma solidity ^0.8.21; interface ContractA {function get_price() external view returns (uint256); }int…...
d-id AI studio会员值得买吗?实测3大核心功能与免费版对比
d-id AI studio会员深度评测:三大核心功能实测与免费版差异全解析 在数字内容创作领域,AI视频工具正掀起一场革命。作为行业新锐,d-id AI studio凭借其独特的面部动画技术,让普通用户也能轻松制作专业级动态视频。但对于已经体验…...
语义通信:从理论到6G落地的关键技术演进与挑战
1. 语义通信的理论基石 语义通信(Semantic Communication, SemCom)的核心思想与传统通信有着本质区别。传统通信追求的是"准确传输比特流",而语义通信关注的是"有效传递信息的意义"。这就像两个人对话:传统通…...
ai辅助开发:让快马平台为你的arduino项目注入智能决策与学习能力
AI辅助开发:让快马平台为你的Arduino项目注入智能决策与学习能力 最近在做一个智能垃圾分类的小项目,用Arduino控制各种传感器和舵机来实现自动分类。这个过程中发现,手动编写所有判断逻辑和阈值调整特别耗时,于是尝试用InsCode(…...
2026年上海网站建设市场分析:企业官网从展示到增长的演进路径
2026年,上海企业数字化服务市场迎来结构性变革。据2026年上半年上海企业数字化服务市场调研数据显示,上海地区企业官网新建与升级需求同比增长45%,中大型企业对官网的核心诉求已从基础信息展示转向AI智能赋能、全球化跨境适配、全链路营销转化…...
三步掌握BepInEx插件框架:零基础也能懂的Unity游戏扩展指南
三步掌握BepInEx插件框架:零基础也能懂的Unity游戏扩展指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity/XNA游戏的插件框架,为开发者和…...
Qwen3-VL-Reranker-8B应用场景:科研数据集图文代码混合检索
Qwen3-VL-Reranker-8B应用场景:科研数据集图文代码混合检索 1. 科研检索的痛点与解决方案 科研工作者在日常研究中经常面临这样的困境:手头有大量包含文本、图像、代码片段的研究资料,想要快速找到相关内容却异常困难。传统的文本检索工具只…...
std::unique_lock vs std::lock_guard:C++线程锁选择指南(附性能测试)
std::unique_lock vs std::lock_guard:C线程锁的深度抉择与实战优化 在C多线程编程中,锁的选择往往决定了程序的性能表现和稳定性。当我们需要在std::unique_lock和std::lock_guard之间做出选择时,不能简单地认为"功能多就是好"。本…...
5分钟打造私人语音助手:开源离线语音键盘Sayboard全解析
5分钟打造私人语音助手:开源离线语音键盘Sayboard全解析 【免费下载链接】Sayboard An open-source on-device voice IME (keyboard) for Android using the Vosk library. 项目地址: https://gitcode.com/gh_mirrors/sa/Sayboard 在智能手机普及的今天&…...
告别手动操作!用Word宏/VBA实现doc批量转docx的隐藏技巧
职场效率革命:Word宏/VBA零代码实现文档格式批量升级 每天面对堆积如山的.doc文件,行政文员小张总要手动打开每个文件另存为.docx格式——这个机械操作不仅耗时费力,还容易遗漏文件。其实微软Office内置的自动化工具能完美解决这个问题&#…...
蓝牙5.1室内定位精度提升秘籍:iBeacon+AoA技术实战指南
蓝牙5.1室内定位精度提升秘籍:iBeaconAoA技术实战指南 在仓储物流和医疗设备管理等对定位精度要求严苛的场景中,传统蓝牙RSSI定位技术常因多径效应和信号衰减导致2-5米的误差。而蓝牙5.1引入的AoA(到达角)技术,配合iBe…...
