您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第5章-嵌入式系统输入输出设备接口
第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》嵌入式系统设计—基于ARM9微处理器S3C2410A第5章嵌入式系统输入/输出设备接口第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》5.1.1GPIO原理与结构GPIO(GeneralPurposeI/O,通用输入/输出接口)也称为并行I/O(parallelI/O),是最基本的I/O形式,由一组输入引脚、输出引脚或输入/输出引脚组成,CPU对它们能够进行存取操作。有些GPIO引脚能够通过软件编程改变输入/输出方向。I/O的应用是处理器的基础应用。5.1GPIO(通用输入/输出接口)第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》GPIO的应用通用I/O口(接口,引脚);驱动LED或其他指示器;控制片外器件;检测数字输入,如键盘或开关信号;第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》S3C2410A检测数字输入,如键盘或开关信号驱动LED或其它指示器控制片外器件第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》5.1.2S3C2410A的I/O口配置S3C2410A共有117个多功能复用输入/输出端口(I/O口),分为端口A~H,共8组。第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件进行配置。每个引脚的功能必须在启动主程序之前进行定义。如果一个引脚没有使用复用功能,那么它可以配置为I/O口。注意:端口A除了作为功能口外,只能够作为输出口使用。第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》引脚示例如GPE端口共有16个GPIO引脚,功能如下;这些端口都具有多功能,通过引脚配置寄存器,可以将其设置为所需要的功能,如:I/O功能、中断功能等等。第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》5.1.3S3C2410A的I/O口寄存器引脚GPIO与控制寄存器的关系GPxCONGPxUP10GPxDATGPxDAT第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》通用名称描述GPxCONGPIO端口引脚功能选择寄存器,用于设置引脚为输入、输出或其他功能GPxDATGPIO端口数据寄存器。GPxUPGPIO端口上拉寄存器,用于设置端口的上拉电阻使能与禁止GPIO相关寄存器描述GPxCONGPxUP10GPxDATGPxDATx=A、B、C、D、E、F、G、H第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》GPIO相关寄存器描述——GPxCONGPxCONGPxUP10GPxDATGPxDATGPxCON描述A[22:0]0-输出1-其他B[21:0]00-输入01-输出10-其他11-保留C[31:0]00-输入01-输出10-其他11-保留D[21:0]00-输入01-输出10-其他11-保留E[31:0]00-输入01-输出10-其他11-保留F[15:0]00-输入01-输出10-其他11-保留G[31:0]00-输入01-输出10-其他11-保留H[25:0]00-输入01-输出10-其他11-保留第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》GPIO相关寄存器描述——GPxDATGPxCONGPxUP10GPxDATGPxDATGPxDAT描述A[22:0]0-低电平1-高电平B[10:0]0-低电平1-高电平C[15:0]0-低电平1-高电平D[15:0]0-低电平1-高电平E[15:0]0-低电平1-高电平F[7:0]0-低电平1-高电平G[15:0]0-低电平1-高电平H[12:0]0-低电平1-高电平第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》当I/O设置为GPIO输出模式(Output模式)时,写GPxDAT控制相应I/O口输出高电平或低电平。注:GPxDAT为1的位对应I/O输出高电平,为0的位对应低电平;当I/O设置为GPIO输入模式(Input模式)时,读取GPxDAT寄存器即取得I/O口线上的电平状态。第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》GPIO相关寄存器描述——GPxUPGPxCONGPxUP10GPxDATGPxDATGPxUP描述B[10:0]0-使能上拉1-禁止上拉C[15:0]0-使能上拉1-禁止上拉D[15:0]0-使能上拉1-禁止上拉E[15:0]0-使能上拉1-禁止上拉F[7:0]0-使能上拉1-禁止上拉G[15:0]0-使能上拉1-禁止上拉H[12:0]0-使能上拉1-禁止上拉第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》MISCCR:多控制寄存器。该寄存器有多个功能,可以用来对USB主机和USB设备进行控制。DCLKCON:DCLK控制寄存器。该寄存器是可读/写的,主要用于外部时钟DCLK0、DCLK1进行控制;通过该寄存器可以定义DCLKn信号的频率和占空比。GSTATUSn:通用状态寄存器,共有5个,用来存放芯片的一些信息,如芯片的ID、电池状态等。EXTINTn:外部中断控制器。该类寄存器共有3个,用于对24个外部中断请求信号的有效方式进行选择EINTELTn:外部中断过滤器。该类寄存器共有4个,这些寄存器主用用来对外部中断请求信号滤波器的时钟、宽度进行设置。EINTMASK:外部中断屏蔽寄存器用来对外部中断进行屏蔽,相应位为1表示屏蔽,为0表示不屏蔽。EINTPEND:外部中断悬挂寄存器用来作为外部中断未决位。第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》5.1.4S3C2410A输入/输出端口编程实例在S3C2410A中,大多数的引脚端都是复用的,所以对于每一个引脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功能。与配置I/O口相关的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口数据寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。S3C2410A的I/O口配置情况请参考S3C2410A数据手册。第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》#definerGPACON(*(volatileunsigned*)0x56000000)//PortA控制寄存器#definerGPADAT(*(volati1eunsigned*)0x56000004)//PortA数据寄存器#definerGPBCON(*(volatileunsigned*)0x56000010)//PortB控制寄存器#definerGPBDAT(*(volatileunsigned*)0x56000014)//PortB数据寄存器#definerGPBUP(*(volatileunsigned*)0x56000018)//PortB上拉电阻禁止寄存器#definerGPCCON(*(volatileunsigned*)0x56000020)//PortC控制寄存器#definerGPCDAT(*(volatileunsigned*)0x56000024)//PortC数据寄存器#definerGPCUP(*(volatileunsigned*)0x56000028)//PortC上拉电阻禁止寄存器#definerGPDCON(*(volatileunsigned*)0x56000030)//PortD控制寄存器#definerGPDDAT(*(volatileunsigned*)0x56000034)//PortD数据寄存器#definerGPDUP(*(volatileunsigned*)0x56000038)//PortD上拉电阻禁止寄存器对I/O口的操作是通过对相关各个寄存器的读/写实现的。要对寄存器进行读/写操作,首先要对寄存器进行定义。有关I/O口相关寄存器的宏定义代码如下:一般写成:#include“S3C2410.h”第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》写一个通过G口的控制发光二极管LED1和LED2轮流闪烁I/O口编程实例,电路如下所示:GPG8GPG9R1VCCLED1LED2R2例1:第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》#definerGPGCON(*(volati1eunsigned*)0x56000060)#definerGPGDAT(*(volatileunsigned*)0x56000064)#definerGPGUP(*(volatileunsigned*)0x56000068)//端口G的GPG8控制LED1的亮灭,低电平时为亮#defineled1light()#defineled1clear()//端口G的GPG9控制LED2的亮灭,低电平时为亮#defineled2light()#defineled2clear(){rGPGDAT&=0xfeff;}{rGPGDAT|=0x0100;}{rGPGDAT&=0xfdff;}{rGPGDAT|=0x0200;}第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》voidmain(){inti;rGPGCON|=0x00050000;//配置第8位、第9位为输出引脚led1clear();led2clear();while(1){led1light();led2clear();for(i=0;i10000000;i++);//延时led1clear();led2light();for(i=0;i10000000;i++);//延时}}第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》使用端口E作为普通I/O接口,端口E的GPE3位输出控制一个LED指示灯,GPE4位输出控制一个蜂鸣器。根据电路图用C语言实现其功能。GPE3GPE4R1R2R3Q1BEEPVCCLED例2:第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》#include“2410addr.h”//GPE4用作蜂鸣器输出,高电平为鸣叫#definebeepon(){rGPEDAT=rGPEDAT|0x0010;}#definebeepoff(){rGPEDAT=rGPEDAT&0xffef;}//GPE3用作LED输出控制端,宏定义LED亮灭,低电平为亮#defineledlight(){rGPEDAT=rGPEDAT&0xfff7;}#defineledclear(){rGPEDAT=rGPEDAT|0x0008;}第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》voidmain(){rGPECON=rGPECON|0x00000140;//初始化端口E,使GPE4、GPE3为输出beepoff();//关蜂鸣器while(){ledlight();//LED指示灯亮beepon();//蜂鸣器发声Delay(3000);//延时beepoff();//关蜂鸣器ledclear();//LED指示灯灭}}第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》例3:使用端口F、H作为普通I/O接口,端口E的GPF4位输入控制一个按键,GPH10位输出控制一个蜂鸣器。根据电路图用C语言实现其功能。第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》#include“2410addr.h”//定义独立按键KEY1的输入口#defineKEY_CON(14)/*GPF4口*///定义蜂鸣器控制口#defineBEEP(110)/*GPH10口*/#defineBEEP_MASK(~BEEP)第5章嵌入式系统输入/输出设备接口《嵌入式系统设计》intmain(void){//初始化I/OrGPFCON=(rGPFCON&(~(0x038)));//rGPFCON[9:8]=00b,设置GPF4为GPIO输入模式rGPHCON=(rGPHCON&(~(0x032
本文标题:第5章-嵌入式系统输入输出设备接口
链接地址:https://www.777doc.com/doc-5858966 .html