[信息与通信]ARM硬件结构设计2IO口第5讲.ppt
,S3C44B0X 通用I/O口原理与应用 I/O接口电路是主机和外围设备之间交换信息的连接部件(电路)。它在主机和外围设备之间的信息交换中起着桥梁和纽带作用。,解决CPU和外围设备之间的时序配合和 通信联络问题。b)解决CPU和外围设备之间的数据格式转换 和匹配问题。c)解决CPU的负载能力和外围设备端口选择 问题。,.1 S3C44B0X I/O端口,处理器通过I/O口和外围硬件相连接I/O口通常和其他引脚复用S3C44B0X 有71个多功能I/O口S3C44B0X 的I/O口功能配置由特殊功能寄存器配置,多功能I/O引脚,各端口必须在主程序开始前定义对每个I/O端口的配置一般按照以下步骤1 根据应用需要设置控制寄存器,确定各个端口的具体功能;2 首先根据具体应用对端口数据寄存器设置相应的值;3 根据需要设置上拉电阻寄存器。,.2 S3C444B0X 端口功能概述,S3C44B0X 71个通用可编程多功能输入/输出端口引脚,可分为7类:二个9位输入/输出(PORT E,PORT F)二个8位输入/输出(PORT D,PORT G)一个16位输入/输出(PORT C)一个10位输出端口(PORT A)一个11位输出端口(PORT B),端口A:可定义为 功能1:Output only功能2;ADDR24-16,ADDR0.默认为功能2端口B:可定义 功能1 Output only 功能2 nGCS5-1,nWBE2-3,nBE2-3,DQM2-3,nSRAS,nSCAS,nCAS SCLK,SCKE 默认为功能2,端口C:可定义为 功能1:Input/Output 功能2:DATA16-31 功能3:nCTS0,RxD1,VD4-7等,端口D:功能1:Input/Output 功能2:VLINE,VCLK,VD3-VD0 VFRAME,VM等端口E:功能1:Input/Output 功能2:CODECLK,TOUT4-0 RXD0,TXDO 功能3:VD7-6,TCLK,端口F:功能1:Input/Output 功能2:RXD1,TXD1,Nrts1 I2CSDA,I2CSCL等 功能3:SIOCK,SIORXD等 功能4:IISCLK,IISDI,IISDO,端口G:功能1 Input/Output 功能2 IISLRCK,IISDO,IISDI,nRTS0,nCTS0,VD5,VD4 功能3 EINT7-EINT0,.3 S3C44B0X端口功能配置,每个端口都可通过软件设置来满足各种各样的功能设置和设置要求。每个端口的功能通常都要在主程序开始前被定义。在引脚配置之前,需要对引脚的初始化状态进行设定,以避免一些问题的出现。,端口选择:从上述端口功能看,在一般的应用中,PA作为地址线使用.PB作为BANK选择线和SDRAM的接口信号线使用.PC可作为数据线,IIS接口或LCD数据线等使用.在系统具备LCD时,PD主要作为LCD的信号线使用.PE可作为串口信号线和定时器输出使用.PF和PG则是多功能I/O口.,.4 S3C44B0X端口功能控制,I/O端口的各种功能主要是通过对端口各个寄存器进行设置而实现的:(1)端口配置寄存器(PCON:A-G)在S3C44B0X中,大多数引脚都是多功能引脚,因此,应为每个引脚选择功能。端口控制寄存器(PCON n)决定了每一个引脚的功能。A-G每个具有相应的地址,属性,初始值,例如:端口B控制寄存器PCON B 地址:0X01D20008 配置寄存器 R/W 初始值:0X7FF位10:6如果是 0=OUT 1=nGCS5-nGCS1,(2)端口数据寄存器(PDAT:A-G)PDAT A 地址:0X01D20004 R/W PDAT B 地址:0X01D2000C R/W 如果这些端口被设定为输出端口,则输出数据可被写到PDAT n的相应位;如果被设定为输入端口,则能够从这些端口(PDAT n)的相应位读到这些数据。A-G每个具有相应的地址,属性,初始值,(3)上拉电阻配置(PUP:C-G)0:允许上拉电阻连接到对应引脚.1:对应引脚不连接上拉电阻.C-G 每个具有相应的地址,属性,初始值 端口上拉寄存器控制着每一个端口组的上拉寄存器的使能端。当相应的位被设为0时,引脚接上拉电阻;当相应的位为1时,引脚不接上拉电阻。,(4)特殊的上拉电阻控制寄存器(SPUCR)数据线D15:0引脚的上拉电阻能够通过SPUPCR寄存器控制。在STOP/SL-IDLE模式里,数据线(D31:0或D15:0)处于高阻状态。由于I/O端口的特征,数据线上拉电阻可以降低功耗。D31:16引脚的上拉电阻能够通过PUPC寄存器来控制;D15:0 引脚上拉电阻能够通过SPUCR寄存器来控制。,.5 I/O接口的编址方式端口映射,1)I/O接口独立编址端口映射方式 这种编址方式是将存储器地址空间和I/O接口地址空间分开设置,互不影响。设有专门的输入指令(IN)和输出指令(OUT)来完成I/O操作。,主要优点:内存地址空间与I/O接口地址空间分开,互不影响,译码电路较简单,并设有专门的I/O指令,所以编程序易于区分,且执行时间短,快速性好。缺点:只用I/O指令访问I/O端口,功能有限且要采用专用I/O周期和专用I/O控制线,使微处理器复杂化。,I/O接口的编址方式内存映射,2)I/O接口与存储器统一编址方式内存映射 该方式不区分存储器地址空间和I/O接口地址空间,把所有的I/O接口的端口都当作是存储器的一个单元对待,每个接口芯片都安排一个或几个与存储器统一编号的地址号。也不设专门的输入/输出指令,所有传送和访问存储器的指令都可用来对I/O接口操作。,主要优点:访问内存的指令都可用于I/O操作,数据处理功能强;同时I/O接口可与存储器部分共用译码和控制电路。缺点:一是I/O接口要占用存储器地址空间的一部分;二是因不用专门的I/O指令,程序中较难区分I/O操作。,ARM系统完成I/O功能的标准方法是使用存储器映射I/O。这种方法使用特定的存储器地址。当从这些地址加载或向这些地址存储时,它们提供I/O功能。典型情况下,从存储器映射I/O地址加载用于输入,而向存储器映射I/O地址存储用于输出。,寄存器使用举例:C语言编写的对I/O口端口初始化程序片段#define rpcona(*(volatile unsigned*)0 x1d20000)#define rpdat a(*(volatile unsigned*)0 x1d20004)#define rpconb(*(volatile unsigned*)0 x1d20008)#define rpdat b(*(volatile unsigned*)0 x1d2000c)#define rpconc(*(volatile unsigned*)0 x1d20010)#define rpdat c(*(volatile unsigned*)0 x1d20014),#define rpup c(*(volatile unsigned*)0 x1d20018)#define rpcond(*(volatile unsigned*)0 x1d2001c)#define rpdatd(*(volatile unsigned*)0 x1d20020)#define rpupd(*(volatile unsigned*)0 x1d200024)#define rpcone(*(volatile unsigned*)0 x1d20028)#define rpdat e(*(volatile unsigned*)0 x1d2002c)#define rpupe(*(volatile unsigned*)0 x1d200030),#define rpconf(*(volatile unsigned*)0 x1d200034)#define rpdat f(*(volatile unsigned*)0 x1d200038)#define rpupf(*(volatile unsigned*)0 x1d20003c)#define rpcong(*(volatile unsigned*)0 x1d200040)#define rpdat g(*(volatile unsigned*)0 x1d200044)#define rpupg(*(volatile unsigned*)0 x1d200048)#define rspucr(*(volatile unsigned*)0 x1d20004c)#define rEXTINT(*(volatile unsigned*)0 x1d200050)#define rEXTINTPND(*(volatile unsigned*)0 x1d200054),Void Port_int(void)/BUSWIDTH=16,数据总线配置16位/A组端口 ADD24.ADD16,ADD0/1 1.1 1 1rPCON A=0X3ff;/A口被定义功能2 PCONA9:0 0:功能1输入;1:功能2地址PDATA9:0 端口定义为输出时,引脚状态与对应位相同 端口定义为功能引脚时,读入无意义,/B组端口/out,out,nGCS3,nGCS2,nGCS1,nWBE3,nWBE2-0 0 1 1 1 1 1-nSRAS,Nscas,SCLK,CKKE 1 1 1 1rPCON B=0X1ff;PCONB10:0 0:功能1;1:功能2PDATB 10:0 端口定义为输出时,引脚状态与对应为相同 端口定义为功能引脚时,读入无意义,/C组端口#if(BUSWIDTH=32)/D31 D30 D16 10 10 10rPCONC=0Xaaaaaaaa;rPUPC=0Xffff;#else/(BUSWIDTH=16),设C组全部作输入,0X0;rPDAT C=0X0 rPCON C=0X00000000 r PUPC=0X000,PCON C 00:input;01:output 10:DATA 11:功能4PC0 1:0 00:input;01:output 10:DATA16;11:IISLRCKPC1 1:0 00:input;01:output 10:DATA17;11:IISDOPC15 31:30 00:input;01:output 10:DATA31;11:nCTS0,#endif/G组端口,作为EINT7:0/0XFFFFrPCONG=0XFFFF;rPUPG=0X0;rSPUCR=0X7rEXTINT=0X22222222;/EINT7:0,下降沿触发,PCON GPG0 1:0 00:input;01:output 10:VD4;11:EINT0PG1 3:2 00:input;01:output 10:VD5;11:EINT1PG7 1:0 00:input;01:output 10:IISLRCK;11:EINT7,PDAT GPG7:0 端口被设置为输入,对应位与引脚状态相同 端口被设置为输出,引脚状态与对应位相同 端口被设置为功能引脚,读入值无意义PUP GPG 7:0 0:允许上拉电阻连接到对应端口引脚;1:上拉电阻被禁止,.5 键盘,1.键盘电路 4X4 采用PF端口作为键盘接口,设定PF0-PF3 为输出口(列线),PF4-PF7为输入口(行线).寄存器设置 程序中首先通过设置PCON F寄存器,来实现端口功能配置,然后在设置PDAT F,PUP F寄存器.,44键盘接口电路,通过片选信号nGCS3来选通,步骤:(1).设置PCON F:地址 0X01D20034 rPCON F=000 000 000 000 00 01 01 01 01B=0X55 PF8 PF7 PF6 PF5 PF4 PF3 PF2 PF1 PF0(2).设置PDAT F:地址 0X01D20038 PF0-3 作为输出 PDAT F=0XF0;/PF0-3全写0PF4-7 作为输入口,该位的值是对应的引脚的状态.读入键值时,采用语句Keyvalue=(rPDAT F&0 xf0)4;判定有否键按下,识别哪一个键按下:设:PF3-0,1110=E,判PF7-4状态 1101=D,判PF7-4状态(3).设置PUP F寄存器设置内部上拉电阻的语句rPUP F=0X00;/使能PF0 7 的内部 上拉电阻,结 束,