收藏 分享(赏)

第7章--arm系统的io端口设计与管理.ppt

上传人:无敌 文档编号:1155989 上传时间:2018-06-15 格式:PPT 页数:49 大小:740KB
下载 相关 举报
第7章--arm系统的io端口设计与管理.ppt_第1页
第1页 / 共49页
第7章--arm系统的io端口设计与管理.ppt_第2页
第2页 / 共49页
第7章--arm系统的io端口设计与管理.ppt_第3页
第3页 / 共49页
第7章--arm系统的io端口设计与管理.ppt_第4页
第4页 / 共49页
第7章--arm系统的io端口设计与管理.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、第7章 ARM系统的I/O端口设计与管理,7.1 ARM的I/O端口设计概述 7.2 ARM核I/O端口配置 7.3 ARM核I/O端口功能描述 7.4 ARM核I/O端口寄存器控制 7.5 ARM核I/O端口应用编程 7.6 习 题,7.1 ARM的I/O端口设计概述,在嵌入式系统中,通常I/O端口都不是独立的,是和其他接口共用的。在使用这些端口时,通常需要根据不同的CPU,设置相应的I/O端口寄存器,I/O端口才能正常工作。同时,在设计应用时,还应该注意以下几点:,1I/O作为输出时要注意的问题 (1)接收信号时片外外设可能没有输入锁存器,因此嵌入式微处理器输出信号在下次再写入新数据前应一

2、直保持不变。输出置数指令执行时间小于1微秒,而外设动作保持时间可能几分钟甚至几小时不变。因此,输出数据要有锁存器,存储瞬时写入的数据。 (2)输出端口要有一定的驱动能力。I/O外负载情况有两种:动态驱动和静态驱动。动态驱动如I/O作为数据总线使用时,在指令控制下I/O是很短时间内输出数据,脉冲宽度一般小于1微秒。I/O由特定动态的MOS作为负载,一般可以驱动4到8个TTL电路。静态驱动是指I/O端口长时间处于同一种状态(0或者1),只有驱动信号改变时I/O端口状态才改变,这时驱动的一般只有一个TTL电路。,2就驱动能力来说应该注意下面两个问题 (1)驱动时使用高电平驱动还是使用低电平拉入电流驱

3、动。当为高电平驱动时,一般通用的I/O端口的最大驱动电流不能超过4到5毫安,而低电平拉入电流一般比较大,最大可以达到25毫安。 (2)电阻性负载还是电容性负载。对于电容性负载,当高频驱动时由于有电容的存在,使I/O驱动电路负载加重,这样会损坏I/O端口,同时使I/O端口输出电平降低。一般I/O电容负载不得大于50皮法。大于50皮法的应该加缓冲器,缓冲器可以用反门、晶体管、D触发器、RS触发器等。也可以在I/O端口串联一个小于50欧姆的电阻,减小因电容引起的对I/O端口的瞬时冲击。如果是电阻性负载,主要考虑驱动电流是否适合。,3用户把微处理器I/O定义为输入端口,但是在制造芯片时为了灵活使用该端

4、口,也允许其作为输出端口,片内输出锁存器、数据寄存器对用户定义为输入口肯定会有影响。目前半导体制作上解决已有的输出硬件结构与定义输入口之间相互影响的办法有两个: (1)输出数据寄存器与引脚连接要控制,例如加入一个可控制的三态输出门连接到引脚。也就是说,用户定义该端口为输入口,还要定义输出数据寄存器不与引脚连接,从而不影响输入状态。 (2)硬件结构已经把输出数据寄存器永远与引脚通过逻辑电路连接起来,这时如果该端口定义为输入口,事先应在输出数据寄存器置1。由于这时引脚状态是输出数据寄存器与输入端口的状态线相“与”的结果,因此也不会影响输入状态。,4当输入端口是计数器捕捉寄存器输入、正交编码电路输入

5、时,对于输入的最小脉冲宽度有一定的要求。脉冲过窄会使计数器无法正常工作。最小脉冲宽度对于不同的微处理器不同的主频有不同的要求,一般脉冲大于1微秒就可以正常工作了。 5在某一个瞬时,可能有两个I/O输出,并且片外外设输出1,微处理器I/O输出0,这样可能使微处理器I/O瞬时过载,损坏I/O端口。这时最好在两个引脚之间串联一个大于100欧姆的电阻(100K欧以内)以限制瞬时电流。由于该电阻在CPU的I/O输出时是低阻抗,而在片外外设输入时是高阻抗,所以无影响。相反也一样。,7.2 ARM核I/O端口配置,在ARM系列中,不同的CPU,I/O端口配置大体相同,不过也有不同的地方。以下分别对ARM系列

6、中的ARM7和ARM9中I/O端口的配置进行介绍。7.2.1 ARM7中的I/O端口配置我们以ARM7中的S3C4510B为例加以介绍。若要熟悉ARM芯片IO口的编程配置方法,就要熟悉你所用芯片的I/O端口的功能配置和特殊功能寄存器的配置。本节主要讲述S3C4510B I/O端口的功能配置及应用。,1S3C4510B I/O端口功能概述S3C4510B提供了18个可编程的I/O端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器控制。I/O端口的功能模块如图7-1所示。,图7-1 I/O端口的功能模块框图,2S3C4510B I/O端口配置每个端口部可通过软件设

7、置来满足各种各样的系统设置和设计要求。每个端口的功能通常都要在主程序开始前被定义。如果一个引脚的多功能没有使用,那么这个引脚将被设置为I/O端口。在引脚配置之前,需要对引脚的初始化状态进行设定,以避免一些问题的出现。,7.2.2 ARM9中的I/O端口配置1ARM9中的I/O端口概述S3C2410X有117个多功能的输入/输出引脚。它们是:端口A(GPA):23个输出端口;端口B(GPB):11个输入/输出端口;端口C(GPC):16个输入/输出端口;端口D(GPD):16个输入/输出端口;端口E(GPE):16个输入/输出端口;端口F(GPF):8个输入/输出端口;端口G(GPG):16个输

8、入/输出端口;端口H(GPH):11个输入/输出端口;,与S3C4510B一样,每个端口都可通过软件设置来满足各种各样的系统设置和设计要求。在引脚配置之前,需要对引脚的初始化状态进行设定,以避免一些问题的出现。S3C2410X端口配置如表7-1表7-8所示。,表7-1 S3C2410X端口PORT A配置,表7-2 S3C2410X端口Port B配置,表7-3 S3C2410X端口Port C配置,表7-4 S3C2410X端口PORT D配置,表7-5 S3C2410X端口PORT E配置,表7-6 S3C2410X端口PORT F配置,表7-7 S3C2410X端口PORT G配置,表7

9、-8 S3C2410X端口PORT H配置,7.3 ARM核I/O端口功能描述,不同ARM厂家的嵌入式微处理器,其I/O端口数量、功能有一定的差异。如在驱动能力、是否带有上拉电阻等。读者应根据不同ARM型号的数据手册仔细查阅。同时,不同厂家的ARM微处理器还有不同的端口功能描述。我们仍然以ARM7中的S3C4510B和ARM9中的S3C241X中I/O端口为例加以介绍,7.3.1 ARM7中的S3C4510B I/O端口功能控制描述S3C4510B提供了18个可编程的I/O端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器控制。用户通过设置片内的特殊功能寄存器

10、IOPMOD和IOPCON,可以将每个端口配置为输入模式、输出模式或特殊功能模式。端口0端口7的工作模式仅由IOPMOD寄存器控制。但通过设置IOPCON寄存器,端口8端口11可用作外部中断请求INTREQ0INTREQ3的输入,端口12、端口13可用作外部DMA请求XDREQ0、XDREQ1的输入,端口14、端口15可作为外部DMA请求的应答信号XDACK0、XDACK1,端口16可作为定时器0的溢出TOUT0,端口17可作为定时器1的溢出TOUT1。,7.3.2 ARM9中的S3C241X I/O端口功能控制描述在ARM9中的S3C241XI/O端口功能控制描述如下:1端口配置寄存器(GP

11、ACONGPHCON)在S3C2410X中,大多数引脚是多功能引脚。因此,应为每个引脚选择功能。端口控制寄存器(PnCON)决定了每一个引脚的功能。如果GPF0GPF7及GPG0GPG7在掉电模式下被用作唤醒信号,则在中断模式下这些端口必须被设定。2端口数据寄存器(GPADATGPHDAT)如果这些端口被设定为输出端口,则输出数据可被写入PnDAT的相应位;如果被设定为输出端口,则输入数据可被读到PnDAT的相应位。,3端口上拉寄存器(GPBUPGPHUP)端口上拉寄存器控制着每一个端口组的上拉寄存器的使能端。当相应的位被设为0时,引脚接上拉电阻;当相应的位被设为1时,引脚不接上拉电阻。当端口

12、上拉寄存器使能时,上拉寄存器不进行引脚功能配置(input,output,DATAn,EINTn,etc)。4特殊的控制寄存器此寄存器控制数据上拉寄存器,Hi-z状态,USB衬垫,及CLKOUT选择位。5外部中断控制寄存器(EXTINTN)24个外部中断可用各种信号来请求。EXTINTn寄存器可为外部中断请求信号配置以下触发方法:低电平触发,高电平触发,下降沿触发,上升沿触发及双沿触发方式。8个外部中断引脚含有数字过滤器。仅16个EINT引脚(EINT15:0)可用作唤醒源。6掉电模式及I/O端口由时钟及电源管理,所有GPIO寄存器的值在掉电模式中得到保存。EINTMASK不能阻止唤醒掉电模式

13、,但是,如果EINTMASK屏蔽了EINT15:4中的一位,唤醒操作可以执行,但是SRCPND的EINT47,及EINT823位在唤醒完成后不被设置位1。,7.4 ARM核I/O端口寄存器控制,同样,在ARM微处理器中对I/O端口的控制也是不同的。如下简要描述。7.4.1 ARM7中的S3C4510B I/O端口寄存器控制在S3C4510B中控制I/O口的特殊功能寄存器一共有3个:IOPMOD、IOPCON和IOPDATA,简要描述如图7-2所示:1I/O口模式寄存器(IOPMOD)I/O口模式寄存器IOPMOD用于配置P17P0。,图7-2 I/O口模式寄存器描述,0 P0口的I/O模式位:

14、0=输入,1=输出。1 P1口的I/O模式位:0=输入,1=输出。2 P2口的I/O模式位:0=输入,1=输出。317 P3P17口的I/O模式位:0=输入,1=输出。2I/O口控制寄存器(IOPCON)I/O口控制寄存器IOPCON用于配置端口P8P17的特殊功能,当这些端口用作特殊功能(如外部中断请求、外部中断请求应答、外部DMA请求或应答、定时器溢出)时,其工作模式由IOPCON寄存器控制,而不再由IOPMOD寄存器。 对于特殊功能输入端口,S3C4510B提供了一个滤波器用于检测特殊功能信号的输入,如果输入信号电平宽度等于三个系统时钟周期,该信号被认为是诸如外部中断请求或外部DMA请求

15、等特殊功能信号。要描述如图7-3所示:,图7-3 I/O口控制寄存器描述,4:0 控制端口8的外部中断请求信号0(xIRQ0)输入4 端口8用作外部中断请求信号:0 = 禁止,1 = 使能.3 0 = 低电平有效,1 = 高电平有效。2 0 = 滤波器关,1 = 滤波器开。1:0 00 = 电平检测,01 = 上升沿检测,10 = 下降沿检测,11 = 上升、下降沿均检测。9:5 控制端口9的外部中断请求信号1(xIRQ1)输入,使用方法同端口8。 14:10 控制端口10的外部中断请求信号2(xIRQ2)输入,使用方法同端口8。 19:15 控制端口11的外部中断请求信号3(xIRQ3)输入

16、,使用方法同端口8。 22:20 控制端口12的外部DMA请求信号0(DRQ0)输入。22 端口12用作外部DMA请求信号0(nXDREQ0):0 = 禁止,1 = 使能。21 0 = 滤波器关,1 = 滤波器开。20 0 = 低电平有效,1 = 高电平有效。25:23 控制端口13的外部DMA请求信号1(DRQ1)输入。25 端口13用作外部DMA请求信号1(nXDREQ1):0 = 禁止,1 = 使能。24 0 = 滤波器关,1 = 滤波器开。23 0 = 低电平有效,1 = 高电平有效。27:26 控制端口14的外部DMA应答信号0(DAK0)输出 27 端口14用作外部DMA信号0(n

17、XDACK0):0 = 禁止,1 = 使能。26 0 = 低电平有效 1 = 高电平有效 29:28 控制端口15的外部DMA应答信号1(DAK1)输出。29 端口15用作外部DMA信号1(nXDACK1):0 = 禁止,1 = 使能。28 0 = 低电平有效,1 = 高电平有效。30 控制端口16作为定时器0溢出信号(TOEN0):0 = 禁止,1 = 使能。31 控制端口17作为定时器1溢出信号(TOEN1):0 = 禁止,1 = 使能。,3I/O口数据寄存器(IOPDATA) 当配置为输入模式时,读取I/O口数据寄存器IOPDATA的每一位对应输入状态,当配置为输出模式时,写每一位对应输

18、出状态。位17:0对应于18个I/O引脚P17-P0。如图7-4所示:,图7-4 I/O口数据寄存器描述,17:0对应I/O口P17P0的读/写值。I/O口数据寄存器的值反映对应引脚的信号电平。以上简述了S3C4510B的通用I/O口的基本工作原理,更详细的内容可参考S3C4510B的用户手册。,7.4.2 ARM9中的S3C241X I/O端口寄存器控制1I/O 端口控制专用寄存器(1)端口A控制寄存器(GPACON/GPADAT)如表7-9、表7-10、表7-11所示。,表7-9 端口A控制寄存器(GPACON/GPADAT)总体描述,表7-10 端口A控制寄存器GPACON详细描述,表7

19、-11 端口A控制寄存器GPADAT详细描述,(2)端口B控制寄存器(GPBCON、GPBDAT、GPBUP)如表7-12 表7-15所示。7-12 端口B控制寄存器(GPBCON、GPBDAT、GPBUP)总体描述,表7-13 端口B控制寄存器GPBCON详细描述,表7-14 端口B控制寄存器GPBDAT详细描述,表7-15 端口B控制寄存器GPBUP详细描述,(3)端口C控制寄存器(GPCCON,GPCDAT,及GPCUP)如表7-16 表7-19所示。表7-16 端口C控制寄存器(GPCCON,GPCDAT,及GPCUP)总体描述,表7-17 端口C控制寄存器GPCCON详细描述,表7-

20、18 端口C控制寄存器GPCDAT详细描述,表7-19 端口C控制寄存器GPCUP详细描述,(4)端口D控制寄存器(GPDCON、GPCDAT、GPDUP) 如表7-20 表7-23所示(5)端口E控制寄存器(GPECON、GPEDAT、GPEUP)如表7-24 表7-26所示。(6)端口F控制寄存器(GPFCON、GPFDAT、GPFPU) 如表7-27表7-29所示。7、端口G控制寄存器(GPGCON、GPGDAT、GPGUP)如表7-30 表7-31所示。如果GPG7:0用于掉电模式的唤醒信号,此端口将在中断模式被设置。(8)端口H控制寄存器(GPHCON、GPHDAT、GPHUP) 如

21、表7-33 表7-35所示。,(9)混合控制寄存器(MISCCR)对主USB或设备USB,USB附设都是由此寄存器控制的。混合控制寄存器(MISCCR)的描述如表7-36、表7-37所示。(10)DCLK控制寄存器(DCLKCON)此寄存器定义了用于定义外部资源时钟的DCLKn 信号。图7-5显示了DCLKn 信号的产生。仅当CLKOUT1:0设置为发送DCLKn 信号时,DCLKCON 可实际操作。表7-38是DCLK控制寄存器(DCLKCON)的总体描述,表7-39是其详细描述。,(11)外部中断控制寄存器(EXTINTn)24个外部中断可通过多种方式被请求。EXTINTn配置了外部中断请

22、求的水平及边沿触发方式及信号极性。在等级中断中,EXTINTn引脚的有效逻辑等级必须在40ns内得到,由于考虑到噪音过滤(EINT15:0)。外部中断控制寄存器(EXTINTn)如表7-40 表7-43所示。(12)外部中断过滤寄存器(EINTFLTn)EINTFLTn控制8个外部中断(EINT23:16)的过滤长度,如表7-44 表7-46所示。,(13)外部中断屏蔽寄存器(EINTMASK)20个外部中断屏蔽寄存器(EINT23:4)外部中断挂起寄存器(EINTPENDn),如表7-47 表7-48所示。(14)20个外部中断(EINT23:4)中断挂起寄存器。可通过在此寄存器的相应位置1

23、来挂起EINTPEND的特定位。其描述如表7-49 表7-50所示。,7.5 ARM核I/O端口应用编程,作为本章的第一个例子,P3P0外接4只LED显示器,用作程序运行状态的显示或其他输出功能,P7P4外接跳线选择高、低电平用作状态输入,以控制程序流程或其他输入功能,其应用电路如图7-6所示。,图7-6 LED简单应用电路,将比较详细的描述建立项目、编写程序的过程,同时可参考关于ADS集成编译调试环境的使用方法。打开CodeWarrior for ARM Developer Suite(或ARM Project Manager),新建一个项目,并新建一个文件,名为Init.s,具体内容如下:

24、,;* ;Institute of Automation, Chinese Academy of Sciences ;File Name: Init.s ;Description: ;Author: JuGuang.Lee ;Date: ;* IMPORT Main AREA Init,CODE,READONLY ENTRY LDR R0, =0x3FF0000 LDR R1, =0xE7FFFF80 ;配置SYSCFG,片内4K Cache,4K SRAM STR R1, R0 LDR SP, =0x3FE1000 ;SP指向4K SRAM的尾地址,堆栈向下生成 BL Main B . EN

25、D,该段代码完成的功能为: 配置SYSCFG特殊功能寄存器,将S3C4510B片内的8K一体化的SRAM配置为4K Cache,4K SRAM,并将用户堆栈设置在片内的SRAM中。 4K SRAM的地址为0x3FE,0000(0x3FE,10001),由于S3C4510B的堆栈由高地址向低地址生成,将SP初始化为0x3FE,1000。 完成上述操作后,程序跳转到Main函数执行。 保存Init.s,并添加到新建的项目。 再新建一个文件,名为main.c,具体内容如下:,/* * Institute of Automation,Chinese Academy of Sciences * File

26、 Name: main.c * Description: * Author: JuGuang.Lee * Date: */ #define IOPMOD (*(volatile unsigned *)0x03FF5000) /IO port mode register #define IOPDATA (*(volatile unsigned *)0x03FF5008) /IO port data register void Delay(unsigned int); int Main() unsigned long LED; IOPMOD=0xFFFFFFFF; /将IO口置为输出模式 IOPD

27、ATA=0x01; for(;) LED=IOPDATA; LED=(LED1); IOPDATA=LED; Delay(10); if(!(IOPDATA&0x0F) IOPDATA=0x01; return(0); void Delay(unsigned int x) unsigned int i,j,k; for(i=0;i=x;i+) for(j=0;j0xff;j+) for(k=0;kobey C:memmap.txt 系统中SDRAM被映射到0x0040,0000(0x0140,00001),从0x0040,0000处装入生成的可执行的映像文件,并将PC指针寄存器修改为0x0040,0000,就可单步调试或运行生成的可执行的映像文件。 该程序的运行效果为接在P0P3口的LED显示器轮流被点亮。,7.6 习 题,问答题:(1)I/O作为输入/输出应注意哪些问题?(2)ARM7中的I/O端口配置如何?(3)ARM9中的I/O端口配置如何?(3)ARM7和ARM9I/O端口使用有何不同?如何使用的?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报