GPIO硬件介绍
GPIO(General Purpose I/O Ports)意为通用输入输出端口,也就是一些引脚,通过它们输出高低电平或者通过它们读入引脚的状态——高电平还是低电平。
在S3C6410芯片中,包含187个引脚,有17个端口,分别是GPA,GPB,…,GPQ。可以通过设置寄存器来确定某个引脚是用于输入、输出还是其他特殊功能。
通过寄存器来操作GPIO引脚
既然一个引脚可以用于输入、输出和其他功能,那么一定有寄存器用来选择这些功能;对于输入,一定可以通过读取某个寄存器的值来确定引脚是高电平还是低电平;对于输出,则可以通过将高低电平写入某个寄存器实现。
在S3C6410中,每个端口有GP*CON,GP*DAT,GP*PUD,GP*CONSLP,GP*PUDSLP四种寄存器(PS:在GPK中,有GPKCON0和GPKCON1两组,有的可能只有四种中的几个,详见用户手册)。
GP*CON
即configuration,用于配置该端口中每个引脚的功能。如果当前位被用于输出,则可以在DAT寄存器中对应位写入0或1使得该引脚输出低或高电平;如果当前位被用作输入,此时DAT无用。
GP*DAT
该寄存器用于读写引脚:如果当前引脚被用于输出,则可以在DAT寄存器中对应位写入值使得该引脚输出低或高电平;如果当前引脚被用作输入,此时DAT无用。
GP*PUD
Reserved.
GP*CONSLP
Reserved.
GP*PUDSLP
Reserved.
一个简单的实验
电路图:参照原理图:
可以看出,四个LED分别是GPK4,GPK5,GPK6,GPK7。
再通过芯片手册不难查处GPK中各种寄存器对应的物理地址。
实验代码部分: