《通用输入输出(GPIO)介绍》由会员分享,可在线阅读,更多相关《通用输入输出(GPIO)介绍(4页珍藏版)》请在金锄头文库上搜索。
1、通用输入输出(G PIO )G OG OG O介绍1.GPIO概述概述概述概述I/O(Input/Output)接口是一颗微控制器必须具备的最基本外设功能。在Stellaris系列ARM里,所有I/O都是通用的,称为GPIO(GeneralPurposeInput/Output)。GPIO模块由38个物理GPIO块组成,一块对应一个GPIO端口(PA、PB、PC、PD、PE、PF、PG、PH)。每个GPIO端口包含8个管脚,如PA端口是PA0PA7。GPIO模块遵循FiRM(FoundationIPforReal-Tim e Microcontrollers)规范,并且支持多达60个可编程输入
2、/输出管脚(具体取决于与GPIO复用的外设的使用情况)。GPIO模块包含以下特性:可编程控制GPIO中断屏蔽中断发生边沿触发(上升沿、下降沿、双边沿)电平触发(高电平、低电平)输入/输出可承受5V在读和写操作中通过地址线进行位屏蔽可编程控制GPIO管脚配置:弱上拉或弱下拉电阻 2m A、4m A、8m A驱动,以及带驱动转换速率(SlewRate)控制的8m A驱动开漏使能数字输入使能2.各种模式下的各种模式下的各种模式下的各种模式下的GPIO在Stellaris系列ARM里,GPIO管脚可以被配置为多种工作模式,其中有3种比较常用:高阻输入、推挽输出、开漏输出。2.1高阻输入(Input)图
3、1GPIO高阻输入模式结构示意图如图1所示,为GPIO管脚在高阻输入模式下的等效结构示意图。这是一个管脚的情况,其它管脚的结构也是同样的。输入模式的结构比较简单,就是一个带有施密特触发输入(Schm itt-triggered iinput)的三态缓冲器(U1),并具有很高的输入等效阻抗。施密特触发输入的作用是能将缓慢变化的或者是畸变的输入脉冲信号整形成比较理想的矩形脉冲信号。执行GPIO管脚读操作时,在读脉冲(ReadPulse)的作用下会把管脚(Pin)的当前电平状态读到内部总线上(InternalBus)。在不执行读操作时,外部管脚与内部总线之间是隔离的。2.2推挽输出(O utput)
4、O O O图2GPIO推挽输出模式结构示意图如图2所示,为GPIO管脚在推挽输出模式下的等效结构示意图。U1是输出锁存器,执行GPIO管脚写操作时,在写脉冲(WritePulse)的作用下,数据被锁存到Q和/Q。T1和T2构成CMOS反相器,T1导通或T2导通时都表现出较低的阻抗,但T1和T2不会同时导通或同时关闭,最后形成的是推挽输出。在Stellaris系列ARM里,T1和T2实际上是多组可编程选择的晶体管,驱动能力可配置为2m A、4m A、8m A,以及带转换速率(SlewRate)控制的8m A驱动。在推挽输出模式下,GPIO还具有回读功能,实现回读功能的是一个简单的三态门U2。注意
5、:执行回读功能时,读到的是管脚的输出锁存状态,而不是外部管脚Pin的状态。2.3开漏输出(O utputO D)O OO OO O图3GPIO开漏输出结构示意图如图3所示,为GPIO管脚在开漏输出模式下的等效结构示意图。开漏输出和推挽输出相比结构基本相同,但只有下拉晶体管T1而没有上拉晶体管。同样,T1实际上也是多组可编程选择的晶体管。开漏输出的实际作用就是一个开关,输出“1”时断开、输出“0”时连接到GND(有一定内阻)。回读功能:读到的仍是输出锁存器的状态,而不是外部管脚Pin的状态。因此开漏输出模式是不能用来输入的。开漏输出结构没有内部上拉,因此在实际应用时通常都要外接合适的上拉电阻(通
6、常采用4.710k)。开漏输出能够方便地实现“线与”逻辑功能,即多个开漏的管脚可以直接并在一起(不需要缓冲隔离)使用,并统一外接一个合适的上拉电阻,就自然形成“逻辑与”关系。开漏输出的另一种用途是能够方便地实现不同逻辑电平之间的转换(如3.3V到5V之间),只需外接一个上拉电阻,而不需要额外的转换电路。典型的应用例子就是基于开漏电气连接的I2C总线。2.4钳位二极管图4GPIO钳位二极管示意图GPIO内部具有钳位保护二极管,如图4所示。其作用是防止从外部管脚Pin输入电压过高或者过低。VDD正常供电是3.3V,如果从Pin输入的信号(假设任何输入信号都有一定的内阻)电压超过VDD加上二极管D1
7、的导通压降(假定在0.6V左右),则二极管D1导通,会把多于的电流引到VDD,而真正输入到内部的信号电压不会超过3.9V。同理,如果从in输入的信号电压比GND还低,则由于二极管D2的作用,会把实际输入内部的信号电压钳制在0.6V左右。假设VDD3.3V,GPIO设置在开漏模式下,外接10k上拉电阻连接到5V电源,在输出“1”时,我们通过测量发现:GPIO管脚上的电压并不会达到5V,而是在4V上下,这正是内部钳位二极管在起作用。虽然输出电压达不到满幅的5V,但对于实际的数字逻辑通常3.5V以上就算是高电平了。图5解决开漏模式上拉电压不足的方法如果确实想进一步提高输出电压,一种简单的做法是先在GPIO管脚上串联一只二极管(如1N4148),然后再接上拉电阻。参见图5,框内是芯片内部电路。向管脚写“1”时,T1关闭,在Pin处得到的电压是3.3VD1VD34.5V,电压提升效果明显;向管脚写“0”时,T1导通,在Pin处得到的电压是VD30.6V,仍属低电平。