GPIO

GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。
在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程I/O端口”,也就是GPIO。

一个GPIO端口至少需要两个寄存器,一个做控制用的“通用IO端口控制寄存器”,还有一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的,通过控制寄存器可以设置每一位引脚的数据流向。
(GPIO相关的寄存器有,IOPIN、IOSET、IOCLR、IODIR四个寄存器。)

在实际应用中,不同微处理器的GPIO是有多种寻址方式的,有的数据寄存器可以按照位寻址,比如8051的一些数据寄存器;有的则不能,比如S3C2440A处理器,不能按照位寻址方式读写数据,在编程时需要注意。还有的微处理器的GPIO端口除了两个标准寄存器外,还提供了上拉寄存器,目的是为了方便一些需要高电平的外部电路,通过这个上拉寄存器可以设置对应的GPIO引脚输出的是高阻模式还是带上拉的电平输出,这样可以简化外部电路的设计。S3C2440A处理器的GPIO端口提供了上拉寄存器。

还需要注意的一点是,对于不同的计算机体系结构,设备的映射方式不同,有的是端口映射,有的是内存映射。如果系统体系结构支持对I/O端口独立编排地址,并且是端口映射的,就只能使用汇编语言实现对设备的控制,因为C语言没有提供“端口”的概念。如果是内存映射方式,就相对方便,通过直接访问某个寄存器的内存映射地址完成对寄存器的访问控制。在S3C2440A中,设备和端口都是映射到内存地址的,通过访问内存地址就可以完成对寄存器的操作。

posted @ 2012-07-18 15:58  zhiweiyouzhishenghuo  阅读(200)  评论(0编辑  收藏  举报