原创 深入讲解GPIO各种模式

2018-8-28 10:19 3770 20 4 分类: MCU/ 嵌入式

深入讲解MCU最基本外设GPIO的各种模式,希望大家对GPIO能有更深入的认识。

GPIO全称General Purpose Input Output,即通用输入/输出。从GPIO的名字我们很容易理解它的功能,而每种功能都对应相应的工作模式,主要有三种模式:高阻输入、推挽输出和开漏输出。

高阻输入

我们知道大部分MCU的I/O使用时都可以设置为高阻输入。高阻输入可以认为输入电阻是无穷大,认为I/O对前级影响极小。

如图1所示为GPIO在高阻输入模式下的等效结构示意图。输入模式主要由一个带有施密特触发输入的三态缓冲器(U1)组成,它能将缓慢变化或者畸变的输入脉冲信号整形成比较理想的脉冲信号。GPIO读操作时,在读脉冲(相当于打开开关)的作用下会把引脚当前的电平状态读到内部总线上,当GPIO不读时,引脚与内部总线之间是隔离的,相当于开关关闭。

图1  GPIO高阻输入结构示意图

推挽输出

推挽输出的工作原理是:在电路中用两只三极管构成一级放大电路,两只三极管分别放大输入信号的正半周和负半周,两只三极管输出的半周信号在放大器负载上合并后得到一个完整周期的输出信号。


图2  GPIO推挽输出结构示意图

如图2所示为GPIO推挽输出模式下的结构示意图。U1是输出锁存器,当执行GPIO写操作时,在写脉冲(Write pulse)的作用下,数据被锁存到Q和/Q。T1和T2构成CMOS反相器,T1导通或T2导通时都表现出低阻抗,但T1和T2不会同时导通或者关闭,最后形成的是推挽输出。在推挽输出模式下,GPIO还有回读功能,能实现回读功能的是三态缓冲器U2,而读到的是输出锁存器的状态,而不是引脚的外部状态。


开漏输出

开漏输出和推挽输出结构基本相同,只是开漏输出只有下拉晶体管T1而没有上拉晶体管T2。开漏输出的实际作用就是一个开关,输出“1”时断开,输出“0”时连接到内部的GND。

如图3所示为GPIO开漏输出模式结构示意图。输出结构没有内部上拉,因此在实际应用时通常都要外接合适的上拉电阻(通常为4.7KΩ~10KΩ)。开漏输出的功能能够方便的实现“线与”逻辑功能,即多个开漏的引脚可以直接并在一起使用,并统一外接一个合适的上拉电阻,就自然形成“逻辑与”的关系。开漏输出的另一种用途就是能够方便地实现不同逻辑电平之间的转换,如3.3V到5.5V之间,只需要外接一个上拉电阻,典型的应用例子就是基于开漏电气连接的I2C总线。


图3  GPIO开漏输出结构示意图

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
20
关闭 站长推荐上一条 /3 下一条