STM32HAL库 -- 2.介绍外设GPIO

目录

1.介绍GPIO

2.GPIO结构图及分析

2.1保护二极管部分

2.2输入部分

3.3输出部分

3.总结

1.介绍GPIO

        GPIO(General Purpose Input/Output)是STM32微控制器中最基本的外设之一,用于控制外部设备,或者进行采集信息的外设,即进行数字信号的输入和输出。每个GPIO引脚都可以配置为输入或输出,并且可以设置为多种模式,如推挽输出、开漏输出、模拟输入等。

        这个外设按组分配,我们经常会看到GPIOA,GPIOB...这样的字眼,这个就是GPIO的A组,B组。每组最多有16个引脚,比如GPIO_PIN_1,GPIO_PIN_2,就是对应的GPIO引脚。

        引脚的电平范围在0-3.3V,部分的引脚可以兼容5V的电压。这一点的在《STM32F103xx数据手册》中被提到。如下图所示的PE2、PE3等就是GPIOE的GPIO_PIN_2引脚,带有FT标志表示这个引脚兼容5V的电压。

2.GPIO结构图及分析

        上图是GPIO的基本结构图,我们将这个结构图划分成3个部分,即输入部分、输出部分和保护二极管部分。如下图所示: 

2.1保护二极管部分

        单独将这部分截出来,分为两个部分,如下图所示:

        首先我们回顾一下二极管。二极管主要由P型半导体和N型半导体结合而成,它们的交界面会形成一个PN结。二极管的基本作用是:单向导通,反向截止。

        所谓单向导通,反向截止。意思就是,当给二极管加上正向电压(即P区接电源正极,N区接电源负极)时,二极管呈现出较低的电阻,电流可以较容易地从P极流向N极,这就是二极管的单向导通特性;当给二极管加上反向电压(即P区接电源负极,N区接电源正极)时,二极管呈现出极高的电阻,相当于断路,这就是二极管的反向截止特性。

        当二极管工作在正向导通的时候,会产生电压下降的现象,这就是二极管的导通压降。比如4V的电压正向通过二极管之后,电压的数值可能会变成3.3V。不同类型的二极管,导通压降也不相同,如下表所示:

硅二极管0.6V-0.7V
锗二极管0.2V-0.3V
肖特基二极管0.15V-0.4V

        有了上面的介绍之后,再来理解一下二极管的钳位功能。二极管钳位是指利用二极管的单向导通特性,将电路中某一点的电位限制在一个特定的范围之内。

        例如,在一个电路中,把二极管阳极接参考电压,阴极接被钳位信号,就像是上面图中保护二极管的上半部分。当IO口的输入电压大于VDD_FT(VDD)+ 导通压降的时候,这个上部分的电路就被激活,就不会再进入到后面的电路中,起到保护后面电路的作用。举例,VDD为3.3V,导通压降为0.7V,此时如果输入的电压大于3.3V + 0.7V = 4V时,输入的电压就不会进入到后面的电路。

        同理,下半部分也是一样的。当输入电压大于 -0.7V(反向电压)时,下半部分的电路就被激活,同样的不会进入到后面的电路。

        所以当输入合理的电压值时,才能进入到后面的电路中,这就起到了保护的作用。

2.2输入部分

        我们再看输入部分。在上图中红色框的内容就是GPIO的输入部分。我们在具体的将输入部分细致的划分一下,如下图所示:

        由于是输入,此时我们把图从右往左看,首先橙色框的保护二极管以及介绍过。再看红框的内容,即上下拉电阻部分。

        上下拉电阻的主要作用是为GPIO引脚提供一个确定的默认电平。在没有外部信号输入或者外部信号处于高阻态时,防止引脚电平处于不确定状态,从而提高系统的稳定性和抗干扰能力。

        这两个电阻的阻值大约在30K-50K之间。可以通过控制上、下这两个开关,来决定工作在上拉状态、下拉状态和浮空状态。

        上拉状态:当GPIO引脚没有外部信号驱动时,上拉电阻会将引脚电平拉高到电源电平(通常为高电平)。当外部输入一个低电平信号时,由于外部信号的驱动能力较强,能够将引脚电平拉低。

        下拉状态:当GPIO引脚没有外部信号驱动时,下拉电阻会将引脚电平拉低到地电平(通常为低电平)。当外部输入一个高电平信号时,引脚电平会被拉高。

        浮空状态:即上拉、下拉都不设置,电平完全由外部输入的电压决定。所以在这种模式下,引脚的电平是不确定的。

        当经过上下拉部分之后,这个输入信号可以有两个去向,即变成模拟输入信号或经过TTL肖特基触发器进行”整形“。

        模拟输入:在该模式下,上拉和下拉电阻会被禁用,模拟信号源可以直接连接GPIO 引脚,用于采集连续变化的模拟电压值,而不会对输入信号进行数字逻辑处理(后面的TTL肖特基触发器),即不将其转换为高、低电平这样的数字信号。再继续相连到芯片内部的模拟电路,通常是连接到模数转换器(ADC,Analog - to - Digital Converter)的输入通道。简而言之,外部的模拟信号通过引脚直接传输到 ADC 中。

       如果不使用模拟功能,输入的信号就会经过TTL肖特基触发器。这个触发器能够将模拟信号转换为符合芯片内部要求的数字信号,方便后续的处理和控制。触发器有一个特定的阈值电压,当输入信号电压低于这个阈值时,触发器输出低电平;当输入信号电压高于这个阈值时,触发器输出高电平如下图所示:

        注:上图的TTL肖特基触发器输出端有一个反相器。

        经过TTL肖特基触发器之后,这个信号就变成了数字信号,可以通过输入数据寄存器进行读取数据,也可送给其他外设来进行使用。

        总结一下,输入部分有4种模式:输入上拉、输入下拉、浮空输入、模拟输入。

3.3输出部分

        我们再看输出部分如下图所示:

        由于是输出信号,此时我们将上图从左往右看。首先是将要输出的数据写入到位设置/清除寄存器中,进而再写入到输出数据寄存器中,然后经过输出驱动器设置输出控制,之后就输出到了GPIO引脚上。

        输出驱动器由输出选择器和P-MOS管、N-MOS管结构组成。下面简单介绍一下这两个MOS管。

        MOS管主要由源极(S)、栅极(G)、漏极(D)和衬底构成。在栅极和半导体之间有一层绝缘的氧化物层(通常是二氧化硅),这层氧化物将栅极与半导体隔离开,形成一个电容结构。

        简介一下N-MOS管工作原理:

        截止状态:当栅极电压Vgs(栅极与源极之间的电压)小于开启电压 Vth​(一个特定的正值)时,栅极下方的P型衬底中没有形成导电沟道。此时,即使在漏极和源极之间施加电压 Vds(漏极与源极之间的电压),也几乎没有电流从漏极流向源极,MOS管处于截止状态,相当于开关断开。

        导通状态:当栅极电压Vgs大于开启电压 Vth​时,栅极上的正电压会吸引P型衬底中的电子,在栅极下方形成一个N型的导电沟道,称为反型层。这个导电沟道将漏极和源极连接起来。此时,若在漏极和源极之间施加正向电压 Vds​,电子就会从源极通过导电沟道流向漏极,形成漏极电流 Id​。在一定范围内,漏极电流Id随着栅极电压Vgs的增大而增大,MOS管处于导通状态,相当于开关闭合。

        在简单P-MOS管的工作原理:

        截止状态:当栅极电压Vgs(栅极与源极之间的电压)大于Vth​(一个特定的负值)时,栅极下方的N型衬底中没有形成导电沟道。即使在漏极和源极之间施加电压 Vds,也几乎没有电流从源极流向漏极,MOS管处于截止状态。

        导通状态:当栅极电压Vgs小于开启电压 Vth​时,栅极上的负电压会吸引N型衬底中的空穴,在栅极下方形成一个P型的导电沟道。若在漏极和源极之间施加合适的电压 Vds​(源极电位高于漏极电位),空穴会从源极通过导电沟道流向漏极,形成漏极电流 Id​,MOS管处于导通状态。

        简而言之,MOSFET(分N沟道和P沟道)基于栅极电压控制,N沟道当栅极电压Vgs大于开启电压形使漏极和源极导通,P沟道当栅极电压Vgs小于开启电压使漏极和源极导通,以此实现开关功能。

        输出有四种输出模式,即推挽输出和开漏输出,推挽复用,开漏复用。

        在推挽输出模式下,通过控制两个MOS管的导通和截止,实现引脚输出高、低电平。当需要在GPIO引脚输出低电平时,控制电路会使N - MOS管导通,P - MOS管截止;输出高电平时,控制电路会使P - MOS管导通,N - MOS管截止。

        而开漏输出电路只有一个N沟道MOS管。在开漏输出模式下,仅通过控制N沟道MOS管,输出低电平时导通接地,输出高电平时处于高阻态。

        简而言之,推挽输出,能输出高、低电平,驱动能力强;开漏输出只能输出低电平,输出高电平时为高阻态,需外接上拉电阻。

        推挽复用和开漏复用都是以上的原理然后用于特定外设功能输出,不再赘述。

3.总结

GPIO有8种工作模式,4种输入模式如下表所示:

输入模式介绍
上拉输入内部连接上拉电阻,无外部信号时引脚保持高电平
下拉输入内部连接下拉电阻,无外部信号时引脚保持低电平
浮空输入上拉、下拉电阻都不连接,电平完全由外部输入的电压决定
模拟输入用于读取模拟信号,如连接传感器获取模拟量

        4种输出模式如下表所示:

输出模式介绍
推挽输出能输出高、低电平,驱动能力强
开漏输出只能输出低电平,输出高电平时为高阻态,需外接上拉电阻
推挽复用用于特定外设功能输出
开漏复用用于特定外设功能输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值