基于I2C总线的键盘驱动的设计与实现

发布者:CaptivatingGaze最新更新时间:2014-01-11 来源: elecfans关键字:I2C总线  键盘驱动  PXA270 手机看文章 扫描二维码
随时随地手机看文章

随着嵌入式系统的飞速发展,嵌入式PC在许多领域得到广泛应用。其中嵌入式键盘作为一种人机交互工具,有着非常重要的作用。通常的键盘设计采用阵列的设计方式,例如一个含有9个键值的键盘需要6个通用I/O口来实现通信。键盘的键值越多,需要的通用I/O口也越多。

I2C(Inter-Integrated Circuit)总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件上,因此I2C总线占用的空间非常小。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。但在任何时间点上只能有一个主控。

I2C的这些特点使得在许多设计中备受青睐,本文所介绍的MAX7347-7349系列芯片,即是一款I2C兼容芯片。它将键值扫描等一系列操作封装在芯片内部完成,CPU只需要通过I2C总线与芯片通信,通过向芯片写入一定的命令完成某些操作。从而简化了键盘驱动的处理。而且由于I2C支持多主控,因此不影响系统其他设备的操作。整个过程只需要3个通用I/O口与CPU通信,可以处理多达64个键值的响应,有效地节省了通用I/O口。

2 基本原理

2.1 键盘驱动实现原理

通常的键盘采用矩阵式原理,例如对于一个含20个键值的键盘,采用4×5的矩阵阵列,即4行5列。其中行和列直接与CPU的I/O口相连,4个I/O口作为中断I/O口。一旦外部有键按下,就会产生中断,由于键盘被按下后,该键对应的行和列被连通,因此根据判断各列对应的I/O口的电平,可以得到被按下键的位置,从而采取相应的响应。

本文所采用的MAX7347-7349系列芯片内部有一个FIFO队列,他在内部完成按键去抖、扫描键值、按键自动重复,以及某些时刻报警等一系列复杂的操作,而键盘驱动本身是需要通过发送一系列的命令来得到所需要的某些状态值,从而进行相应的操作。

2.2 I2C总线通信原理

I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。各种被控制电路均并联在这条总线上,每个电路和模块都有惟一的地址。CPU会发出地址码用来选址,即接通需要控制的电路。所以,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

I2C总线定义了严格的传输信号来完成一次传输。

开始信号:当SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:当SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。如图1所示。

注意:SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变会被识别为起始和停止条件。

应答信号:接收数据的IC在接收到8 b数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出1个信号后,等待受控单元发出1个应答信号,CPU接收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。如图2所示。 

3 具体实现

3.1 接口电路

如图3所示MAX7347芯片电路示意图。 

其中11个脚为键盘阵列输入连接到键盘外设,3行8列,最多可以控制24个不同按键。3个脚与PXA 270直接通信,INT为中断脚,按键按下为低电平,SCL为I2C兼容串行时钟输入,SDA为I2C兼容串行I/O口。[page]

当有键按下时,连接到键盘的11个脚会有电平的变化,芯片会根据电平的变化得到按下键的键值,然后存放在芯片内部的FIFO中,同时把INT脚下拉为低电平。此时键盘驱动在检测到INT变低之后会通过SDA向芯片发送一系列命令,芯片通过SDA传回给驱动相应的状态及值。SCL和SDA的电平变化严格遵循2.2节介绍的I2C总线通信信号规律。

3.2 软件实现框架

Windows CE操作系统驱动层分为MDD层(Model Device Driver,模型设备驱动)和PDD(Platform Dependent Driver,平台相关驱动)两层,框架结构如图4所示。MDD层是抽象出来的一些功能,不与硬件直接相关,他接收PDD层传来的数据,完成处理得到的键值,发出消息通知处理处理响应操作的程序,PDD层与硬件直接相关,实现硬件接口以及获得的硬件特性传递给MDD层。 

驱动实现流程,PDD层主要实现键盘的监控,开辟两个线程,线程MaxKeyCheckPro监控INT脚的电平变化。当有键按下,INT拉低,此时在I2C总线准备完毕的情况下,通过I2C总线发送读取键值的命令读取芯片的FIFO,芯片在接收到命令之后会将FIFO中存储的键值通过I2C总线发出传回给线程MaxKeyCheckPro,同时发出通知给线程KeybdIstThreadProc,将传递回来的键值传给线程KeybdIstThreadProc,再由线程KeybdIstThreadProc负责将键值传给MDD层,MDD层负责存储键值,并发出消息通知相应的程序对键值做出响应。

采用两个线程的目的是让各自完成自己的操作,不会造成相互的影响,在按键频繁触发的情况下,线程MaxKey CheckPro可以在快速得到键值传递出去之后立即等待下一次按键的发生,不会因为在处理其他的操作而使得下一次按键的响应有所延迟。

3.3 I2C总线的通信流程

由于按键的频繁按下会导致不停地使用I2C总线读取芯片FIFO,所以防止2次读写之间的干扰(即在一次读写没有完成之前另一次读写操作也占用I2C总线,两次的数据会造成紊乱)是一个重要的问题。

针对一次读写操作,考虑到其不可打断性以防止数据的破坏,采用mutex互斥锁。即每次只允许1个读写操作占用I2C总线。在1次读写操作开始之前,等待互斥锁,直到读写操作完毕,释放互斥锁。这样当在一次读写没有完成之前,另一次读写无法占用I2C总线,而只能等待。具体流程如图5所示: 

3.4 具体读写操作

这里的键盘驱动与普通键盘驱动不同,不需要通过判断键盘矩阵的电平变化来得到键值,这些操作由芯片内部完成。键盘控制器对按键操作去抖并且自动存入FIFO中,因此所需要做的操作就是在检测到键盘按下之后读取FIFO。如图6所示。

但值得注意的是,每次按键按下之后,INT脚会被拉高,但是只有在将FIFO清空之后INT才会被拉低,拉低之后如果继续有键盘按下,会继续把键值存放在FIFO中。所以每次的读取操作需要清空FIFO。但是在实际应用中发现当键盘在被快速按下时,对于FIFO中的操作都做出响应会影响系统的性能,所以选择丢掉FIFO队列中其他键值,只保留最后一个。

4 性能分析

整个过程CPU通过3根主线和芯片通信,实现了按键操作的快速响应和处理,可以控制最多达64个按键的防抖及响应,由于芯片封装了一部分功能,由硬件来处理使得速度变快。由于I2C的多主控特点,不会影响挂在I2C上的其他外设的工作和性能。

5 结 语

本文介绍基于PXA270处理器和WindowsCE 5.0操作系统上的键盘驱动的设计和实现。目前已经在本平台上稳定运行,具有很好的按键处理能力。

关键字:I2C总线  键盘驱动  PXA270 引用地址:基于I2C总线的键盘驱动的设计与实现

上一篇:基于嵌入式 Linux的键盘驱动设计
下一篇:IXP425和DM642的会议电视多点控制单元硬件设计

推荐阅读最新更新时间:2024-03-16 13:33

基于51单片机之16个阵列式键盘驱动程序
#define KEY P1 //键盘所连接的I/O接口组定义 ********************************************************* 函数名:16个阵列式键盘驱动程序 调 用:? = Key (); 参 数:无 返回值:unsigned char 键值0~16 结 果:有键按下时返回值为键值1~16,无键按下时返回值为0 备 注:在主函数中不断调用 ***********************************************************/ unsigned char Key (void){ //4*4阵列键盘处理程序 unsigned
[单片机]
基于I2C总线的多点温度采集系统
随着社会的进步和工业技术的发展,许多产品对温度范围的要求越加严格,尤其在工业发展方面,如冶金、钢铁、石化、水泥、玻璃等行业。而目前市场上温度检测仪器大多是单点测量,不能适应当今社会生产高效率要求,且温度信息精度不高。因此设计一种能够同时测量多点温度,测量精度高,能够综合处理多点温度信息的测量系统很有必要。这里提出一种能多路采集、显示的温度采集系统设计。 1 系统硬件设计 1.1 系统整体结构 该系统设计采用I2C总线,单主机多从机的工作模式,实现多点温度的采集、读取与显示。主机由主控制器、数码管显示、电源、报警、键盘等模块组成,完成以下功能:1)主机通过按键确定进入温度测量状态以及即将读取温度的节点:2)主机从总线上读取
[测试测量]
基于<font color='red'>I2C总线</font>的多点温度采集系统
基于I2C总线的高分辨率红外式触摸屏设计
  引言   随着平面显示器的大规模应用和大屏幕平板显示器的出现,红外触摸屏的应用已十分广泛。同时,分辨率的进一步提高成为红外触摸屏应用于大屏幕的关键,本文提出了一种提高红外式触摸屏分辨率的方法。   系统结构及工作原理   系统工作原理   红外触摸屏基本原理是光束阻断技术,它不需要在原来的显示器表面覆盖任何材料,只需在显示屏幕的四周安放一个框架。框架两个对边上,一边安装红外发光二极管(LED),另一边安装红外线探测器,在显示屏幕的表面形成一个由红外线组成的栅格。当有任何物体进入这个栅格的时候,就会阻挡一些光线,光电转换电路就会收到变化的信号,由ADC转换后,MCU将计算的触摸位置坐标传递给操作系统。   早期红外
[嵌入式]
高效I2C总线控制电路
  I2C 总线 是 PHILIPS 公司推出的新一代串行 总线 ,由于其结构简单、灵活,各结点具有独立的电气特性,可实现电路的模块化、标准化而被广泛应用。  
[嵌入式]
带RTC的I2C总线铁电存储器FM31256
  FM31256是由Ramtron公司推出的新一代多功能系统监控和非易失性铁电存储芯片。与其他非易失性存储器比较,它具有如下优点: 读/写速度快,没有写等待时间;功耗低,静态电流小于1 mA,写入电流小于150 mA;擦写使用寿命长,芯片的擦写次数为100亿次,比一般的EEPROM存储器高10万倍,即使每秒读/写30次,也能用10年;读/写的无限性,芯片擦写次数超过100亿次后,还能和SRAM一样读/写。   铁电存储器(FRAM)的核心技术是铁电晶体材料。这一特殊材料使铁电存储器同时拥有随机存取存储器(RAM)和非易失性存储的特性。本文介绍了FM31256的主要功能,并具体给出了基于嵌入式C语言编写的存储器读/写程序。 1
[单片机]
带RTC的<font color='red'>I2C总线</font>铁电存储器FM31256
I2C总线详解笔记
1. 引言 I2C总线是事实上的世界标准,现在由超过50家公司制造的1000多种不同的IC实现。此外,多功能I2C总线用于各种控制架构,如系统管理总线(SMBus),电源管理总线(PMBus),智能平台管理接口(IPMI),显示数据通道(DDC)和高级电信计算架构(ATCA))。 在消费者电子电讯和工业电子中看上去不相关的设计里经常有很多相似的地方例如几乎每个系统都包括: 为了使这些相似之处对系统设计者和器件厂商都得益而且使硬件效益最大电路最简单Philips (现NXP)开发了一个简单的双向两线总线实现有效的IC 之间控制这个总线就称为Inter IC 或I2C 总线。所有符合I2C总线的器件组合了一个片上接口使器件之间
[单片机]
<font color='red'>I2C总线</font>详解笔记
ARM I2C总线的数据传送方式
ARM I2C 总线的数据传送方式 AR M VC 总线接口共有主控器发送、主控器接收、被控器发送和被控器接收4种操作模式。在流量积算仪表的设计中IZC总线接口扩展了数据采集电路,数据采集是由定时器控制完成的,每间隔100 ms进行一次数据采样。在操作模式中主要用到主控器发送模式和主控器接受模式,下面结合这两种模式介绍总线中数据的传送方式。 在AR M IZC总线的数据传送中,进行传输的每个字节数据必须是8位的,而对每一次传送而言,可被传送的字节数没有限制。在主控器发送模式下,主控器先发出起始信号,然后发送一个字节的数据,其中包括7位从地址以决定哪个接收器件被主控器选中和I位的写操作标志位。一个字节的发送操作完成以后,被寻址的接收
[单片机]
ARM <font color='red'>I2C总线</font>的数据传送方式
I2C总线扩展I/O总线
  在需要监测多种输入信号或者控制多种输出信号的系统应用,有时需要将这些信号线直接连接到微处理器引脚,用软件实现监测和控制。但这种方法可能需要使用很多微处理器引脚。   为了减少使用微处理器引脚,有一个办法就是通过胶合逻辑接口实现监测和控制信号线与微处理器通讯。但开发这种系统很麻烦,也很费时,因为需要的器件更多、连线更多、代码编写也更复杂。   本文给出了监测和控制多外围设备信号的一个好方案。采用该方案可访问并行总线并与各种电子器件接口,具有简单而且成本低的优点。该方法基于工业标准的PCF8574和PCF8574A器件,这些器件具有不同的I2C地址。本文称这些器件为扩展器,讨论其差异时,用器件名代替。   扩展器有一条两线I2
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved