推广 热搜:   公司  企业  中国  快速    上海  行业  设备  未来 

HALL开关介绍android是什么手机「HALL开关介绍」

   日期:2025-01-12     移动:http://fabua.ksxb.net/mobile/quote/7324.html

一、HALL开关原理及手机应用


                手机中用来控制线路通断的器件主要有三种类型:开关、干簧管和霍尔元件。不同的是开关一般是由人工

         手动控制,而干簧管和霍尔元件则通过磁信号来控制线路的通与断。霍尔(HALL)传感器是一种电子元件,其

         外型封装和三极管非常相象。它是由HALL元件,放大器、施密特电路以及集电极开路输出三极管组成,当磁场

         作用于HALL元件时产生一个微小的HALL电压,经放大器放大和施密特电路后使三极管导通输出低电平,而没

         有磁场作用的时候(即翻盖打开后)三极管截止输出为高电平。和干簧管相比HALL传感器寿命更长,不容易损

         坏,而且对振动,加速度不太敏感,作用时开关时间也比较快,通常为0.1~~2ms比干簧管的1~~3ms快得多。

 

                手机中HALL传感器由一个开关型HALL元件和两个电源开关控制管组成。其导通与否完全受到手机CPU输

         出的HALL高电平信号控制,电源则来自于电池。当翻盖合上时装在翻盖中的磁铁的磁场作用于HALL传感器 

        (一般翻盖/折叠手机都把磁铁安装在翻盖上,HALL电路中的三极管导通,从传感器的引脚输出低电平,如果

         是在通话后则作为“挂机”信号送给CPU挂机。(这也就是为什么合上翻盖后手机就挂断的道理)。

 

                当用户打开翻盖时,HALL不受磁场感应,HALL电路中的三极管截止,输出为高电平,如果该信号是在来

         电时产生的,那么在送给CPU时,CPU便作为开机信号而接听电话。但如果仅仅是用户做其他操作比如输入短

         信,电话号码单纯打开翻盖,该电路信号由CPU作为背景灯控制信号使背景灯点亮。(每次开盖的时候背景灯

         都要点亮,同时记录一次翻盖次数)。小心的用工具仅仅掀开一点点翻盖的时候背景灯是不会亮的,因为这时

         候还有磁场作用于HALL元件,当打开到一定角度的时候,失去磁场作用的HALL电路的三极管便截止输入高电

         平CPU在收到该信号后便驱动背景灯电路点燃背景灯。

               当用户取消“翻盖接听”的选项后,CPU送出的HALL信号为低电平,从而使那两个电源开关控制管截止,没

        有电源供给,即使在有无磁场信号时输出的电压都不会改变,因而也就失去了开关的作用。因此在这样的情况

        下,来电后你翻盖CPU根据设置并不接通电话,这时候你需要按下接听键才能接听。

 

 

二、硬件连接

 

 

 

            NOTE: 当有磁场改变的时候在OUT脚位会输出一个 H 或者 L 电平,与OUT 相连的PIN脚必须是一个可唤醒

                        系统的中断

 

三、HALL KEY实现
       在驱动gpio_event.c里添加中断注册和回掉函数

 

四、按键唤醒系统
       要实现按键唤醒系统,首先,在驱动中,设置此键会被上报。如
               __set_bit(KEY_2, kpd_input_dev->keybit);
               __set_bit(KEY_3, kpd_input_dev->keybit);
       这样,才能确保按键被注册处理,否则,上层收不到按键事件。
       另外,在7x27a_kp.kl文件中,设置devicesqcommsm7627a_sku37x27a_kpd.kl

                      key 111   GN_HALL_KEY_OPEN  WAKE
               key 112   GN_HALL_KEY_CLOSE

         这样就可实现按键唤醒系统了。

 

五、新增两个按键实现hall key

       1. 首先修改底层gpio_event.c文件中的按键定义
              #define GN_HALL_KEY_OPEN 111
              #define GN_HALL_KEY_CLOSE 112
       2. 修改devicesqcommsm7627a_sku37x27a_kpd.kl文件,增加
              key 111  GN_HALL_KEY_OPEN WAKE  (打开可以唤醒)
              key 112  GN_HALL_KEY_CLOSE
       3. 在frameworksbaseinclude䡎ycodelabels.h KEYCODES结构体中增加
              { "GN_HALL_KEY_OPEN", 111 },
              { "GN_HALL_KEY_CLOSE", 112 },
       4. 在frameworksbasecorejavaandroidviewkeyevent.java构造函数中增加
              public static final int KEYCODE_GN_HALL_KEY_OPEN    = 111;
              public static final int KEYCODE_ GN_HALL_KEY_CLOSE = 112;
       5. 修改:  private static final int LAST_KEYCODE           = KEYCODE_BUTTON_MODE;
           为private static final int LAST_KEYCODE =KEYCODE_ GN_HALL_KEY_CLOSE;
           在frameworksbase ativeincludeandroidkeycodes.h的enum中增加
              AKEYCODE_GN_HALL_KEY_CLOSE   = 250,
              AKEYCODE_GN_HALL_KEY_CLOSE  = 251,
       6. 在frameworksbaselibs䡗put.cpp的issystemkey中增加
              case AKEYCODE_GN_HALL_KEY_CLOSE:
              case AKEYCODE_GN_HALL_KEY_CLOSE: 
           这样bool KeyEvent::isSystemKey() const {
                     return isSystemKey(getKeyCode());
           才能由scancode转换为keycode供上层应用截取。

本文地址:http://fabua.ksxb.net/quote/7324.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号