Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466506
  • 博文数量: 100
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 955
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-21 09:30
文章分类

全部博文(100)

文章存档

2017年(1)

2016年(16)

2015年(83)

我的朋友

分类: 嵌入式

2015-07-02 11:32:23

我们来看看linux 3.10中三星的GPIO寄存器配置方法
我们先看看最前面的    
#define S5PV210_GPA1(_nr)    (S5PV210_GPIO_A1_START + (_nr))

S5PV210_GPIO_A1_START    = S5PV210_GPIO_NEXT(S5PV210_GPIO_A0),

因为    #define S5PV210_GPIO_NEXT(__gpio) \
    ((__gpio##_START) + (__gpio##_NR) + CONFIG_S3C_GPIO_SPACE + 1)
    
S5PV210_GPIO_A1_START    = S5PV210_GPIO_NEXT(S5PV210_GPIO_A0)
                        = ((S5PV210_GPIO_A0_START) + (S5PV210_GPIO_A0_NR) + CONFIG_S3C_GPIO_SPACE + 1)
                        = 0 + 8 + 0 + 1
                        = 9
                        
S5PV210_GPIO_A0_START=0不用管
那么S5PV210_GPA1(3) = (S5PV210_GPIO_A1_START + (3))
                    = 9+3
                    = 12
                    
                    
我们来看芯片手册GPIO部分
?GPA0: 8 in/out port - 2xUART with flow control
?GPA1: 4 in/out port - 2xUART without flowcontrol or 1xUART with flow control
?GPB: 8 in/out port - 2x SPI

这说明S5PV210_GPA1(3)=12意思是GPA1_3是s5pv210的第12个IO,linux把cpu的所有GPIO当作统一编址的设备,GPA0_0地址是1,GPA1_3地址是12
根据芯片手册,我们得知,s5pv210的每个IO口占用4bitGPxCON,1bitGPxDAT,4bitGPxDRV
而每组IO口必定有CON、DAT、DRV、CONPDN、PUDPDN5个寄存器
阅读(2051) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~