ADP5588入门以及GPO使用
1赞最近在设计一种便携式设备,需要用到大量的GPIO端口,而选择的处理器的GPIO端口又是非常有限的,所以必须选择一种IO扩展芯片,最后我选择了ADP5588 IO扩展和全键盘控制器,既可以作为便携式设备的键盘,剩下的也可以作为IO口扩展。下面对其进行具体介绍:
ADP5588是一种键盘扩展芯片和IO扩展芯片,通过IIC接口,ADP5588可以扩展出18个GPIO或者一个10*8矩阵键盘,非常适用于GPIO数量比较有限的主处理器。下面先说说它的特性:
1.18个GPIO扩展口或10*8的矩阵键盘;
2.所有的GPIO均能配置成GPI、GPO、键盘的行或者列;
3.两个光敏传感器输入口C8和C9,而且只有这两个端口可以作为光敏输入;
4.IIC通信接口,符合标准的IIC接口协议;
5.1.5V~3.0V工作电压;
6.中断端口开漏输出;
7.按键按下和释放的中断检测;
8.GPI输入中断触发方式设置,可以设置成高电平或者低电平触发;
9.所有的GPIO均可设置上拉属性;
10.4mm*4mm的小型LFCSP封装;
11.具有按键事件计数功能和溢出中断功能;
12.当处于空闲状态时,电流为1uA,当芯片在检测键盘动作时,电流为55uA,消耗电流极少,非常适合便携式设备。
说完特性,再看其管脚分配,如下图为ADP5588的功能块框架图:

1. R0~R7为其矩阵键盘行信号输入端口,连接到矩阵键盘的行端口,也可作为GPIO端口;
2. C0~C7为其矩阵键盘列信号输入端口,连接到矩阵键盘的列端口,也可作为GPIO端口;
3. C8和C9可作为矩阵键盘的列信号输入端口,连接矩阵键盘的列端口,也可作为GPIO端口,还可作为光敏传感器输入端口。
4. VCC和GND为电源端口和地端口;
5. SCL和SDA端口连接到主处理器的IIC接口,主处理器通过IIC接口对该芯片进行控制;
6. RST为芯片的复位输入端口;
7. INT为芯片的中断输出端口,连接到主处理器的中断输入端口,当有中断事件触发时,该端口会输出特定信号。
ADP5588的功能是非常强大,今天主要是对其GPO功能进行学习,该芯片最多支持18个GPO输出口,分别是R0~R7和C0~C9,通过对其相关寄存器进行设置,可以输出高低电平。下图为其GPIO模块的框架图:

从上图我们可以知道,当作为GPO端口时,需要对Dx_OUT寄存器和Dx_DIR寄存器进行设置,下面是将端口作为GPO的使用步骤:
1 . 通过IIC接口设置KP_GPIOx寄存器,如下图为该寄存器的内容,由图中可知,当设置为0时,该位对应的端口作为GPIO功能使用,当设置为1时,该位对应的端口作为矩阵键盘功能使用。于是我们将要作为GPIO功能的端口对应的寄存器位设置成0,将其作为GPIO功能使用。

2.设置GPIO_DIRx寄存器,该寄存器用于设置GPIO端口方向属性,如下图为其具体内容:

由上图可知,将对应位的值设置成1可将对应端口作为输出端口使用。
3.设置GPIO_DAT_OUTx寄存器,如下图为该寄存器具体内容:

通过寄存器赋值,可对R0~R7和C0~C9端口分别输出高低电平,设置为0则对应端口输出低电平,设置为1则对应端口输出高电平。
通过以上三步,就可以通过IIC接口扩展出18个输出端口,并且高低电平可以自由设置。
今天就学习到这里,算是对ADP5588有一个比较基础的认识吧。仅供参考,呵呵。
