博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MTK G-sensor
阅读量:4048 次
发布时间:2019-05-25

本文共 1231 字,大约阅读时间需要 4 分钟。

声明:资料来自公司同事整理

G-sensor

G-sensor是加速度传感器,可以通过其来获得分别来自三个不同轴向上的加速度用以通知上层应用做出相应处理。

 

由于地球的引力作用,gsensor平放时,Z轴方向能感应到1g的重力加速度,如果移动或倾斜,此时垂直的重力加速度会分解到X,Y,Z轴上。所以旋转手机时,X,Y,Z轴的值不断变化,可以理解为手机处在一个坐标系中,我们判断手机是否旋转就是判断X,Y,Z当前的值。

 

下图为基本原理图:

 

 

飞思卡尔mma7455 管脚配置图:

 

      

     I2C总线连接适配电路图:

  

 

G-sensor的应用

如甩动换歌,换墙纸,TV调台,实现根据手机放置状态自动切换横竖屏,如翻转静音等应用功能。

在系统中G-sensor的两种使用方式

<1> 中断方式:在此方式中首先会对G-sensor器件设定一个阈(yu)值,器件感知加速度当值大于设定的阈值时器件触发CPU中断,系统得到一次甩动事件,系统将该事件处理为一个消息并将其发送给应用层,应用层得到消息判断任务状态如果有MP3,TV等任务运行及对该任务进行切歌换台等操作,如果无任务则切换墙纸。

<2> 查询方式:当进入某个需要使用到G-sensor的应用时,应用先打开一个定时器每当定时器超时溢出时便查询一次G-sensor当前状态值,用以判断当前手机状态。如果三个轴向上的值超过一定范围即认为手机静置状态改变调用相应处理函数执行操作。该种方式主要应用于视频播放即菜单显示的横竖屏切换。

    相关代码

   Custom_equipment.h

Custom_equipment.c

    由于使用不同的芯片所以在代码中作了兼容匹配。对应每一个芯片都有一套

    [chipname]_init                初始化函数

    [chipname]_enablelatch,         中断使能函数

[chipname]_clearlatch,          清中断函数

[chipname]_read_x_value,        读x轴值

   [chipname]_read_y_value,        读y轴值

   [chipname]_read_z_value,        读z轴值

   [chipname]_entersleep           进入睡眠

函数,函数的函数指针在名为GSensor_Funcs的结构体中。在函数gsensor_read_and_check_id 函数中通过读取芯片id然后将对应结构体赋给结构体指针gsensor_func在通过该指针调用对应函数,从而实现了芯片的自动匹配。read_position_status_handler函数为最终的G-sersor的最终处理函数。当该函数被调用后如果有符合要求的事件产生则该函数会向上发出一条消息供给应用层处理。在此函数中有一个名为g_gsensor_settings[]的数组,该数组记录的是需要使用G-sensor的应用程序的开关。传感器三个轴向上的加速度值存储在另外一个名为curr_gsensor_info[3]的数组之中。

 

转载地址:http://tpkci.baihongyu.com/

你可能感兴趣的文章
nodejs Stream使用中的陷阱
查看>>
MongoDB 数据文件备份与恢复
查看>>
数据库索引介绍及使用
查看>>
MongoDB数据库插入、更新和删除操作详解
查看>>
MongoDB文档(Document)全局唯一ID的设计思路
查看>>
mongoDB简介
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>
redis sharding方案
查看>>
程序员最核心的竞争力是什么?
查看>>
Node.js机制及原理理解初步
查看>>
linux CPU个数查看
查看>>
分布式应用开发相关的面试题收集
查看>>
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>
利用HTTP Cache来优化网站
查看>>
利用负载均衡优化和加速HTTP应用
查看>>
消息队列设计精要
查看>>
分布式缓存负载均衡负载均衡的缓存处理:虚拟节点对一致性hash的改进
查看>>
分布式存储系统设计(1)—— 系统架构
查看>>