STM32F103——GPIO八种工作模式

目录

1、GPIO 基本结构分析

2、GPIO 八种工作模式

2.1 输入浮空 

2.2 输入上拉

2.3 输入下拉

2.4 模拟功能

2.5 开漏输出

2.6 开漏式复用功能

2.7 推挽输出

2.8 推挽式复用功能

3、GPIO 八种工作模式特点及应用 


1、GPIO 基本结构分析

STM32F103的 GPIO 工作有八种模式,但是具体这些模式是怎么实现的?下面我们通过 GPIO 的基本结构图来分别进行详细分析,总的框图如下:

STM32F103——GPIO八种工作模式_第1张图片

如上图所示,可以看到右边只有 I/O 引脚, I/O 引脚就是我们可以看到芯片实物的引脚其他部分都是 GPIO 的内部结构。

 ① 保护二极管

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

上拉、下拉电阻

它们阻值大概在 30~50K 欧之间,可以通过上、下两个对应的开关控制,这两个开关由寄存器控制。当引脚外部的器件没有干扰引脚的电压时,即没有外部的上、下拉电压,引脚的电平由引脚内部上、下拉决定,开启内部上拉电阻工作,引脚电平为高;开启内部下拉电阻工作,则引脚电平为低。同样,如果内部上、下拉电阻都不开启,这种情况就是我们所说的浮空模式。浮空模式下,引脚的电平是不可确定的。引脚的电平可以由外部的上、下拉电平决定。需要注意的是,STM32 的内部上拉是一种“弱上拉”,这样的上拉电流很弱,如果有要求大电流还是得外部上拉。

施密特触发器

对于标准施密特触发器,当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变,也就是说输出由高电准位翻转为低电准位,或是由低电准位翻转为高电准位对应的阈值电压是不同的。只有当输入电压发生足够的变化时,输出才会变化,因此将这种元件命名为触发器。这种双阈值动作被称为迟滞现象,表明施密特触发器有记忆性。从本质上来说,施密特触发器是一种双稳态多谐振荡器。

施密特触发器可作为波形整形电路,能将模拟信号波形整形为数字电路能够处理的方波波形,而且由于施密特触发器具有滞回特性,所以可用于抗干扰,以及在闭回路正回授/负回授配置中用于实现多谐振荡器。

特点:当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变。作用:整形!如正弦波转方波;如下正弦转方波图:

STM32F103——GPIO八种工作模式_第2张图片

 ④ P-MOS 管和 N-MOS 管

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

2、GPIO 八种工作模式

上面我们对 GPIO 的基本结构图中的关键器件做了介绍,下面分别介绍 GPIO 八种工作模式对应结构图的工作情况。

2.1 输入浮空 

输入浮空模式:

上拉/下拉电阻为断开状态。

②施密特触发器打开。

③双MOS管不导通,输出被禁止。

输入浮空模式下,IO 口的电平完全是由外部电路决定。如果 IO 引脚没有连接其他的设备,那么检测其输入电平是不确定的。也就是常说的高阻抗状态,高阻态可以理解成外部没有接任何东西的时候。该模式可以用于按键检测等场景。

特点:空闲时,IO状态不确定,由外部环境决定。

STM32F103——GPIO八种工作模式_第3张图片

2.2 输入上拉

输入上拉模式:

①上拉电阻导通。

②下拉电阻关闭。

③施密特触发器打开。

④双MOS管不导通,输出被禁止。

在需要外部上拉电阻的时候,可以使用内部上拉电阻,这样可以节省一个外部电阻,但是内部上拉电阻的阻值较大,所以只是“弱上拉”,不适合做电流型驱动。

特点:空闲时,IO呈现高电平。

STM32F103——GPIO八种工作模式_第4张图片

2.3 输入下拉

输入下拉模式:

①上拉电阻关闭。

②下拉电阻导通。

③施密特触发器打开。

④双MOS管不导通,输出被禁止。

在需要外部下拉电阻的时候,可以使用内部下拉电阻,这样可以节省一个外部电阻,但是内部下拉电阻的阻值较大,所以只是“弱下拉”,所以不适合做电流型驱动。

特点:空闲时,IO呈现低电平。

STM32F103——GPIO八种工作模式_第5张图片

2.4 模拟功能

模拟功能:

①上下拉电阻关闭。

②施密特触发器关闭。

③双 MOS 管也关闭。

其他外设可以通过模拟通道输入输出。该模式下需要用到芯片内部的模拟电路单元,用于 ADC、DAC、MCO这类操作模拟信号的外设。

特点:专门用于模拟信号输入或输出,如:ADC和DAC。

STM32F103——GPIO八种工作模式_第6张图片

2.5 开漏输出

开漏输出模式:

①上拉下拉电阻关闭。
②施密特触发器打开。
③P-MOS管始终不导通。
④往ODR对应位写0,N-MOS管导通,写1则N-MOS管不导通。

STM32 的开漏输出模式是数字电路输出的一种,从结果上看它只能输出低电平 Vss 或者高阻态(电平不确定),常用于 IIC 通讯(IIC_SDA)或其它需要进行电平转换的场景。

开漏模式下,IO 工作如下:

①P-MOS 被“输出控制”控制在截止状态,因此 IO 的状态取决于 N-MOS 的导通状况;

②只有 N-MOS 还受控制于输出寄存器,“输出控制”对输入信号进行了逻辑非的操作;

③施密特触发器是工作的,即可以输入,且上下拉电阻都断开了,可以看成浮空输入;

STM32F103——GPIO八种工作模式_第7张图片

在“输出控制”部分做了等效处理,上图中写入输出数据寄存器①的值怎么对应到 IO 引脚的输出状态②是所研究的。

开漏输出模式下 P-MOS 一直在截止状态,即不导通,所以 P-MOS 管的栅极相当于一直接 VDD。如果输出数据寄存器①的值为0,那么 IO 引脚的输出状态②为低电平,这是我们需要的控制逻辑,怎么做到的呢?是这样的,输出数据寄存器的逻辑 0 经过“输出控制”的取反操作后,输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通,使得 IO 引脚连接到 VSS,即输出低电平。如果输出数据寄存器的值为 1,经过“输出控制”的取反操作后,输出逻辑 0 到 N-MOS 管的栅极,这时 N-MOS 管就会截止。又因为 P-MOS管是一直截止的,使得 IO 引脚呈现高阻态,即不输出低电平,也不输出高电平。因此要 IO 引脚输出高电平就必须接上拉电阻。 又由于 F1 系列的开漏输出模式下,内部的上下拉电阻不可用,所以只能通过接芯片外部上拉电阻的方式,实现开漏输出模式下输出高电平。如果芯片外部不接上拉电阻,那么开漏输出模式下,IO 无法输出高电平。

在开漏输出模式下,施密特触发器是工作的,所以 IO 口引脚的电平状态会被采集到输入数据寄存器中,如果对输入数据寄存器进行读访问可以得到 IO 口的状态。也就是说开漏输出模式下,我们可以读取 IO 引脚状态。

特点:不能输出高电平,必须有外部(或内部)上拉才能输出高电平。

2.6 开漏式复用功能

开漏式复用功能:

①上拉电阻关闭。

②下拉电阻关闭。

③施密特触发器打开。

④ P-MOS管始终不导通。

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

特点:1、不能输出高电平,必须有外部(或内部)上拉才能输出高电平。2、由其他外设控制输出。

STM32F103——GPIO八种工作模式_第8张图片

2.7 推挽输出

推挽输出模式:

①上拉电阻关闭。
②下拉电阻关闭。
③施密特触发器打开。
④往ODR对应位写0,N-MOS管导通,写1则P-MOS管导通。

STM32 的推挽输出模式,从结果上看它会输出低电平 VSS 或者高电平VDD。推挽输出跟开漏输出不同的是,推挽输出模式 P-MOS 管和 N-MOS 管都用上。同样地,我们根据参考手册推挽模式的输出描述,根据手册描述可以把“输出控制”简单地等效为一个非门,等效原理图如下:

STM32F103——GPIO八种工作模式_第9张图片

如果输出数据寄存器①的值为 0,经过“输出控制”取反操作后,输出逻辑 1 到 P-MOS 管的栅极,这时 P-MOS 管就会截止,同时也会输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通,使得 IO 引脚接到 VSS,即输出低电平。
如果输出数据寄存器的值为 1 ,经过“输出控制”取反操作后,输出逻辑 0 到 N-MOS 管的栅极,这时 N-MOS 管就会截止,同时也会输出逻辑 0 到 P-MOS 管的栅极,这时 P-MOS 管就会导通,使得 IO 引脚接到 VDD,即输出高电平。

由上述可知,推挽输出模式下,P-MOS 管和 N-MOS 管同一时间只能有一个管是导通的。当 IO 引脚在做高低电平切换时,两个管子轮流导通,一个负责灌电流,一个负责拉电流,使其负载能力和开关速度都有较大的提高。

另外在推挽输出模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态。
由于推挽输出模式下输出高电平时,是直接连接 VDD,所以驱动能力较强,可以做电流型驱动,驱动电流最大可达 25mA,但是芯片的总电流有限,所以并不建议这样用,最好还是使用芯片外部的电源。

特点:可输出高低电平,驱动能力强。

2.8 推挽式复用功能

推挽式复用功能:

①上拉电阻关闭。

②下拉电阻关闭。

③施密特触发器打开。

复用功能介绍请查看开漏式复用功能,结构分析请参考推挽输出模式,这里不再赘述。 

特点:1、可输出高低电平,  驱动能力强。2、由其他外设控制输出。
 

STM32F103——GPIO八种工作模式_第10张图片

3、GPIO 八种工作模式特点及应用 

STM32F103——GPIO八种工作模式_第11张图片

你可能感兴趣的:(stm32,stm32,嵌入式硬件,单片机)