0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用MAX7348 的串行I2C 总线的键盘电路以及驱动程序的设计,MAX7348 Application

454398 2018-09-20 19:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

采用MAX7348 的串行I2C 总线的键盘电路以及驱动程序的设计,MAX7348 Application

关键字:MAX7348,键盘控制电路

一、简述
本文介绍一种采用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 为中断输出端口;AD0 为地址输入端口,用来设置器件的从地址,该引脚接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 个字节数据(或命令)、源程序请从www.ele169.com 下载。
笔者编写的模拟I2C 总线驱动程序,经过多次调试,程序符合I2C 总线传输时序要求,与I2C总线设备通讯可靠,但需要注意的一点是:以上代码是在SPCE061A 单片机默认时钟频率(24M)的情况下编写的,如果采用较高的系统时钟,需要在部分代码中间添加一些延时程序,否则会出现数据丢失,造成通讯错误。
五、小结
本文介绍的MAX7348 与单片机的接口具有电路简单,易于实现,节省了单片机的IO 口,提高了键盘电路的稳定性和可靠性,在笔者制作的5 层电梯模型中工作稳定,性能可靠,是一种值得推广的键盘扩展方案,可应用在工业控制、PDA、医疗器械等多个领域。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入解析 MAX31328:高精度 I2C RTC 的卓越之选

    深入解析 MAX31328:高精度 I2C RTC 的卓越之选 在电子设备的设计中,实时时钟(RTC)是不可或缺的一部分,它为系统提供准确的时间信息,确保设备的正常运行。今天,我们将深入探讨
    的头像 发表于 03-26 16:10 134次阅读

    SGM4541 I2C总线过压保护器:设计与应用的详细解析

    SGM4541 I2C总线过压保护器:设计与应用的详细解析 在如今的电子设备设计中,保护电路免受过电压的损害是至关重要的。SG Micro Corp推出的SGM4541 I2C
    的头像 发表于 03-17 16:30 362次阅读

    探索MAX7306:多功能I2C/SMBus接口GPIO与LED驱动

    探索MAX7306/MAX7307:多功能I2C/SMBus接口GPIO与LED驱动器 在电子设计领域,对于高效、灵活的GPIO扩展和LED驱动
    的头像 发表于 02-02 15:55 239次阅读

    MAX7304:集成ESD保护的I2C接口16端口GPIO与LED驱动

    MAX7304:集成ESD保护的I2C接口16端口GPIO与LED驱动器 在电子设备的设计中,GPIO扩展器和LED驱动器是常见的组件,它们对于实现设备的各种功能起着关键作用。今天我们
    的头像 发表于 02-02 15:50 214次阅读

    解析TMUX7348F和TMUX7349F:高性能模拟多路复用器的技术奥秘

    TMUX7348F和TMUX7349F是现代互补金属 - 氧化物半导体(CMOS)模拟多路复用器,分别采用8:1(单端)
    的头像 发表于 01-13 09:50 538次阅读

    探索TMUX7348F - EP:8:1模拟多路复用器的卓越性能与应用

    的TMUX7348F - EP 8:1模拟多路复用器,凭借其出色的特性和丰富的保护功能,为电子工程师在设计复杂系统时提供了强大的支持。本文将深入探讨TMUX7348F - EP的各项特性、技术参数以及实际应用案例,帮助工程师更好
    的头像 发表于 01-12 14:30 431次阅读

    探索PCF8584:I2C总线控制器的卓越之选

    以作为标准高速并行总线串行I2C总线之间的接口设备,兼容8049、8051、6800、68000和Z80等多种并行总线微控制器/微
    的头像 发表于 12-28 15:40 740次阅读

    P82B715:I2C总线扩展的得力助手

    )的P82B715,一款专门用于缓冲高电容I2C总线系统的器件,看看它是如何解决这些问题的。 文件下载: p82b715.pdf 1. 器件概述 P82B715是一款支持通过I²C
    的头像 发表于 12-26 10:20 1394次阅读

    AS32X601的I2C模块操作EEPROM详解

    国科安芯推出的AS32X601系列MCU芯片内置的I2C模块提供了符合工业标准的两线串行制接口,可用于MCU和外部I2C设备的通讯。I2C总线
    的头像 发表于 12-21 21:39 1540次阅读
    AS32X601的<b class='flag-5'>I2C</b>模块操作EEPROM详解

    I2C总线协议

    I2C 总线使用两根信号线(数据线 SDA 和时钟线 SCL)在设备间传输数据。SCL 为单向时钟线,固定由主机驱动。SDA 为双向数据线,在数据传输过程中由收发两端分时驱动
    发表于 12-15 08:07

    深入剖析I2C协议

    I2C也是一种可以多主设备,多从设备的总线协议,通过地址索引,I2C可以使能所需从设备,I2C的出现主要是用来实现不同集成电路组件之间的控
    的头像 发表于 08-21 15:10 3860次阅读
    深入剖析<b class='flag-5'>I2C</b>协议

    I2C总线通信,为什么要进行电气隔离?

    I2C总线采用双向二线制,支持多主机多从机通信,具备高可靠性、抗干扰能力强,广泛应用于嵌入式系统中。
    的头像 发表于 08-11 11:04 2648次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>通信,为什么要进行电气隔离?

    Analog Devices / Maxim Integrated MAX31331超低功耗I2C实时时钟数据手册

    使用具有任意电容负载(CL)规格的晶体。此特性可扩展该器件的可用晶体范围。MAX31331可通过^I2C^串行接口进行访问。
    的头像 发表于 06-22 11:32 1062次阅读
    Analog Devices / Maxim Integrated <b class='flag-5'>MAX</b>31331超低功耗<b class='flag-5'>I2C</b>实时时钟数据手册

    基于RT-Thread的I2C(软件) 实践 | 技术集结

    ,我们可以通过菜单配置工具menuconfig快速设置软件I2C的引脚,并借助其内部已实现的驱动程序,方便快捷地完成调用与开发。(二)FRDM-MCXA153FR
    的头像 发表于 05-06 18:44 1205次阅读
    基于RT-Thread的<b class='flag-5'>I2C</b>(软件) 实践 | 技术集结

    MAX25069怎么通过I2C修改寄存器?

    我手上有一个客户的MAX25069的板子,请问下:怎么通过I2C接口修改寄存器的值?以寄存器0x2(REG_CTRL[7:0])为例。
    发表于 04-25 07:11