目录
一、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种工作模式的讲解以及电路图的分析,这对于后面正式学习起到一个基础作用,在后面的学习中我们也会不断地用到这些知识。
创作不易,还请大家多多点赞支持!!!