第十七讲GPIO接口河南大学计算机与信息工程学院授课人:金勇联系电话:13598785920Email:jy@henu.edu.cn计算机专业核心课程之一GPIO接口GPIO概述GPIO结构S3C2410中的GPIOGPIO编程23•GPIO,General-PurposeIOports,通用输入输出口•“通用可编程IO接口”的寄存器控制寄存器:为输入、输出、或其它特殊功能数据寄存器:1或0上拉寄存器:设置IO的输出模式是高阻,还是带上拉的电平输出,或者不带上拉的电平输出•【例】控制某个LED灯亮与灭–设置该IO控制寄存器为输出功能–设置该IO数据寄存器为高电平或低电平。GPIO概述4•S3C2410共有117个多功能的输入/输出引脚,它们分为8组I/O端口:①1个23位的输出端口(端口A)②2个11位的输入/输出端口(端口B、H)③4个16位的输入/输出端口(端口C、D、E、G)④1个8位的输入/输出端口(端口F)GPIO控制器5–端口控制寄存器(GPACON-GPHCON)•在S3C2410X中,大多数的引脚都复用,所以必须对每个引脚进行配置。端口控制寄存器(GPnCON)定义了每个引脚的功能。–端口数据寄存器(GPADAT-GPHDAT)•如果端口被配置成了输出端口,可以向GPnDAT的相应位写数据。如果端口被配置成了输入端口,可以从GPnDAT的相应位读出数据。–端口上拉寄存器(GPBUP-GPHUP)•端口上拉寄存器控制了每个端口组的上拉电阻的允许/禁止。如果某一位为0,相应的上拉电阻被允许;如果是1,相应的上拉电阻被禁止。•如果端口的上拉电阻被允许,无论在哪种状态(INPUT、OUTPUT、DATAn、EINTn等)下,上拉电阻都起作用。GPIO控制器端口寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPnCON0x560000x0R/W端口n配置寄存器XGPnDAT0x560000x4R/W端口n数据寄存器XGPnUP0x560000x8R/W端口n上拉寄存器XRESERVED0x560000xCR/W端口n保留寄存器-GPIO控制器GPADAT寄存器为准备输出的数据其值为23位[22:0]注意:(1)当A口引脚配置为非输出功能时,其输出无意义;(2)从引脚输入没有意义。1、端口A寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPACON0x56000000R/W端口A引脚配置寄存器0x7FFFFFGPADAT0x56000004R/W端口A数据寄存器-RESERVED0x56000008-端口A保留寄存器-RESERVED0x5600000C-端口A保留寄存器-位号位名位值:01位号位名位值:0122GPA22输出nFCE10GPA10输出ADDR2521GPA21输出nRSTOUT9GPA9输出ADDR2420GPA20输出nFRE8GPA8输出ADDR2319GPA19输出nFWE7GPA7输出ADDR2218GPA18输出ALE6GPA6输出ADDR2117GPA17输出CLE5GPA5输出ADDR2016GPA16输出nGCS54GPA4输出ADDR1915GPA15输出nGCS43GPA3输出ADDR1814GPA14输出nGCS32GPA2输出ADDR1713GPA13输出nGCS21GPA1输出ADDR1612GPA12输出nGCS10GPA0输出ADDR011GPA11输出ADDR261、端口A寄存器及引脚配置GPA某位设为0,则为输出引脚,往GPADAT写0/1,引脚输出低电平/高电平。GPA某位设为1,相应引脚为地址线/地址控制线,GPADAT此时无效。GPACON通常全部设为1,也即0x7FFFFF,以便访问外部存储器件。91、端口A寄存器及引脚配置端口A的使用GPBDAT---为准备输出或输入的数据其值为11位[10:0]GPBUP---端口B上拉寄存器,位[10:0]有意义。0:对应引脚设置为上拉1:无上拉功能2、端口B寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPBCON0x56000010R/W端口B引脚配置寄存器0x0GPBDAT0x56000014R/W端口B数据寄存器-GPBUP0x56000018R/W端口B上拉寄存器0x0RESERVED0x5600001C-端口B保留寄存器-位号位名位值:0001101121,20GPB10输入输出nXDREQ0Reserved19,18GPB9输入输出nXDACK0Reserved17,16GPB8输入输出nXDREQ1Reserved15,14GPB7输入输出nXDACK1Reserved13,12GPB6输入输出nXBACKReserved11,10GPB5输入输出nXBREQReserved9,8GPB4输入输出TCLK0Reserved7,6GPB3输入输出TOUT3Reserved5,4GPB2输入输出TOUT2Reserved3,2GPB1输入输出TOUT1Reserved1,0GPB0输入输出TOUT0Reserved2、端口B寄存器及引脚配置GPCDAT---为准备输出或输入的数据其值为16位[15:0]GPCUP---端口C上拉寄存器,位[15:0]有意义。0:对应引脚设置为上拉1:无上拉功能3、端口C寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPCCON0x56000020R/W端口C引脚配置寄存器0x0GPCDAT0x56000024R/W端口C数据寄存器-GPCUP0x56000028R/W端口C上拉寄存器0x0RESERVED0x5600002C-端口C保留寄存器-位号位名位值位号位名位值000110110001101131,30GPC15输入输出VD7保留15,14GPC7输入输出LCDVF2保留29,28GPC14输入输出VD6保留13,12GPC6输入输出LCDVF1保留27,26GPC13输入输出VD5保留11,10GPC5输入输出LCDVF0保留25,24GPC12输入输出VD4保留9,8GPC4输入输出VM保留23,22GPC11输入输出VD3保留7,6GPC3输入输出VFRAME保留21,20GPC10输入输出VD2保留5,4GPC2输入输出VLINE保留19,18GPC9输入输出VD1保留3,2GPC1输入输出VCLK保留17,16GPC8输入输出VD0保留1,0GPC0输入输出VEND保留3、端口C寄存器及引脚配置GPDDAT---为准备输出或输入的数据其值为16位[15:0]GPDUP---端口D上拉寄存器,位[15:0]有意义。0:对应引脚设置为上拉1:无上拉功能初始化时,[15:12]无上拉功能,而[11:0]有上拉4、端口D寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPDCON0x56000030R/W端口D引脚配置寄存器0x0GPDDAT0x56000034R/W端口D数据寄存器-GPDUP0x56000038R/W端口D上拉寄存器0xF000RESERVED0x5600003C-端口D保留寄存器-位号位名位值位号位名位值000110110001101131,30GPD15输入输出VD23nSS015,14GPD7输入输出VD15保留29,28GPD14输入输出VD22nSS113,12GPD6输入输出VD14保留27,26GPD13输入输出VD21保留11,10GPD5输入输出VD13保留25,24GPD12输入输出VD20保留9,8GPD4输入输出VD12保留23,22GPD11输入输出VD19保留7,6GPD3输入输出VD11保留21,20GPD10输入输出VD18保留5,4GPD2输入输出VD10保留19,18GPD9输入输出VD17保留3,2GPD1输入输出VD9保留17,16GPD8输入输出VD16保留1,0GPD0输入输出VD8保留4、端口D寄存器及引脚配置GPEDAT---为准备输出或输入的数据其值为16位[15:0]GPEUP---端口E上拉寄存器,位[15:0]有意义。0:对应引脚设置为上拉1:无上拉功能初始化时,各个引脚都有上拉功能。5、端口E寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPECON0x56000040R/W端口E引脚配置寄存器0x0GPEDAT0x56000044R/W端口E数据寄存器-GPEUP0x56000048R/W端口E上拉寄存器0x0RESERVED0x5600004C-端口E保留寄存器-位号位名位值位号位名位值000110110001101131,30GPE15输入输出IICSDA保留15,14GPE7输入输出SDDAT0保留29,28GPE14输入输出IICSCL保留13,12GPE6输入输出SDCMD保留27,26GPE13输入输出SPICLK0保留11,10GPE5输入输出SDCLK保留25,24GPE12输入输出SPISI0保留9,8GPE4输入输出IISSDO保留23,22GPE11输入输出SPISO0保留7,6GPE3输入输出IISSDI保留21,20GPE10输入输出SDDAT3保留5,4GPE2输入输出CDCLK保留19,18GPE9输入输出SDDAT2保留3,2GPE1输入输出IISSCLK保留17,16GPE8输入输出SDDAT1保留1,0GPE0输入输出IISLRCK保留5、端口E寄存器及引脚配置GPFDAT---为准备输出或输入的数据其值为8位[7:0]GPFUP---端口F上拉寄存器,位[7:0]有意义。0:对应引脚设置为上拉1:无上拉功能初始化时,各个引脚都有上拉功能。6、端口F寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPFCON0x56000050R/W端口F引脚配置寄存器0x0GPFDAT0x56000054R/W端口F数据寄存器-GPFUP0x56000058R/W端口F上拉寄存器0x0RESERVED0x5600005C-端口F保留寄存器-位号位名位值0001101115,14GPF7输入输出EINT7保留13,12GPF6输入输出EINT6保留11,10GPF5输入输出EINT5保留9,8GPF4输入输出EINT4保留7,6GPF3输入输出EINT3保留5,4GPF2输入输出EINT2保留3,2GPF1输入输出EINT1保留1,0GPF0输入输出EINT0保留6、端口F寄存器及引脚配置GPGDAT---为准备输出或输入的数据其值为16位[15:0]GPGUP---端口G上拉寄存器,位[15:0]有意义。0:对应引脚设置为上拉1:无上拉功能初始化时,[15:11]引脚无上拉功能,其它引脚有。7、端口G寄存器及引脚配置RegisterAddressR/WDescriptionResetValueGPGCON0x56000060R/W端口G引脚配置寄存器0x0GPGDAT0x56000064R/W端口G数据寄存器-GPGUP0x56000068R/W端口G上拉寄存器0xF800RESERVED0x5600006C-端口G保留寄存器-位号位名位值位号位名位值000110110001101131,30GPG15输入输出EINT23nYPON15,14GPG7输入输出EINT15SPICLK129,28GPG14输入输出EINT22YMON13,12GPG6输入输出EINT14SPISI127,26GPG13输入输出EINT21nXPON11,10GPG5输入输出EINT13SPISO125,24GPG12输入输出EINT20XMON9,8GPG4输入输出EINT12LCD-PEN23,22GPG11输入输出EINT