《通用输入输出接口.ppt》由会员分享,可在线阅读,更多相关《通用输入输出接口.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第五章 通用输入输出(GPIO)目 录GPIO简介1GPIO特性描述2GPIO输入输出3GPIO中断4GPIO 简介|数字量输入/输出GPIOGPIO 是通用型输入/输出(GeneralPurposeI/O)的简称,主要用于工业现场需要用到数字量输入/输出的场合,例如:继电器、LED、蜂鸣器等的控制;传感器状态、高低电平等信息的输入等。目 录GPIO简介1GPIO特性描述2GPIO输入输出3GPIO中断4GPIO 特性描述|I/O 结构大部分GPIO 为推挽输出,具有完整I2C 功能的是开漏结构;管脚可承受最大5V 的输入电压。正常拉出灌入电流为4mA,短时间极限值40mA;GPIO 特性描
2、述|通用输入输出所有GPIO 寄存器位于AHB 总线上,可以进行高性能的CPU 快速访问,支持Cortex-M3 位带操作;GPIO 允许进行DMA 数据操作。可配置为上拉/下拉电阻、开漏和中继模式;LPC1700 系列Cortex-M3 有5 组GPIO,多达70 个通用I/O管脚(100 管脚封装);GPIO 特性描述|中断 LPC1700P0.xP2.xLPC1700 系列Cortex-M3 的P0 和P2 还具有中断功能,P0 和P2 每个引脚都可配置为上升沿、下降沿或双边沿中断。上升沿中断下降沿中断边沿中断GPIO中断还具有掉电唤醒功能目 录GPIO简介1GPIO特性描述2GPIO输
3、入输出3GPIO中断4GPIO 输入输出|I/O 相关寄存器LPC1700 系列Cortex-M3 具有5 个端口,所以具有5 组控制寄存器。一个GPIO 引脚在某一时刻,只受4 个位的控制,这4 个位分布在该GPIO 所属端口的4 个控制寄存器中。GPIO端口方向寄存器 FIO xDIR FIO xDIR Bit31 Bit30 Bit1 Bit0GPIO输出置位寄存器 FIO xSET FIO xSET Bit31 Bit30 Bit1 Bit0GPIO输出清零寄存器 FIO xCLR FIO xCLR Bit31 Bit30 Bit1 Bit0GPIO管脚值寄存器 FIO xPIN FI
4、O xPIN Bit31 Bit30 Bit1 Bit0控制的引脚 P x.n P x.n Px.31 Px.30 Px.1 Px.0GPIO 输入输出|I/O 相关寄存器GPIO端口方向寄存器 FIO xDIR FIO xDIR Bit31 Bit30 Bit1 Bit0GPIO输出置位寄存器 FIO xSET FIO xSET Bit31 Bit30 Bit1 Bit0GPIO输出清零寄存器 FIO xCLR FIO xCLR Bit31 Bit30 Bit1 Bit0GPIO管脚值寄存器 FIO xPIN FIO xPIN Bit31 Bit30 Bit1 Bit0LPC1700 系列C
5、ortex-M3 的高速GPIO 口还可通过一些字节和半字访问的寄存器来控制,如FIOxDIR0/1/2/3、FIOxSET0/1/2/3、FIOxCLRL/U 等。控制的引脚 P x.n P x.n Px.31 Px.30 Px.1 Px.0PINSELxFIOxDIR FIOxCLRFIOxPINFIOxSETinout10PINSELxIOxDIR IOxCLRIOxPINIOxSETinout10通用名称 描述 访问类型 复位值FIOxPINGPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出只读 NAFIOxSETGPIO输出置位寄存器。该寄存器控制引脚输出高
6、电平读/置位 0 x00000000FIOxCLRGPIO输出清零寄存器。该寄存器控制引脚输出低电平只清零 0 x00000000FIOxDIRGPIO方向控制寄存器。该寄存器单独控制每个IO口的方向读/写 0 x00000000 GPIO相关寄存器描述PINSELxFIOxDIR FIOxCLRFIOxPINFIOxSETinout10 GPIO 相关寄存器描述 FIO xPINFIOxPIN 描述 复位值31:0 GPIO 引脚值。FIOxPIN0 对应于Px.0FIOxPIN31 对应于Px.31 引脚 未定义 该寄存器反映了当前引脚的状态。FIOxPIN中的x对应于某一个端口,如P1口
7、对应于FIO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意:无论引脚被设置为输入还是输出模式或者配置为其他可选的数字功能,都不影响引脚状态的读出。PINSELxFIOxDIR FIOxCLRFIOxPINFIOxSETinout10 GPIO 相关寄存器描述 FIO xDIRFIOxDIR 描述 复位值31:0 方向控制位。FIOxDIR0 对应于Px.0FIOxDIR31 对应于Px.31 引脚 0 当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入
8、功能。作为输入功能时,引脚处于高阻态。PINSELxFIOxDIR FIOxCLRFIOxPINFIOxSETinout10 GPIO 相关寄存器描述 FIO xSETFIOxSET描述 复位值31:0 输出置位。FIOxSET0 对应于Px.0FIOxSET31 对应于Px.31 引脚 0 当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。PINSELxFIOxDIR FIOxCLRFIOxPINFIOxSETinout10 GPIO 相关寄存器描述 FI
9、O xCLRFIOxCLR 描述 复位值31:0 输出清零。FIOxCLR0 对应于Px.0FIOxCLR31 对应于Px.31 引脚 0 当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。注意:读取该寄存器无效,不能读回输出寄存器的值。GPIO 输入输出|I/O 功能框图INOUT 10GPIOPINSELxPINMODExvccFIOxDIR10FIOxSETFIOxCLRFIOxPINFIOxMASK输出置位寄存器模式选择寄存器功能选择寄存器端口屏蔽寄存器输出清零寄存器端口方向控制寄存器管脚值寄存器复位后默认所有GPIO为上拉输
10、入模式GPIO 输入输出|I/O 屏蔽寄存器 采用屏蔽寄存器FIOxMASK 来屏蔽某些位,可以让软件在一个写操作过程中设置GPIO 相应的位而又不影响到其他的管脚。FIO xSET FIO xSET 1 1 1 0 0 1 1FIO xMASK FIO xMASK 1 0 1 1 0 0 1引脚电平u 1 u u u 1 uu=电平不变GPIO 输入输出|I/O 操作流程FIOxPIN10FIOxCLRFIOxSETINOUT 10FIOxDIRPINMODExvccGPIOPINSELx 设置引脚为GPIO功能1配置引脚模式2设置GPIO的方向3设置GPIO输出电平 4GPIO输入GPIO
11、输出1高电平 1输出操作流程 输入操作流程1读取GPIO引脚电平4 使用GPIO 注意要点引脚设置为输出方式时,输出状态由FIOxSET和FIOxCLR中最后操作的寄存器决定;大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);复位后默认所有GPIO为输入模式。.LPC_PINCON-PINSEL0&=0 xFFFFFFFC;LPC_GPIO0-FIODIR|=0 x00000001;LPC_GPIO0-FIOSET=0 x00000001;.C代码:PINSEL0FIO0DIR FIO0CLRFIO0PINFIO0SETinout10 G
12、PIO应用示例设置P0.0输出高电平P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)设置P0.0口状态,输出高电平1.uint32_t PinStat;LPC_PINCON-PINSEL0&=0 xFFFFFFFC;LPC_GPIO0-FIODIR&=0 xFFFFFFFE;PinStat=LPC_GPIO0-FIOPIN;.C代码:PINSEL0FIO0DIR FIO0CLRIO0PINFIO0SETinout10 GPIO应用示例读取P0.0引脚状态P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输入(3)从FI
13、O0PIN读取引脚状态FIO0PIN#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;FIO0DIR|=DataBus;FIO0CLR=DataBus;FIO0SET=Data;.使用FIOxSET和FIOxCLR实现:GPIO应用示例输出多位数据至IO口(1)设置引脚连接模块,P0.0P0.7为GPIO(2)设置P0.0口方向,设置为输出(3)清零8位IO口的输出状态 在需要将多位数据同时输出到某几个IO口线时,通常使用FIOxSET和FIOxCLR来实现,在某些情况下也可以使用FIOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位
14、无符号整形变量Data的值输出到P0.0P0.7。(4)Data变量中为1的位将输出高电平0 x?0 x00 Data数据输出线:#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;FIO0DIR|=DataBus;FIO0PIN=(FIO0PIN&0 xFFFFFF00)|Data;.GPIO应用示例输出多位数据至IO口(1)设置引脚连接模块,P0.0 P0.7为GPIO(2)设置P0.0口方向,设置为输出(3)写FIO0PIN,输出数据 在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整数变量Data的值输出到P0.0P0.7。使用FIOxPIN实现:0 x?Data数据输出线:0 x?0 x00 Data与前者对比: