电子说
在电子设计领域,对于需要按键输入和I/O扩展功能的设备来说,ADP5589是一款非常值得关注的芯片。今天,我们就来详细了解一下这款ADP5589按键解码器与I/O扩展器。
文件下载:ADP5589CP-EVALZ.pdf
ADP5589是一款具有19个I/O端口的扩展器,集成了按键矩阵解码器、可编程逻辑、复位发生器和PWM发生器等功能。它适用于多种设备,包括便携式设备(如手机、遥控器和相机)以及非便携式应用(如医疗保健、工业和仪器仪表)。I/O扩展器的作用在于增加处理器可用的I/O数量,或者减少前面板设计中通过接口连接器所需的I/O数量。
ADP5589配备了一个16元素的FIFO,用于事件记录。默认情况下,它主要记录按键事件,如按键按下和释放。不过,也可以对通用输入(GPI)和逻辑活动进行配置,使其在FIFO上生成事件信息。通过一个由5位组成的事件计数器EC[4:0],用户可以知道在任何给定时间需要读取多少FIFO内容。
它拥有19个可配置的I/O,能够实现多种功能:
事件FIFO由16个8位寄存器组成。每个寄存器的Bits[6:0]保存事件标识符,Bit 7保存事件状态。通过这种方式,能够识别127种不同的事件。当FIFO中有事件时,用户首先读取事件计数器EC[4:0],以确定需要读取的事件数量。事件只能从FIFO顶部读取,读取后,FIFO中剩余的事件会向上移动一个位置,EC[4:0]计数减1。
19个输入/输出引脚可配置为解码最大88个开关(11×8矩阵)的按键矩阵。R0 - R7引脚构成按键矩阵的行,C0 - C10引脚构成列。行引脚通过内部300 kΩ(或100 kΩ)电阻上拉,列引脚通过内部NMOS电流沉驱动为低电平。
按键扫描过程如下:当按键扫描器空闲时,行引脚被上拉为高电平,列引脚被驱动为低电平。当检测到行引脚为低电平时,开始按键扫描。扫描时,先将所有列引脚驱动为高电平,然后逐个将列引脚驱动为低电平,检测行引脚是否为低电平。为了防止误触发,按键必须按下两个扫描周期才能被识别为有效按键。
按键可以通过将每行直接连接到地的开关进行扩展。当按下连接到地的开关时,整行接地,ADP5589会将这种情况解码为一个特殊的按键事件。不过,需要注意的是,当扩展按键被按下时,该行上的其他按键将无法被检测到。
幽灵问题是指在按键矩阵中,某些按键组合会导致额外按键的误读。解决幽灵问题的方法是选择合适的按键矩阵布局,避免三个或更多按键同时在多行或多列上被按下。
ADP5589具有锁定模式,在该模式下,事件不会更新FIFO、事件计数器或生成EVENT_INT中断,直到检测到解锁事件。锁定功能可以通过设置LOCK_EN位或用户可编程的按键或GPI事件来启用。解锁事件通过UNLOCK1[7:0]和UNLOCK2[7:0]寄存器进行编程。
每个I/O线都可以配置为通用逻辑输入(GPI)或通用输出(GPO)。GPI可以通过GPI_STATUS_x寄存器读取当前输入状态,并通过GPI_INTERRUPT_EN_x寄存器编程产生中断。GPO的配置和使用可以参考详细寄存器描述部分。
ADP5589的几个I/O线可以用作输入和输出,以实现一些常见的逻辑功能。逻辑块的输出可以配置为生成中断或在FIFO上生成事件。
PWM发生器的输出可以配置为驱动I/O引脚R3。PWM的开关时间通过四个8位寄存器进行编程。新编程的值在写入最后一个字节PWM_ONT_HIGH_BYTE(地址0x41)后才会被锁存。
时钟分频块可以对通过I/O引脚C6输入的外部时钟源进行分频,分频后的输出通过I/O引脚R3输出。
ADP5589有两个复位块,当检测到某些事件同时发生时,可以生成复位条件。RESET1最多可以编程三个复位触发事件,RESET2最多可以编程两个复位触发事件。
INT引脚可以在任何内部中断源激活时被拉低。用户可以在寄存器INT_EN中选择哪些内部中断与外部中断引脚交互。
ADP5589通过其I2C兼容的串行接口进行寄存器访问,支持最高1 MHz的时钟频率。在访问FIFO或按键事件计数器(KEC)时,FIFO/KEC更新会暂停。文档中详细介绍了I2C的单字节写入、多字节写入、单字节读取和多字节读取序列。
ADP5589适用于各种需要按键输入和I/O扩展功能的设备,如手机、遥控器、相机、医疗设备、工业控制设备等。
ADP5589提供多种型号,不同型号在功能上有所差异,如所有GPIO上拉、复位直通、特殊功能引脚下拉等。同时,还提供评估板ADP5589CP - EVALZ,方便工程师进行测试和开发。
总的来说,ADP5589是一款功能强大、应用广泛的按键解码器与I/O扩展器。在实际设计中,工程师可以根据具体需求对其进行灵活配置,以满足不同设备的功能要求。大家在使用过程中有没有遇到过什么特别的问题呢?欢迎在评论区分享交流。
全部0条评论
快来发表一下你的评论吧 !