MCU

ADP5588概述以及GPI的使用

0
阅读(4547)

继上一次的介绍,今天继续对ADP5588进行介绍,还有介绍一下ADP5588作为扩展GPI的用法。

ADP5588采用小型4mm×4mm封装,具备足够的能力来处理所有按键扫描和解码,并且为处理器标记所有经由I2C接口和中断引脚的键盘按压动作。它将主要的微处理器从键盘监控中“解放”出来,从而降低功耗,并且提高处理器带宽。它还配备一个缓冲器/FIFO及键盘动作计数器,可通过溢出封包和中断功能来处理和记录高达10个未处理的键盘动作或GPI事件。ADP5588提供键盘锁定功能和在按键压放时是否触发中断的选项。所有到主处理器的通讯是通过一根中断线和两根I2C兼容接口线来完成的。ADP5588可以配置成一个多达8行×10列的键盘矩阵(最多80个键)。

当用于小型键盘矩阵,不用的行和列引脚可以重新配置成通用的输入、输出或光传感器输入。R0、R1、R2、R3、R4、R5、R6和R7表示矩阵的行引脚,而C0、C1、C2、C3、C4、C5、C6、C7、C8和C9表示列引脚。在上电时,所有的行和列默认为GPI,并且必须被编程为键盘矩阵的一部分、GPO或光传感器输入才能运行。 除键盘和GPIO功能外,C8和C9还可以设置为光传感器输入。当配置为键盘线路时,C8和C9线路的功能简单直接:控制接口从比较器输入断开这些线路,关断光传感器比较器,然后把它们连接到键盘矩阵的键盘列。当用作光传感器比较器输入时,控制接口从键盘断开这些引脚,启动比较器,然后连接这些线路到比较器输入。当这些引脚设置为光传感器输入时,仅需两个外部电容(0.1µF)。当用作GPIO时,这些引脚从键盘和光传感器接口移除,光传感器比较器和传感器逻辑线路被关断。

今天主要是对其GPI功能进行介绍,该芯片最多支持18个GPI输入口,通过对其相关寄存器进行设置,可以对端口的状态进行监控。

ADP5588允许用户将其所有的GPIO都配置成GPI,当GPIO被配置成GPI属性后,用户还可以根据自己的需要打开该端口对应的内部上拉电阻和中断发生属性,最终达到软件的监控频率和降低功耗的目的。GPI中断的触发电平决定了GPI端口的有效电平。例如,一个端口的中断有效电平被设置成高电平时,当高电平到达该端口时,GPI中断就会被触发,低电平中断的设置也是如此。

GPI数据和中断状态可以由GPIO的中断和数据状态寄存器中获得,当在进行软件设置的时候,有一点是必须得注意的,就是中断可能会在相关寄存器设置完成后马上被触发。为了防止这种情况,正确的逻辑电平是必须的,还有GPIO的中断触发电平必须的GPIO中断使能之前进行设置,如下图展现了GPI中断产生的原理,Dx表示18个GPIO口中的任意一个。

通过上图可知,要产生GPI中断,首先得设置三个寄存器,第一个是CFG寄存器,该寄存器可用于GPI中断使能,寄存器的内容如下图:

设置该寄存器中的GPI_IEN位为1,使能GPI中断。、

第二个寄存器是GPIO_DIRx寄存器,该寄存器用于设置端口的方向,使寄存器上输入端口对应位置的值为0,则该端口被设置成输入端口,之前介绍GPO的时候有说到,这时便不再详说。

第三个寄存器是GPIO_INT_LVLx,该寄存器用于设置端口的中断触发电平,寄存器内容如下图:

当某一位被设置成0时,中断触发电平为低电平,为1时中断触发电平为高电平。通过以上规则进行设置即可。

设置了以上三个寄存器后,这时如果有GPI中断触发,我们的主处理器就可以读取GPIO_INT_STATx寄存器的值,该寄存器内容如下:

该寄存器包含了18个端口对应的中断状态,当某端口有中断触发时,该端口对应的值为1,当主处理器对该寄存器进行读取时,也同时将中断状态给清除掉,为一次触发作准备。清除了端口的中断,我们还得清除芯片的中断检测状态,即GPI_INT,该标志定义在INT_STAT寄存器中,如下图:

由图可知,同样可以通过对GPI_INT位进行写1操作来清除它。

以上就是ADP5588的GPI中断产生的原理啦,呵,仅供参考。