GPIO的八种工作模式

描述

GPIO的八种工作模式

GPIO是通用输入/输出端口的简称,GPIO的引脚与外部设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。GPIO的8种输入模式:包括4种输入模式和4种输出模式(2种普通输出和2种复用输出)。

引脚

GPIO基本结构

每个GPIO内部都有这样的一个电路结构,下面就简单的介绍一下这个电路

引脚

保护二极管:I/O引脚上的二极管是为了防止引脚外部输入过高、过低的电压时对芯片造成损坏而设置的,起到保护电路的作用。当引脚电压>VDD时,上方的二极管导通;当引脚电压SS时,下方的二极管导通。

P-MOS管和N-MOS管:GPIO所具有的“推挽输出”输出和“开漏输出”模式得益于由P-MOS管和N-MOS管组成的单元电路。

TTL肖特触发器:可以理解为用肖特管构成的施密特触发器,模拟信号经过触发器后,就会转化为0和1的数字信号。如果GPIO引脚作为输入通道进行ADC电压采集时,用其“模拟输入”功能,信号就不会经过触发器进行TTL转换。

VDD_FT 对5V容忍I/O脚是特殊的,它与VDD不同。这句话的意思就是VDD_FT是兼容5V和3.3V的,而没有FT的是不兼容5V的。

下面具体介绍GPIO的8种工作模式:

输入模式—浮空输入

引脚

在此模式下,上图黄色阴影部分①—④的电路为通路,由①I/0端口输入电平(高电平或低电平)→保护二极管→②TTL肖特基触发器→③输入数据寄存器→④CPU,这样CPU就能读取到I/O端口处的高低电平状态。浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(无信号输入)的情况下,读取该端口的电平是不确定的。它的输入阻抗较大,一般把这种模式用于标准的通信协议如I2C、USART。

输入模式—输入上拉

引脚

上拉电阻:把不确定的信号通过电阻连接到高电平,默认情况下输入引脚数据为1,高电平。在上拉输入模式下,也是I/O端口的电平信号直接进入输入数据寄存器,但是它和浮空模式的主要区别在于,输入上拉模式中上拉电阻(连接VDD)的开关闭合,上拉电阻的大小约为30—50kΩ。

输入模式—输入下拉

引脚

下拉电阻:把不确定的信号通过电阻连接到低电平,默认情况下输入引脚数据为0,低电平。在下拉输入模式下,也是I/O端口的电平信号直接进入输入数据寄存器,同理,它和浮空模式的主要区别在于,输入下拉模式中下拉电阻(连接VSS)的开关闭合。

输入模式—模拟输入

引脚

在此模式下,数据通道中上拉、下拉电阻和TTL肖特触发器,这时均处于关断的状态,在模拟输入状态下,CPU是无法通过“输入数据寄存器”读到IO端口变化的数据了,也就是说“输入数据寄存器”就无法反映I/O端口上的电平变化的了。I/O端口的模拟信号(注意是电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块。

输出模式—开漏输出

引脚

引脚

若②输出控制电路接收到1(高电平),则③N-MOS管截止,那么此时 ④I/O端口处的电平不是通过②输出控制电路和③N-MOS管来控制的,而是取决于外部的“上拉”或“下拉”。

若②输出控制电路接收到 0(低电平),③N-MOS管导通,此时④I/O端口处的电平就被③N-MOS管拉低。

同时,在输出的状态下,I/O口的电平还可以通入输入电路(④I/O端口→⑥输入数据寄存器→⑦CPU读取)来读取。

输出模式—开漏复用输出

引脚

开漏复用输出模式与开漏输出模式很相似,区别在于输出的高低电平的来源,不是让CPU直接向位设置/清除寄存器写1/0然后将其映射到输出数据寄存器中,而是利用片上外设模块的复用功能输出来决定的。

输出模式—推挽输出

引脚

由图可知,GPIO的推挽输出模式是在开漏输出模式的基础上,在“输出控制电路”之后,增加了一个P-MOS管。

当CPU输出逻辑“1 ”时,③P-MOS管导通,N-MOS管截止,输出高电平。

当CPU输出逻辑“0 ”时,③P-MOS管截止,N-MOS管导通,输出低电平。

同时,I/O端口的电平也可以通过输入电路(④I/O端口→⑥输入数据寄存器→⑦CPU读取)进行读取。

输出模式—推挽复用输出

引脚

推挽复用输出模式与推挽输出模式相似。只是输出的高低电平的来源,不是让CPU直接向位设置/清除寄存器写1/0然后将其映射到输出数据寄存器中,而是利用片上外设模块的复用功能输出来决定的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分