STM32 GPIO引脚的8种工作模式详解

目录

一、GPIO基本介绍

二、GPIO基本结构分析

1、保护二极管

2、上拉、下拉电阻

3、施密特触发器        

4、P-MOS管和N-MOS管

 三、GPIO的8种工作方式

 1、浮空输入

2、上拉输入 

 3、下拉输入

4、模拟输入

5、开漏输出

6、推挽输出

7、复用开漏输出

8、复用推挽输出


一、GPIO基本介绍

什么是GPIO?

General Purpose Input Output:通用输入输出端口;

作用:控制或者采集外部器件的信息的外设;

STM32 GPIO简介

GPIO特点:1、不同型号的芯片,IO数量可能不同;2、IO口每次翻转需要2个时钟周期;3、每个IO口都可以作为中断;4、支持8中工作模式;

电气特性:

工作电压范围:2V-3.6V;不接5V;

输出电流:单个IO口,最大电流为25mA;

GPIO识别电压范围:-0.3V—1.164V(低电平)  1.833V—3.6V(高电平);

二、GPIO基本结构分析

在上图中,有端的I/O引脚,即为开发板上实实在在的引脚;此外,还有一些元器件需要提前进行介绍:

1、保护二极管

        保护二极管共有两个,分别接VDD与VSS;其作用为保护引脚外部过高或过低的电压输入。

        当引脚输入电压高于 VDD 时,上面的二极管导通,当引脚输入电压低于 VSS 时,下面的二极管导通,从而使输入芯片内部的电压处于比较稳定的值。

        虽然有二极管的保护,但这样的保护却很有限,大电压大 电流的接入很容易烧坏芯片;

2、上拉、下拉电阻

        上下拉电阻的作用是,当对应的IO口没有输入时,即没有外部的上、下拉电压,该引脚的电 平由上拉、下拉电阻决定;

         电阻阻值大概在 30~50K 欧之间,可以通过上、下两个对应的开关控制,这两个开关由寄存器控制。开启内部上拉电阻工作,引脚电平为高,开启内部下拉电阻工作, 则引脚电平为低。如果都不开启,引脚处于浮空状态,即电平不确定;

3、施密特触发器        

        施密特触发器就是一种整形电路,可以将非标准方波,整形成方波;

   特点:当输入电压高于正向阈值电压,输出为高;

             当输入电压低于负向阈值电压,输出为低;

             当输入在正负阈值电压之间,输出不改变;

4、P-MOS管和N-MOS管

            这两个元器件主要控制的是GPIO的开漏输出与推挽输出模式;

            开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行;

            推挽输出:这两个MOS管每次只有一只导通,所以导通的损耗小、效率高,输出既可以向负载灌电流,也可以从负载拉电流。

 三、GPIO的8种工作方式

模式名称 特点
浮空输入 可读取引脚电平,若引脚悬空,则输入电平不确定
上拉输入 可读取引脚电平,若引脚悬空,则输入高电平
下拉输入 可读取引脚电平,若引脚悬空,则输入低电平
模拟输入 专门用于模拟信号的输入
开漏输出 输出引脚电平,高电平为高阻态(电平不确定),低电平为VSS
推挽输出 输出引脚电平,高电平为VDD,低电平为VSS
复用开漏输出 由片上外设控制,输出引脚电平,高电平为高阻态,低电平为VSS
复用推挽输出 由片上外设控制,输出引脚电平,高电平为VDD,低电平为VSS

 1、浮空输入

1、上拉/下拉电阻为断开状态;

2、施密特触发器打开;

3、输出被禁止;

        输入浮空模式下,IO 口的电平完全是由外部引脚电路决定。如果 IO 引脚没有连接其他的设备,那么检测其输入电平是不确定的。 

2、上拉输入 

1、上拉电阻导通;

2、施密特触发器打开;

3、输出被禁止; 

        上拉输入模式下,外部引脚为高电平,输入为高电平;外部引脚为低电平,输入为的低电平。如果 IO 引脚没有连接其他的设备,那么其输入电平由上拉电阻拉至高电平。但是上拉电阻的阻值较大, 所以只是“弱上拉”,不适合做电流型驱动。

 3、下拉输入

1、下拉电阻导通;

2、施密特触发器打开;

3、输出被禁止; 

         下拉输入模式下,外部引脚为高电平,输入为高电平;外部引脚为低电平,输入为的低电平。如果 IO 引脚没有连接其他的设备,那么其输入电平由下拉电阻拉至低电平。但是下拉电阻的阻值较大, 所以只是“弱上拉”,不适合做电流型驱动。

4、模拟输入

1、上下拉电阻断开;

2、施密特触发器关闭;

3、双 MOS 管也关闭

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

5、开漏输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管关闭、N-MOS管打开;

        P-MOS 被“输出控制”控制在截止状态,因此 IO 的状态取决于 N-MOS 的导通状况, N-MOS 还受控制于输出寄存器;IO口的输出状态为低电平或高阻抗。

       此外。施密特触发器是工作的,即可以进行输入,且上下电阻都断开,可以看做为浮空输入;

         根据上图我们进行分析,开漏输出如何进行工作?首先,P-MOS管断开,则输出引脚IO的输出状态2与P-MOS管毫无关系;

        P-MOS管打开,且受1处输出数据寄存器进行控制,当输出寄存器输出0时,经过“输出控制”的去翻操作后,输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通, 使得 IO 引脚连接到 VSS,即输出低电平。如果输出数据寄存器的值为 1,经过“输出控制” 的取反操作后,输出逻辑 0 到 N-MOS 管的栅极,这时 N-MOS 管就会截止。又因为 P-MOS 管是一直截止的,使得 IO 引脚呈现高阻态,即不输出低电平,也不输出高电平。

        故开漏输出只能输出低电平与高阻抗状态,且可以以浮空输入的状态进行读访问状态;

6、推挽输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管打开、N-MOS管打开;

        P-MOS管与N-MOS都打开,故引脚可输出低电平 VSS 或者高电平 VDD。 

       此外。施密特触发器是工作的,即可以进行输入,且上下电阻都断开,可以看做为浮空输入;

        如果输出数据寄存器①的值为 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,即输出高电平。

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

7、复用开漏输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管关闭、N-MOS管打开

         一个 IO 口可以是通用的 IO 口功能,还可以是其他外设的特殊功能引脚, 这就是 IO 口的复用功能。

        在开漏输出的基础上,一个 IO 口可以是多个外设的功能引脚,我们需要选择作为其中一个外设的功能引脚。当选择复用功能时,引脚的状态是由对应的外设控制,而不是输出数据寄存器。

        在开漏式复用功能模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态,同时外设可以读取 IO 口的信息 。

8、复用推挽输出

1、上下拉电阻断开;

2、施密特触发器打开;

3、P- MOS 管打开、N-MOS管打开;    

         一个 IO 口可以是通用的 IO 口功能,还可以是其他外设的特殊功能引脚, 这就是 IO 口的复用功能。

         在推挽输出的基础上,一个 IO 口可以是多个外设的功能引脚,我们需要选择作为其中一个外设的功能引脚。当选择复用功能时,引脚的状态是由对应的外设控制,而不是输出数据寄存器。

        在开漏式复用功能模式下,施密特触发器也是打开的,我们可以读取 IO 口的电平状态,同时外设可以读取 IO 口的信息 。

        总结:本节我们对于GPIO做了最基础的认识,主要包括基本结构的分析以及8种工作模式的讲解以及电路图的分析,这对于后面正式学习起到一个基础作用,在后面的学习中我们也会不断地用到这些知识。

创作不易,还请大家多多点赞支持!!!

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 GPIO引脚的8种工作模式详解

发表评论