歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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或看門狗定時器清零

Copyright © Linux教程網 All Rights Reserved