概述
ADP5589是一款19通道GPIO(通用输入/输出)端口扩展器,内置键盘矩阵解码器、可编程逻辑、复位逻辑和PWM发生器。该IC支持QWERTY键盘和GPIO扩展。I/O扩展器IC适用于便携式设备(手机、遥控器和相机)及非便携式应用(医疗保健、工业和仪器仪表),可用来增加处理器可用的I/O数量,或者通过接口连接器减少前面板设计所需的I/O数量。
ADP5589处理所有按键扫描和解码,并通过一条中断线通知主处理器有新的按键事件发生。GPI变化和逻辑变化也可以通过FIFO记录为事件,从而无需监控不同的寄存器来判断事件变化。ADP5589配有一个FIFO,它最多可以存储16个事件。处理器可以通过I^2^C兼容型接口回读事件。
ADP5589使主处理器不必监控键盘,从而降低功耗和/或提高处理器带宽,以便执行其它功能。可编程逻辑功能支持将常用逻辑要求集成为GPIO扩展器的一部分,从而节省电路板面积和成本。同时提供参考软件Linux驱动。
数据表:*附件:ADP5589键盘解码器和IO扩展器中文手册.pdf
特性
框图
引脚配置描述
详细说明
事件先入先出存储器(FIFO)
理解事件FIFO的功能十分重要。ADPD5589具备一个事件FIFO,它能够记录多达16个事件。默认情况下,FIFO主要记录按键事件,例如按键按下和按键松开。不过,也能够对通用输入(GPIO)和逻辑活动进行配置,使其在FIFO中也生成事件信息。事件计数EC[4:0]由5位组成,与FIFO协同工作,这样用户就能随时了解FIFO中还需读取多少内容。
FIFO由16个8位字节段构成,用户可通过读取FIFO_x寄存器进行访问。实际的FIFO并非通过连续的寄存器实现,直至有读取操作发生。FIFO可被视为一个“先进先出”缓冲区,用于填充寄存器0x03至寄存器0x12。
事件FIFO由16个8位寄存器组成。在每个寄存器中,位[6:0]存储事件标识符,位7存储事件状态。凭借这7位,可识别27个不同的事件。有关事件解码,请参见表11。

当FIFO中有可用事件时,用户首先应读取事件计数EC[4:0],以确定FIFO中剩余的事件数量。只有在读取一个事件后,FIFO中所有剩余事件才会上移一个位置,同时EC[4:0]计数会相应递减。

FIFO寄存器(0x03至0x12)始终指向FIFO的顶部(即EVENT1[7:0]的位置)。如果用户试图从FIFO中的任意无效位置读取数据,始终会从FIFO的顶部获取数据。这确保了事件只能按照其发生顺序从顶部读取,从而保证了事件顺序系统的完整性。
ADPD5589的一些板载功能可对FIFO中的事件进行编程计数。FIFO更新控制模块负责管理对FIFO的更新。如果I2C事务正在访问任何FIFO地址位置,更新操作将暂停,直至I2C事务完成。
当生成的事件超过16个,且外部处理器尚未读取并清除FIFO时,就会发生FIFO溢出事件。
如果发生溢出情况,溢出状态位将被置位。如果启用了溢出中断,将生成一个中断,向处理器发出信号,表明发生的事件已超过16个。
按键扫描控制
概述
19个输入/输出引脚可配置为解码一个键盘矩阵,最大尺寸为88个开关(11×8矩阵)。也可以配置较小的矩阵,释放未使用的行和列引脚用于其他I/O功能。
R0至R7 I/O引脚组成键盘矩阵的行,C0至C9 I/O引脚组成键盘矩阵的列。引脚作为行时,通过内部300kΩ或100kΩ电阻拉高。引脚作为列时,通过内部NMOS电流吸收器拉低。
全部0条评论
快来发表一下你的评论吧 !