查看: 1190|回复: 0

【疯壳·嵌入式平板电脑开发教程9】G-sensor 驱动实验教程

[复制链接]
  • TA的每日心情
    开心
    2022-4-17 15:37
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2022-8-31 10:44:37 | 显示全部楼层 |阅读模式
    分享到:
    G-sensor 驱动实验教程
    ——疯壳·嵌入式平板开发




    第一节 引言 --- G-sensor 电路原理图详解

      下图来源于文档 3128_sdk_a02_20170325.pdf 中第 2 页和第 12 页。
      如下两张图可以确定 G-sensor 是通过 I2c 与 cpu 相互通信的,cpu 作为主设备,G-sensor 作为从设备。因为 cpu 的 I2c 不仅仅与 G-sensor 相连,它连接了多个 I2c 从设备,并且通过从设备地址来确定当前和哪个从设备通信。

    1.png
    图1

    2.png
    图2

    第二节 G-sensor 驱动代码结构

      $(dir)\rk3128-source\kernel\drivers\input\sensors\accel\mma8452.c
      从代码路径可以看出 G-sensor 驱动和 input,sensor 设备有莫大的关系。

    3.png
    图3
      $(dir)\rk3128-source\kernel\drivers\input\sensors\sensor-dev.c
      --- sensor 设备注册,主要是注册 sensor,input 设备,解析 dts 配置文件
      $(dir)\rk3128-source\kernel\drivers\input\sensors\sensor-i2c.c
      ---sensor 的 I2c 相关处理

    第三节 实验代码


    1.dts 修改:

    代码1.png
    代码1
    2.增加一个可以动态调节方向的测试函数如下(在 sensor-dev.c 中),用户可以通过adb shell 或者串口去输入数据完成屏幕方向调节的功能。


    代码2.0.png
    代码2.1.png

    代码2
    3.输入命令格式
    a.系统缺省的方向配置如下
    echo gsensor_class={1, 0, 0, 0, 1, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation b.测试命令如下
    echo gsensor_class={1, 0, 0, 0, 0, 1, 0, 1, 0} > /sys/class/gsensor_class/orientation

    echo gsensor_class={0, 1, 0, 1, 0, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation

    echo gsensor_class={0, 1, 0, 0, 0, 1, 1, 0, 0} > /sys/class/gsensor_class/orientation

    echo gsensor_class={0, 0, 1, 1, 0, 0, 0, 1, 0} > /sys/class/gsensor_class/orientation
    echo gsensor_class={0, 0, 1, 0, 1, 0, 1, 0, 0} > /sys/class/gsensor_class/orientation

    4.代码调试中遇到问题
      如果 gsensor_set_orientation_online()直接返回 0 或 1 而不是 count,会出现什么情况?为什么?   
      如果 echo gsensor_class={1, 0, 0, 0, 1, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation 命令提示输入不生效,可以尝试输入 su 命令提高一下权限。在我们开发板上面, adb 默认是 root 的,所以 adb shell 之后,直接是 root 用户。可以用 su 切换,也可以不用切换。

    第四节 实验步骤 --- GSENSOR 怎么调节方向

      一般 GSENSOR 芯片贴片的位置变了,变换坐标就要跟着调整。
      我们 Gsensor 是贴片好了的,这个用户无法更改,但是用户可以模拟一下如果板子不平放而是竖着放,屏幕平放的情况看优酷,如果保证屏幕的正常显示。

    第五节 实验现象

      开发板放置成如下图一方向,什么命令可以让屏幕横着播放视频?
      echo gsensor_class={-1, 0, 0, 0, -1, 0, 0, 0, -1} > /sys/class/gsensor_class/orientation
      输入如上命令后,屏幕变了,如图二。

    4.png
    图4

    5.png
    图5



    完整配套资料和对应开源套件地址:http://www.fengke.club

    如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系

    文件下载请点击: 9、G-sensor驱动实验教程.pdf (631.95 KB, 下载次数: 0)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-5-3 05:16 , Processed in 0.135983 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.