【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常

这篇具有很好参考价值的文章主要介绍了【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

【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常,Android,算法,人工智能,android,linux

由名称定义很好理解,他们分别是加速度旋转矩阵,磁力旋转矩阵,陀螺仪旋转矩阵。这段有点数学基础的都好理解。[x,y,z]是原始采样数据,[X,Y,Z]是最后上送到app的数据,旋转矩阵数据为[a1,a2,a3,a4,a5,a6,a7,a8,a9]则有:

 = 【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常,Android,算法,人工智能,android,linux

—>

【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常,Android,算法,人工智能,android,linux

带入原始数据:[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里面有介绍,这里写下自己的备忘,大佬勿喷!

新人入行,经验分享,如有所误,欢迎指出~

 版权归属:深圳市琪智科技有限公司-花花文章来源地址https://www.toymoban.com/news/detail-673111.html

到了这里,关于【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux驱动开发 ST7789 LCD驱动移植(I.MX6ULL平台)

    前言 I.MX6ULL的板子未选配RGB的屏幕,无法在板子上进行GUI的开发调试,不过手头上有块控制器为ST7789V3的LCD屏幕(1.3inch),通过简易接线后可以很方便进行驱动的移植 如有异议,欢迎留言指正 ST7789 LCD控制器 ST7789是一款单芯片TFT-LCD控制器,支持并口与SPI通信方式 特性 控制器支

    2023年04月09日
    浏览(81)
  • 给linux移植fbtft驱动st7735s小屏幕(f1c100s)

    内核版本5.4 在使用spi总线接上了一个小网卡,实现了我们开发板对网络的访问之后,我还想接一个小的spi屏幕 1.44寸款,来画一只小企鹅,顺便显示一些系统的调试信息。但是由于我这个开发板向外暴露出来的spi接口就两个,而且有一个已经因为串口的设置而不能使用。所以

    2024年02月10日
    浏览(42)
  • linux(全志F1C100S/F1C200S)系列02:移植LCD st7789驱动,LVGL8.3移植

    st7789V中指定了rst与dc引脚,pio 4 3 对应PE3,pio 4 5对应PE5; 详细配置方式见链接:全志 :gpio使用 需要根据自身硬件配置。 Tips:更改 spi-max-frequency = 32000000 - spi-max-frequency = 100000000; 和 fps = 30; 改为 fps = 60; 感谢楼下老哥提示。 rotate = 90;根据屏幕方向更改。 只需要更改下面的三个地

    2024年01月18日
    浏览(61)
  • Android HAL机制的深入理解及在Linux上移植和运行的一个好玩的HAL小例子

    PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。 环境说明   Ubuntu 18.04.x   近一年来,虽然还是做的是AIOT相关的事情,但是某些事情却发生了一些变化。随着个人的阅历提升,现在的AI在边缘端

    2023年04月08日
    浏览(43)
  • 在f1c100s芯片上移植spi网卡enc28j60的linux驱动

    我个人与全志的芯片颇有故事。在我还是一个不懂事的高中生时,我看到荔枝派的官方文档,顿时被这小小的板子给吸引住。点开文档的初见: 荔枝派Nano(下面简称Nano)是一款精致迷你的 Arm9 核心板/开发板,可用于初学者学习linux或者商用于产品开发。 Nano 在与SD卡相当的

    2024年02月11日
    浏览(61)
  • STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

    目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 屏幕引脚配置 2.3 项目生成  3、KEIL端程序整合 3.1 LCD驱动添加 3.2 函数修改 3.2.1 lcd.h修改 3.2.2 lcd_innit.h 修改  3.2.3 lcd.c修改  3.2.4 lcd_inut.c修改  3.3 主函数代码 3.3.1 添加头文件 3.3.2 LCD进行初始化

    2024年02月16日
    浏览(42)
  • 在f1c100s上移植fbtft驱动st7735s小屏幕

    内核版本5.4 在使用spi总线接上了一个小网卡,实现了我们开发板对网络的访问之后,我还想接一个小的spi屏幕 1.44寸款,来画一只小企鹅,顺便显示一些系统的调试信息。但是由于我这个开发板向外暴露出来的spi接口就两个,而且有一个已经因为串口的设置而不能使用。所以

    2024年02月10日
    浏览(39)
  • 【Linux驱动开发】编译Android12源码

    基于讯为电子rk3568教程 rk_android12.0_sdk_20220720.tar.gz 解压 设置屏幕配置 整体编译 Android 固件 使能编译环境 开始整体编译 rockdev/Image-rk3568_s // 编译成功镜像存放位置 单独编译u-boot (方法一) 编译完成后在 u-boot 目录会生成 rk356x_spl_loader_v1.13.112.bin 文件、uboot.img 文件、 resourc

    2024年02月05日
    浏览(44)
  • 利用STM32的HAL库驱动1.54寸 TFT屏(240*240 ST7789V)

      项目:温湿度表 芯片:STM32F030C6T8 液晶:华迪1.54寸 TFT屏 温湿度传感器:SHT30      主要对液晶屏官方驱动代码进行了增加和修改。 一、STM32CubeMX建立工程          I2C1 给SHT30, SPI给液晶屏,TIM16用于内部基础定时,TIM17给LED,USART1打印调试信息。RTC预留。  SPI的DMA设置 

    2023年04月08日
    浏览(43)
  • STM32使用HAL库驱动TA6932数码管驱动芯片

    8段16位,支持共阴共阳LED数码管。 推挽配置即可。 1、使用TA6932_Init进行初始化 2、使用TA6932_Disp(uint8_t *_ucPtr,uint8_t _ucLenth)进行显示,_upPtr指针指向段码,_ucLenth为显示长度,不超过16位。

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包