• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > MSM8909+Android5.1.1键盘驱动---sn7326介绍

MSM8909+Android5.1.1键盘驱动---sn7326介绍

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了msm8909,高通msm8909,msm8909处理器,msm8909与msm8916,高通骁龙msm8909等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

MSM8909+Android5.1.1键盘驱动---sn7326介绍


1.Sn7326概述

SN7326是一款带智能自扫描的键盘扩展芯片,支持多达8*8个按键。按下/松开按键的动作被编码成一个字节的数据存入到按键事件寄存器(key event register)中,主控制器可通过I2C串行总线读取按键事件寄存器。

SN7326具有去抖动功能,在任何按键按下时中断输出引脚会置低,为降低功耗,在没有按键动作时SN7326自动进入低功耗模式。

SN7326的主要特性

(1) 2.4V到5.5V的工作电压

(2) 400kHz的I2C串行接口

(3) 可检测多键同时按下

(4) 低至0.3uA(VDD典型值为3.3V)的待机电流

2.原理图设计

我们设备有qwerty键盘和简易键盘通过SN7326按键扩展芯片,再经过电平转换芯片NLSX4378连接到CPU,如下图

\

SCL---GPIO_11

SDA---GPIO_10

KEY_INT---GPIO_98

KEY_RST---GPIO_2

KEY_UP---GPIO_90

KEY_DOWN---GPIO_91

CPU通过KEY_INT引脚知道是否按下按键,然后通过I2C读取SN7326寄存器的值来判断哪个按键按下,最后上报给系统。

3.sn7326设备从地址

\

图2

A0为读写标志位,A0=0指示写命令,A0=1指示读命令。我们的设计AD1和AD0连接到VDD,所以AD1=AD0=0,故设备地址为1011000+A0位

4.sn7326寄存器介绍

有配置寄存器和按键状态寄存器。

\

图3

(1)配置寄存器(0x08)

DE位可用于控制是否使能去抖动功能。

LT位可设置长按键检测延时时间

(2)按键状态寄存器(0x10)

DN位可判断是一个还是多个按键按下

KS位可知道按键是按下还是松开状态

KM指按键位置编码位,表示多达64个按键的编码,当读取完按键状态寄存器后(DN=0),此寄存器被设置为00000000,且/INT引脚被置高。

 

按键映射表如下:

\

图4

需要重点注意,当中断产生时,一定要读取完按键状态寄存器的值,即读取按键状态寄存器的DN位=0时,停止读取按键状态寄存器的。

5.典型应用

5.1 上电复位

SN7326包含有一个完整上电复位电路可确保在上电时所有寄存器被复位为已知的状态,当VDD>2.4V,上电电路会释放寄存器和I2C接口可正常工作。当VDD

5.2 I2C复位控制

当I2C总线被锁死时,向RST管脚发送一个低电平,可使I2C总线重置得以继续通信,此复位动作不影响中断输出。

5.3 待机模式

当总线空闲时,SN7326自动进入待机模式,降低供电电流。

5.4 按键自动扫描

SN7326能支持一个8*8矩阵键盘扫描,8个列输入端口(OD端口)需要一个100kΩ,在待机状态时8个行输入端口(PP端口)被拉低。

如果检测到键盘状态变化,键盘会在反弹延时(debounce delay)时间内扫描3次。当捕获到按键按下/松开时,按键事件被编码并写入到按键状态寄存器中,然后通过/INT产生一个中断。按照从最低编码值到最高编码值的顺序读取按键状态寄存器来报告按键事件。

/INT引脚在按键事件被读完之前一直保持为低,一种情况除外,也就是当使能自动清空/INT的功能,如果在编程时间(由08h寄存器的SD位决定)没有读取完所有的按键事件数据,在编程时间到达时/INT引脚变为高电平。但是临时按键状态寄存器将保持不变和按键事件数据可继续读出,直到检测到另一个按键检测到之前。

5.5 去抖动(debounce)

当配置寄存器(08h)的SD=0/1和键盘状态改变时,键盘第1次扫描并保存数据到临时寄存器,等待6/3ms进行第2次扫描,再等待8/4ms进行第3次扫描,如果这几次扫描结果一样,按键事件数据就锁存到临时按键状态寄存器并/INT置低,否则,扫描停止和设备返回到待机模式,没有数据存入临时按键状态寄存器和/INT保持高电平。

5.6 长按键检测(Long-pressed Key Detect)

当配置寄存器(08h)的LE=1,开启长按键功能。当有按键长按时,芯片会自动重复发送中断信号和扫描按键,知道按键松开,长按键检测的时间间隔由配置寄存器(08h)的LT位决定。

5.7 按键事件中断

一旦有按键事件码锁存到临时按键状态寄存器中,向MCU输出一个中断信号,当键盘时间读取完之前,/INT保持为低,且任何键盘状态的改变都被忽略。但一种情况除外:如果使能了/INT自动清除功能,在编程时间到达时/INT引脚变为高电平。但是临时按键状态寄存器将保持不变和按键事件数据可继续读出,直到检测到另一个按键检测到之前。

5.8 自动清除INT功能

如果配置寄存器(08h)的ACI=01/10,使能此功能。在产生中断后,就算按键状态寄存器的值没有读取完成,在5/10ms自动置高/INT。当/INT为低电平时,按键状态寄存器的数据不会改变,不管/INT为高还是低,都可以读取阿年状态寄存器的值。但如果有新的按键事件会产生新中断,新数据会写入按键状态寄出去你,旧数据将会丢失,只有新的数据才可被读取。

5.9 输入端口滤波器

配置寄出去你的DE=1,使能输入端口滤波功能。当DE=0,输入端口滤波功能关闭,芯片会对输入端口的任何变化应答。当DE=1,任何小于100ns的脉冲都会被过滤掉,如果输入脉冲宽度大于100ns,芯片将会对信号产生应答。

\

图5

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • msm8909+android5.1.1--打开调试(debug)串口
  • MSM8909+Android5.1.1键盘驱动---sn7326介绍
  • MSM8909+Android5.1.1键盘驱动浅析
  • msm8909+android5.1.1编译前配置及增加新项目和产品所需分支
  • msm8909+android5.1.1 由BLSP3改为BLSP1后SPI读写速度慢问题解决

相关文章

  • 2017-08-23Android下文件的压缩和解压(Zip格式)
  • 2017-05-26上传图像之裁剪,图像裁剪
  • 2017-05-26开源插件 PullToRefresh: PullToRefreshListView / PullToRefreshGridView 实例详解
  • 2017-05-26Android 手机卫士--是否有密码区分对话框类型,android卫士
  • 2017-05-26Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结,xamarinvs2015
  • 2017-05-26自定义轮播图片框架的使用,自定义播图片框架
  • 2017-05-26安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像
  • 2017-05-26Docker+Redis3集群环境搭建
  • 2017-05-26Activity的生命周期,Activity生命周期
  • 2017-05-26Android开发学习——SQLite数据库与单元测试,androidsqlite

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android 优秀的开源框架整理,android开源框架
    • ACCESS 触发器delete table事件变量使用及连续删除
    • 网站偶尔访问不了故障总结
    • Winform突然不响应KeyEvent了
    • 浅谈Android Small插件化框架源码
    • 高效地分析Android内存--MAT工具解析
    • Android—自定义控件实现ListView下拉刷新,androidlistview
    • 用Android studio进行 OpenCV 开发的第一个项目,androidopencv
    • Android开发笔记(5)——方法调用(基础),android笔记
    • Android中View实现弹性滑动的方法——Android开发艺术探索笔记

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有