S3C2410多功能复用I/O口


S3C2410A共有117个多功能复用输入/输出口(I/O口),分为8组,即PORTA~PORT H,8组I/O口按照其位数的不同,可分为:

1个23位输出口(PORT A)2个11位I/O口(PORT B和PORT H)4个16位I/O口(PORT C、PORT D、PORT E和PORT G)1个8位I/O口(PORT F)

具体的I/O口配置见S3C2410A芯片手册

    在S3C2410A中,大部分引脚都是复用的,所有需要对每一个引脚定义其功能。为了使用I/O口,首先也要定义引脚的功能。配置这些端口,是通过设置一系列寄存器来实现的。与配置I/O都相关的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口数据寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、杂项控制寄存器以及外部中断屏蔽寄存器(EXTINTN)等。所有GPIO寄存器的值在掉电模式下都会被保存。外部中断屏蔽寄存器EINTMASK不能阻止从掉电模式唤醒,但是如果EINTMASK正在屏蔽的是EINT[15:4]中的某位,则可以实现唤醒,不过中断源挂起寄存器SRCPND的位EINT4_7和EINT8_23在刚刚唤醒后不置1。

    端口控制寄存器用于定义每个引脚的功能。如果GPF0~GPF7和GPG0~GPG7用作掉电模式下的唤醒信号,那么这些端口必须在中断模式下配置。

    如果将端口配置为输出口,数据可以写入到端口数据寄存器的相应位中;如果将端口配置为输入口,则可以从端口数据寄存器的相应位中读出数据。

    端口上拉寄存器用于控制每组端口的上拉电阻为禁止还是使能。如果相应位设置为0,则表示该引脚的上拉电阻使能;为1,则表示上拉电阻禁止。如果使能了端口上拉寄存器,则不论引脚配置为哪种功能,上拉电阻都会起作用。

    杂项控制寄存器用于控制数据端口的上拉电阻、高阻状态、USBPad和CLKOUT的选择。

    24个外部中断通过不同的信号被请求。EXTINTn寄存器用于配置这些信号对于外部中断请求采用的是低电平触发、高电平触发、下降沿触发、上升沿触发还是双边沿触发。

下面对相关寄存器的设置分别进行描述:

1.PORT A控制寄存器:

GPACON        地址0x56000000           

                配置A口的引脚,使用位[22:0]

               0:输出引脚

               1:输入引脚

GPADAT         地址0x56000004

               A口的数据寄存器,使用位[22:0]

保留           地址0x56000008 

保留           地址0x5600000C 

2.PORT B控制寄存器:

GPBCON        地址0x56000010

               配置B口的引脚,使用位[21:0]分别对B口的相应11个位进行配置。

               00:输入             01:输出

                10:功能引脚         11:保留

GPBDAT         地址0x56000014

               B口的数据寄存器,使用位[10:0]

GPBUP         地址0x56000018

               B口的上拉电阻禁止寄存器,使用位[10:0]

               1表示禁止       0表示使能

保留           地址0x5600001C 

3.PORT C控制寄存器:

GPCCON        地址0x56000020

               配置C口的引脚,使用位[31:0]分别对C口的相应16个位进行配置。

               00:输入             01:输出

                10:功能引脚         11:保留

GPCDAT         地址0x56000024

               C口的数据寄存器,使用位[15:0]

GPCUP         地址0x56000028

               C口的上拉电阻禁止寄存器,使用位[15:0]

               1表示禁止       0表示使能

保留           地址0x5600002C 

4.PORT D控制寄存器:

GPDCON        地址0x56000030

               配置D口的引脚,使用位[31:0]分别对D口的相应16个位进行配置。

               00:输入             01:输出

                10:功能引脚         11:保留/另一功能引脚

GPDDAT         地址0x56000034

               D口的数据寄存器,使用位[15:0]

GPDUP         地址0x56000038

               D口的上拉电阻禁止寄存器,使用位[15:0]

               1表示禁止       0表示使能

保留           地址0x5600003C 

5.PORT E控制寄存器:

GPECON        地址0x56000040

               配置E口的引脚,使用位[31:0]分别对E口的相应16个位进行配置。

               00:输入             01:输出

                10:功能引脚         11:保留/另一功能引脚

GPEDAT         地址0x56000044

               E口的数据寄存器,使用位[15:0]

GPEUP         地址0x56000048

               E口的上拉电阻禁止寄存器,使用位[15:0]

               1表示禁止       0表示使能

保留           地址0x5600004C 

6.PORT F控制寄存器:

GPFCON        地址0x56000050

               配置F口的引脚,使用位[15:0]分别对F口的相应8个位进行配置。

               00:输入             01:输出

                10:功能引脚         11:保留

GPFDAT         地址0x56000054

               F口的数据寄存器,使用位[7:0]

GPFUP         地址0x56000058

               F口的上拉电阻禁止寄存器,使用位[7:0]

               1表示禁止       0表示使能

保留           地址0x5600005C 

7.PORT G控制寄存器:

GPGCON        地址0x56000060

               配置G口的引脚,使用位[31:0]分别对G口的相应16个位进行配置。

               00:输入             01:输出

                10:功能引脚         11:保留/另一功能引脚

GPGDAT         地址0x56000064

               G口的数据寄存器,使用位[15:0]

GPGUP         地址0x56000068

               G口的上拉电阻禁止寄存器,使用位[15:0]

               1表示禁止       0表示使能

保留           地址0x5600006C 

8.PORT H控制寄存器:

GPHCON        地址0x56000070

               配置D口的引脚,使用位[21:0]分别对D口的相应11个位进行配置。

               00:输入             01:输出

                10:功能引脚         11:保留/另一功能引脚

GPHDAT         地址0x56000074

               H口的数据寄存器,使用位[10:0]

GPHUP         地址0x56000078

               H口的上拉电阻禁止寄存器,使用位[10:0]

               1表示禁止       0表示使能

保留           地址0x5600007C 

9.杂项控制寄存器:

MISCCR         地址0x56000080

               控制数据端口的上拉电阻、高阻状态、USB Pad和CLKOUT的选择

10.DCLK控制寄存器:

DCLKCON       地址0x56000084

               DCLK0/1控制寄存器,位[27:16]控制DCLK1,位[11:0]控制DCLK0

11.外部中断控制寄存器:

EXTINT0       地址0x56000088

EXTINT1       地址0x5600008C

EXTINT2       地址0x56000090

12.外部中断滤波寄存器:

EINTFLT0       地址0x56000094

EINTFLT1       地址0x56000098

EINTFLT2       地址0x5600009C

                控制EINT19~EINT16的滤波时钟和滤波宽度            

EINTFLT3       地址0x560000A0

               控制EINT23~EINT20的滤波时钟和滤波宽度

13.外部中断屏蔽寄存器:

EINTMASK       地址0x560000A4

               使用位[23:4]分别对EINT23~EINT4设置是否屏蔽相应中断

                0:使能中断         1:屏蔽中断

14.外部中断挂起寄存器:

EINTPEND      地址0x560000A8

               使用位[23:4]分别对EINT23~EINT4设置是否请求中断挂起

                0:不请求挂起         1:请求挂起

15.通用状态寄存器:

GSTATUS0      地址0x560000AC

               外部引脚状态

GSTATUS1      地址0x560000B0

               芯片ID

GSTATUS2      地址0x560000B4

               复位状态

GSTATUS3      地址0x560000B8

               通知(Inform)寄存器。可被复位信号nRESET或看门狗定时器清零

GSTATUS4      地址0x560000BC

               通知(Inform)寄存器。可被复位信号nRESET或看门狗定时器清零

相关内容