您的位置 首页 传感器

根据I2C总线的键盘电路以及驱动程序的规划

本文介绍一种采用MAX7348 的串行I2C 总线的键盘电路以及驱动程序的设计。

一、概述

本文介绍一种选用MAX7348 的串行I2C 总线的键盘电路以及驱动程序的规划。

I2C 需求连线少,仅需一条串行时钟线和一条串行数据线。答应多主机操控,具有判决和同步功用,可随意增加或去除总线上的子器材等许多长处,所以现已被广泛使用。

二、MAX7348

MAX7348 是美国MAXIM 公司出产的2 线接口、低EMI 键盘开关和发声操控器,可监控多达40 个按键,可对按键去抖并保存在FIFO 中,去抖时刻用户可在9 ~ 40ms 之间恣意设置,MAX7348 自带的腔调发生器在操控器的效果下可主动宣布按键声和报警声,在发声期间,输出还能够设置为高电平或低电平,以驱动电子发声器、继电器或指示灯。

芯片选用400Kps,5.5V 容限2 线串行接口,作业电压2.4 ~ 3.6V,4 个I2C 地址挑选。与MAX7348同系列的还有MAX7347 和MAX7349 等。

1. 引脚图

如图1 所示,SDA 、SCL 别离是兼容I2C 串行总线的数据、时钟接口,使用时一般需求接一个典型值为4.7kΩ 的上拉电阻;ROW0 ~ ROW8 为键盘矩阵行输入端口,不用时开路;COL0 ~ COL4为键盘矩阵列输出端口;SOUNDER 为发声器输出端口,该输出为推挽结构,一般与地之直接一个压电陶瓷片或其他发声设备;INT 为中止输出端口;ADO 为地址输入端口,用来设置器材的从地址,该引脚接GND、V+、SDA、SCL 可构成4 种逻辑组合构成MAX7348 的4 个可选的I2C 地址,如表1 ;GND 为接地端,V+ 接电源(2.4 ~ 3.6V)。


表1 2线接口地址分配表

2. 首要内部寄存器

(1) 按键FIFO 寄存器(00H) 该寄存器包括与按键FIFO 状况有关的信息,以及那些经曩昔抖的事情信息,该寄存器的D0 ~ D5 位表明按键中的那些键已去抖,D6 指明当前去抖按键是否是FIFO 中的最终一个;D7 位是溢出标志,它表明按键FIFO 是否溢出。读按键扫描FIFO 将铲除中止信号,可是只要通过履行满足次数的读操作清空FIFO后才干再次发生中止(INT)信号。

(2)去抖寄存器( 01H) 该寄存器用来设置每一个去抖周期的时刻,以及使能和禁用GPO 端口,其间D0 ~ D4 位用来在9 ~ 40ms 规模内设置去抖时刻,步长1ms,D5 ~ D7 用来设置使能那一个GPO 端口(表2)。

表2 去抖寄存器设置

(3)主动重复寄存器( 02H)该寄存器用来设置主动重复频率及其延时。当按键按下且没有开释时,主动重复功用答应接连触发按键事情。主动重复延时规则了第一次按下按键与开端重复之间的时刻(假如按键没有开释)。主动重复频率规则了主动重复开端后按键事情接连触发的速度。D0 ~ D3设定主动重复延时,规模从8 个去抖周期到128 个去抖周期。D4 ~ D6 位规则重复频率,规模是4 到32 个去抖周期,D7 位是主动重复功用使能位(如表3 所示)。

表3 主动重复寄存器

(4) 中止寄存器( 03H) 该寄存器包括与中止请求功用设置有关的信息,以及INT 输出的状况,INT 输出也可装备为GPO.中止寄存器是只读寄存器,向该寄存器写入数据无效。

(5)装备寄存器(04H)该寄存器反映发声器的状况、操控I2C 总线超时、使能报警输入中止、使能发声器对报警输入和按键去抖时刻做出呼应,以及操控器材关断等。该寄存器结构如表4 所示,除D1、D2 设定发声器输出状况外,其他每一位对应一个操控状况,用户可根据需求使能(置1)或制止(置0)。

表4 装备寄存器结构

(6)按键发声寄存器( 06H) 假如装备寄存器(04H)中使能按键发声,那么当一个键或一组键去抖后,发声操控器将宣布声音,并由按键发声寄存器设定发声的时刻和频率。

除以上几个首要寄存器外还有端口寄存器、报警声寄存器、发声器寄存器等多个寄存器,这些寄存器首要用于操控发声器和扩展GPO 端口,在此不做具体叙说,感兴趣的读者能够自行查阅有关MAX7348 的技术资料。

三、电路规划

图2 是笔者规划的MAX7348 使用电路,该电路以凌阳(SPCE061A)单片机为主操控器,结合MAX7348 构成了一个具有40 个按键的键盘电路,通过程序能够设置按键发声、主动接连按键、中止输出等功用。MAX7348 的SDA、SCL、INT 别离与SPCE061A 单片机的IOB0、IOB1、IOB2(注:SPCE061A 单片机的IOB2 为外部中止1 的输进口)衔接,因为I2C 总线答应挂接多个从机,所以在实际使用中,能够将多个不同从机地址的设备挂接在同一总线上,为单片机节省很多的硬件资源。

四、软件编写

在图2 所示的键盘电路中,因为MAX7348 只具有兼容的I2C 接口,而SPCE061A 单片机自身不具备I2C 接口,要完成二者之间的数据传输,一般选用通用IO 口软件模仿I2C 的方法来完成。图3 是MAX7348 的总线时序。

由图3 所示的时序图能够看出,用软件模仿I2C 总线的传输时序,大致要阅历结构开端条件、发送从机地址(含读写标志位)、等候从机呼应、发送(或读取)1 个字节数据(或指令)。

笔者编写的模仿I2C 总线驱动程序,通过屡次调试,程序契合I2C 总线传输时序要求,与I2C总线设备通讯牢靠,但需求留意的一点是:以上代码是在SPCE061A 单片机默许时钟频率(24M)的情况下编写的,假如选用较高的体系时钟,需求在部分代码中心增加一些延时程序,不然会呈现数据丢掉,形成通讯过错。

五、小结

本文介绍的MAX7348 与单片机的接口具有电路简略,易于完成,节省了单片机的IO 口,提高了键盘电路的安稳性和牢靠性,在笔者制造的5 层电梯模型中作业安稳,功能牢靠,是一种值得推行的键盘扩展计划,可使用在工业操控、PDA、医疗器械等多个范畴。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/198235.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部