STM32学习—GPIO的八种工作模式

一、GPIO简介

GPIO(general porpose intput output):控制或者采集外部器件的信息的外设,即负责输入输出(通用的输入输出端口)。它按组分配,每组16 个IO 口,组数视芯片而定。

八种工作模式

模式名称性质特征
浮空输入数字输入可读取引脚电平。若引脚悬空。则电平不稳
上拉输入数字输入可读取引脚电平,内部连接上拉电阻,悬空时默认高电平
下拉输入数字输入可读取引脚电平,内部连接下拉电阻,悬空时默认低电平
模拟输入模拟输入GPIO无效,引脚直接接入内部ADC
开漏输出数字输出可输出引脚电平,高电平为高阻态,低电平接VSS
推挽输出数字输出可输出引脚电平,高电平接VDD,低电平接VSS
复用开漏输出数字输出由片上外设控制,高电平为高阻态,低电平接VSS
复用推挽输出数字输出由片上外设控制,高电平接VDD,低电平接VSS

二、GPIO基本结构分析

参考正点原子STM32F103ZET6精英版

图

最右侧的I/O引脚就是我们可以看到的芯片实物的引脚,其他部分都是GPIO的内部结构。

①保护二极管

保护二极管共有两个,用于保护引脚外部过高或过低的电压输入。当引脚输入的电压高于VDD时,上面的二极管导通。当引脚输入电压低于VSS时,下面的二极管导通,从而使输入芯片内部的电压处于比较稳定的值。虽然有二极管的保护,但这样的保护却很有限,大电压大电流的接入很容易烧坏芯片。

②上拉、下拉电阻

他们阻值大概在30~50K欧之间,可以通过上、下两个对应开关控制,这两个开关由寄存器控制。

③施密特触发器

对于标准施密特触发器,当输入电压高于正向阙值电压,输出为高;低于负向阙值电压,输出为低;位于正负向阙值之间,状态保持上个状态不变。
如下图所示,U表示输入电压,B表示经过施密特触发器处理后的电压,绿色的线代表正向阙值和负向阙值。

图

④P-MOS 管和 N-MOS管

这个结构控制GPIO的开漏输出和推挽输出两种模式。开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。推挽输出:这两只对称的MOS管每次只有一只导通,所有导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载拉电流。推拉输出既能提高电路的负载能力,又能提高开关速度。

三、GPIO的八种工作模式

1、浮空输入

上拉、下拉电阻为断开状态,施密特触发器打开,输出被禁止。输出浮空模式下,IO口的电平完全是由外部电器决定。如果IO引脚没有连接其他的设备,那么检测其输入电平是不确定的。该模式可以用于按键检测等场景。

图

2、上拉输入

上拉电阻导通,施密特触发器打开,输出被禁止。在外部上拉电阻的时候,可以使用内部上拉电阻,这样可以节省一个外部电阻,但是内部上拉电阻的阻值较大,所以只是“弱上拉”,不适合做电流型驱动。

图

3、下拉输入

下拉电阻导通,施密特触发器打开,输出被禁止。在需要外部下拉电阻的时候,可以使用内部下拉电阻,这样可以节省一个外部电阻,但是内部下拉电阻阻值较大,所以不适合做电流型驱动。

在这里插入图片描述

4、模拟输入

上下拉电阻断开,施密特触发器关闭,双MOS管也关闭。其他外设可以通过模拟通道输入输出。该模式下需要用到芯片内部的模拟电路单元,用于ADC、DAC、MCO这类操作模拟信号的外设。
在这里插入图片描述

5、开漏输出

STM32的开漏输出是数字电路输出的一种。
①只能输出低电平,不能输出高电平
②如果要输出高电平,则需要外接上拉
③开漏输出具有“线与”功能,一个为低,全部为低,多用于I2C和SMBUS总线。
在开漏输出模式下,施密特触发器是工作的,所有IO口引脚的电平状态会被采集到输入数据寄存器中,如果对输入数据寄存器进行读访问可以得到IO口的状态。也就是说开漏输出模式下,我们可以读取IO引脚的状态。
在这里插入图片描述

6、推挽输出

①可以输出高低电平,用于连接数字器件,高电平由VDD决定,低电平由VSS决定
②推完结构指两个三极管受到两路互补的信号控制,总是在一个导通的时候另外一个截至。优点:开关效率高,电流大、驱动能力强。
③输出高电平时,电流输出到负载,叫灌电流,可以理解为推;输出低电平时,负载电流流向芯片,叫拉电流,即挽。
在这里插入图片描述

7、开漏式复用功能

一个IO口可以是通用的IO口功能,还可以是其他外设的特殊功能引脚,这就是IO口的复用功能。一个IO口可以是多个外设的功能引脚,我们需要选择作为其中一个外设的功能引脚。当选择复用功能时,引脚的状态是由对应的外设控制,而不是输出数据寄存器。
另外在开漏式复用功能模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态,同时外设可以读取 IO 口的信息。
在这里插入图片描述

8、推挽式复用功能

复用功能介绍查看开漏式复用功能,结构分析参考推挽输出模式。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值