STM32的GPIO解析

STM32的GPIO相当于STM32的四肢,一个STM32芯片被封装好后,能与外部直接进行交互的就是它的GPIO。STM32F103微控制器有7组通用I/O口(GPIO),用GPIOx(x是A、B、C、D、E、F、G)表示。每组端口有16个外设引脚,分别用Px0、Px1、…、Px15(x是A~G)表示。芯片的型号不同,引脚的数量也有也区别。要学好STM32的GPIO需要理清“443”——4种输入模式、4种输出模式、3种输出速度。
在这里插入图片描述
上图为STM32I/O端口位的基本结构,大体可分为三个部分。从右到左依次为:I/O端口、输入/输出驱动器、输入/输出寄存器。
端口部分需要注意的一个问题是它是否有FT标识 ,因为STM32每个端口对电压的承受能力不同,有的能容忍5V的电压,有的只能容忍3.3V的电压。所以在做为输出或输入时要注意STM32端口的电压承受能力。有FT标识的表示能容忍5V的电压,没有则表示只能容忍3.3V的电压。

4种输入模式

1.浮空输入模式

在这里插入图片描述
浮空输入模式、上拉输入模式、下拉输入模式3个模式的结构配置图如上所示。从图中可以看出在输入模式下输出驱动器的开关是断开的,说明在输入模式下不能进行输出。
从右到左分析:
外设从I/O引脚接入后,信号需要先通过两个保护二级管才能进入,保护二极管的作用是防止输入的电压过高或过低,当电压过高时,连接VDD的保护二极管导通,高电压被导入VDD,当电压过低时,连接VSS的保护二级管导通,低电压从VSS被导出I/O口,实现保护功能。
经保护二极管过后信号进入输入驱动器,这时电路上通过开关接了一个上拉电阻和一个下拉电阻,若此时两个开关均打开,则输入为浮空输入模式。
继续向左就到了肖特基触发器,肖特基触发器的作用是对输入电平进行整形,若输入电压高于某一阈值,则输入为高,若输入电压为某一阈值,则输入为低。肖特基触发器就是排除信号的扰动。
经肖特基触发器后,输入信号输入到输入数据存储器,此时CPU就可对输入的数据进行读操作了。
浮空输入模式其引脚输入阻抗较大,一般用于标准的通信协议USART或IIC的接收端。

2.上拉输入模式

上拉输入模式与浮空输入模式相似,区别在于上图中1处的上拉电阻开关闭合、2处下拉电阻开关打开,上拉电阻接入电路中。当I/O口引脚无输入信号时,读取引脚数据为1,即为高电平。

3.下拉输入模式

下拉输入模式同上述两种方式相似,上拉输入模式下上拉开关闭合,而在下拉输入模式下2处下拉电阻开关闭合、1处上拉电阻开关打开,下拉电阻接入电路中。当I/O口引脚无输入信号时,读取引脚数据为0,即为低电平。

4.模拟输入模式

在这里插入图片描述
模拟输入模式的结构配置入上图所示。
在I/O引脚输入部分与浮空输入模式、上拉输入模式、下拉输入模式3个模式相同。输入驱动器部分不同的地方是,不接上拉电阻和下拉电阻,肖特基触发器关闭,模拟输入不经过肖特基触发器,是在肖特基触发器的前端引出信号直接输入芯片内部外设。例如,外设信号传送给模拟/数字转换器ADC模块,由ADC采集电压信号。

输入总结

在4种输入模式中,浮空输入模式、上拉输入模式、下拉输入模式3个模式相似。若不接上拉电阻和下拉电阻就为浮空输入模式;只接上拉电阻就是上拉输入模式;只接下拉电阻就是下拉输入模式。浮空输入模式对比上拉输入模式和下拉输入模式:浮空输入模式在没有外部信号输入时其电平不确定,容易受外部干扰信号的影响,上拉输入模式/下拉输入模式由于接入了上拉电阻/下拉电阻其电平在没有输入信号时就会表现为高电平/低电平。模拟输入模式对比浮空输入模式、上拉输入模式和下拉输入模式:模拟输入模式输入信号没有经过肖特基触发器整形,输入的信号是模拟信号,而其他三种输入模式的输入信号经过肖特基触发器整形,将原本变化缓慢或畸形的输入脉冲信号整形为较理想的矩形脉冲信号,所以输入的信号是数字信号。

4种输出模式

开漏输出模式

在这里插入图片描述
开漏输出模式和推挽输出模式的结构配置图如上所示,需要注意的是,在输出模式下输入模式的开关是断开的,而在输出模式下,输入驱动器中的肖特基触发器是打开的,说明I/O口在输出时也是有做输入功能的。
输出模式要从左向右分析:CPU将数据写入到输出数据寄存器中,输出数据寄存器将数据通过输出控制再经P-MOS或N-MOS输出到I/O引脚。
开漏输出模式时P-MOS关闭。输出“0”,让N-MOS管导通,使输出接地,为0V;输出“1”,不激活P-MOS管,输出为高阻态,要获得高电平需外接一个上拉电阻,并由其接通电源决定输出高电平的电压。但开漏输出具有“线与”特点,即多个开漏输出引脚连接在一起时,只当所有脚都输出高阻态,才能由上拉电阻提供高电平。若任意一个引脚为低电平,线路输出就是低电平,相当于“逻辑与”的功能。

推挽输出模式

推挽输出模式下P-MOS和N-MOS均导通,只是导通的时刻不一样。输出“1”,让P-MOS管导通;输出“0”,让N-MOS导通。两个MOS管轮流导通,使其负载能力和开关速度都比普通方式有很大提高。输出低电平是0V,输出高电平是3.3V。

复用开漏输出模式和复用推挽输出模式

在这里插入图片描述
复用输出模式结构配置图如上所示。
上述的两种输出模式也可称为通用输出模式,输出的信号是输出数据寄存器中的信号。复用输出模式输出的信号为片上外设的信号。STM32为控制器的I/O引脚不仅能作为通用输入/输出端口GPIO引脚,大多数还有复用功能,即作为片上外设(如串口、ADC等)的I/O引脚,称为复用I/O端口的AFIO。所以,当I/O引脚作为GPIO功能时,应选择通用开漏输出模式和通用推挽输出模式。当I/O引脚作为复用功能时,应选择复用开漏输出模式和复用推挽输出模式。复用输出模式的开漏和推挽同通用模式相同。复用功能可查找STM32数据手册。

输出总结

输出模式可分为两大类——通用输出、复用输出。通用输出时I/O引脚作为GPIO功能,复用输出时I/O引脚作为复用功能。其又可分为两小类——开漏输出、推挽输出。功能配置区别在于P-MOS和N-MOS的导通情况。只有N-MOS导通为开漏输出;P-MOS和N-MOS轮流导通为推挽输出。开漏输出只可以输出强低电平,适合做电流型驱动,若要输出高电平需要外接上拉电阻。推挽输出可输出强高低电平,连接数字器件。

输入输出总结

在这里插入图片描述

3种输出速度

GPIO的I/O引脚用于输出模式是右三种速度选择,分别基于2MHz、10MHz和50MHz频率。“速度”指的是输出驱动电路的响应速度,并不是输出信号的速度。
I/O端口的输出部分设计有多个响应不同速度的驱动电路,应该根据需求选择相匹配的驱动电路,达到最佳的噪声控制效果,并降低功耗。
当GPIO的I/O引脚设置为输入模式时,不需要配置输出速度。

猜你喜欢

转载自blog.csdn.net/Tao_9/article/details/129902078