ARM9硬件接口 GPIO

GPIO口一是个比较重要的概念,用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。GPIO口的使用非常广泛。
S3C2410一共有GPA到GPH 8个GPIO口、117个pins。

The S3C2410A has 117 multi-functional input/output port pins. The ports are:
— Port A (GPA): 23-output port
— Port B (GPB): 11-input/output port
— Port C (GPC): 16-input/output port
— Port D (GPD): 16-input/output port
— Port E (GPE): 16-input/output port
— Port F (GPF): 8-input/output port
— Port G (GPG): 16-input/output port
— Port H (GPH): 11-input/output port

这些I/O Ports大部分是复用的,通常可以用作为输入口(input)、输出口(output)以及特殊功能口(如中断信号)。通过相应口的配置寄存器 (GPxCON)可以选择配置为不同的功能。配置好GPIO口的功能后就可以在相应数据寄存器GPxDAT读/写数据,GPxUP用于确定是否使用内部上 拉电阻。
(注:上拉电阻作用为当I/O PORTS被定义为input口时,为了避免信号干扰产生不正确的值,通常会使用上拉电阻。)
当引脚设为输入时,读此寄存器可知相应引脚的状态是高是低;当引脚设为输出时,写此寄存器相应位可令此引脚输出低电平或高电平。GpxUP:某位为0时,相应引脚无内部上拉;为1时,相应引脚使用内部上拉。
注:S3c2410各个GPIO口的地址和作用参考Datasheet第9章 I/O PORTS。

小键盘控制LED灯显示实验:
当K1-K4中某个按键按下时,LED1-LED4中相应LED点亮。
要完成这个实验,我们可以分为两步:
一.看懂发板电路图,确定使用到哪些CPU引脚

上面是我开发板armsys2410 LED部分对应的电路图。从图中可以看出,armsys2410 LED0-LED3分别对应I/O口GPF4-GPF7。
那如何控制LED灯亮灭呢?同样可以在电路图中看出。LED二极管左边为高电压(VDD33V),因此只要在LED右边对应的GPF口引脚输入低电平,导通电路,LED就可以亮了。即要使某个灯亮,就使对应引脚输出一个低电平(灭:高电平)。

这里是小键盘K1-K4部分对应的电路图。查看GPIO datasheet部分可以知道,EINT0对应GPF0,EINT2对应GPF2,EINT19对应GPG11。即K1对应GPF0、K2对应GPF2、K3对应GPG3   、K4对应GPG11。

二.配置对应的GPIO口
配置小键盘KEY1-KEY4对应的GPIO口为输入口,通过读取该口对应的状态信号,可以判断按键有没按下。配置LED0-LED3对应的GPIO口为输出口。通过输入数据控制LED灯闪灭。下面就是通过对寄存器赋相应的值控制LED显示了。

你可能感兴趣的:(硬件相关)