加入收藏 | 设为首页 | 会员中心 | RSS
您当前的位置:首页 > Linux技术 > 编程开发

Linux内核头文件中关于s3c2410 GPIO的宏

时间:2008-06-06 10:55:52  来源:  作者:

一、GPIO寄存器定义

1.#define GPCON(x)   __REG2(0x56000000, (x) * 0x10)

这句是定义2410的GPIO的控制寄存器,注意:__REG2的参数是寄存器的物理地址,这个物理地址经_REG2宏转换为虚拟地址,对照2410的手册可以得到一下对应关系:

GPCON(1) ------ PORT A  0x56000000

GPCON(2) ------ PORT B  0x56000010

GPCON(3) ------ PORT C  0x56000020

  .           .           .         .

  .           .           .         .

  .           .           .         .

GPCON(8) ------ PORT H  0x56000070

2.#define GPDAT(x)   __REG2(0x56000004, (x) * 0x10)

这句是定义2410的GPIO的数据寄存器,定义方法同GPCON宏。

GPDAT(1) ------ PORT A  0x56000004

GPDAT(2) ------ PORT B  0x56000014

GPDAT(3) ------ PORT C  0x56000024

  .           .           .         .

  .           .           .         .

  .           .           .         .

GPDAT(8) ------ PORT H  0x56000074

3.#define GPUP(x)      __REG2(0x56000008, (x) * 0x10)

这句是定义2410的GPIO的上拉电阻屏蔽/激活寄存器,定义方法同GPCON宏。

GPUP(1) ------ PORT A  0x56000008

GPUP(2) ------ PORT B  0x56000018

GPUP(3) ------ PORT C  0x56000028

  .           .           .         .

  .           .           .         .

  .           .           .         .

GPUP(8) ------ PORT H  0x56000078

二、GPIO端口号定义

以GPIO_G12来说明在内核头文件$(KERNEL_INCLUDE)/asm-arm/arch/s3c2410.h中是如何来定义IO port的端口号的。定义GPIO端口主要涉及到以下几个宏:

#define MAKE_GPIO_NUM(p, o)         ( (p << GPIO_PORT_SHIFTT) |  /

(o << GPIO_OFS_SHIFT))

#define GPIO_G12               MAKE_GPIO_NUM(PORTG_OFS, 12)

GPIO_PORT_SHIFTT值为8,代表GPIO组号在整个GPIO端口号(如GPIO_G12)字段中的位移

GPIO_OFS_SHIFT值为0,代表GPIO组内偏移号在整个GPIO端口号(如GPIO_G12)字段中的位移

   s3c2410有117个多功能input/output port pins。分为以下八组:

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门