基于STM32的GPIO电路解析

芯片内部的GPIO电路结构

GPIO即通用和复用功能I/O(GPIO和AFIO)


上图所示为GPIO内部电路,其中红色框选为电路保护部分。其余的电路可以分为输入输出两部分。

输入部分电路

在这里插入图片描述

如图中蓝色框选区域所示为输入部分电路。
从引脚处进入电路内部首先会经过内置的上拉电阻下拉电阻,然后经过模拟输入的结点进入肖特基触发器,之后可以选择功能的使用,究竟这个引脚是用来复用功能还是IO信号的输入。

内置上下拉电阻(上拉输入/下拉输入)

在常见的按键电路中可以见到包括但不限于如下图所示的情况。

在这里插入图片描述

取一种情况

在这里插入图片描述

当按键按下的时候可知引脚输入了高电平,但是按键松开的时候,该引脚的电平状况是什么? 答:不知道!

因为按键断开的时候,该引脚悬空,并不能确定其电压。

为了使按键松开时能有确定的电压信号,可以修改外部电路如下。

在这里插入图片描述
如果是购买的开发板,无法更改外部电路的情况下,这个时候就可以使用内置的下拉电阻。

通过软件可以配置成下拉输入或上拉输入,需要根据实际情况来。以CubeMX来举例,在配置时可以进行如下选择。

在这里插入图片描述

在这里插入图片描述
在外部电路中的3.3V可以串联一个电阻,即使不串联电阻也可因为配置内置下拉而不用担心短路烧毁。

在未配置内置上下拉电阻时,输入引脚为高阻态的浮空模式。此时该引脚不会消耗电流,可以降低功耗。
但是需要注意的是,在未配置任何功能的时候,该引脚为浮空模式。由于电平状态不确定,此时该引脚若接入逻辑电路中可能会导致输出错误的逻辑。

模拟输入

在内部电路结构中可以看到信号在进入肖特基触发器之前,经过了模拟输入通道的结点。若将该引脚配置为模拟输入模式,将会禁用上下拉电阻。该模式主要用于将外部模拟信号转换为数字信号,以便微控制器进行处理和分析。
以下是 STM32 模拟输入的常用应用场景:

  • 模数转换(ADC):将外部模拟信号(如电压、电流、温度、光强等)转换为数字信号。

  • 高精度测量:通过 ADC 模块实现高精度的模拟信号测量。

  • 多通道支持:STM32 的 ADC 模块通常支持多通道输入,可以同时测量多个模拟信号。

引脚复用功能

无论输出模式还是输入模式,都可配置成复用引脚。此时引脚不会用于基本的高低电平的输出和输入而是为其他片上外设而服务,如I2C、UART等。

肖特基触发器

主要用于信号整形和噪声抑制。它的核心作用是将输入信号转换为干净、稳定的输出信号,特别适用于处理带有噪声或抖动的输入信号。

肖特基触发器的典型应用:

  • 按键输入
    在按键电路中,肖特基触发器可以消除按键抖动,确保每次按键只触发一次操作。

  • 传感器信号处理
    在传感器信号处理中,肖特基触发器可以抑制噪声,提高信号质量。

  • 通信接口
    在 UART、I2C 等通信接口中,肖特基触发器可以整形信号,确保数据传输的可靠性。

  • 电平转换
    在电平转换电路中,肖特基触发器可以将不同电平标准的信号转换为稳定的输出信号。

输出部分电路

在这里插入图片描述
如图中红色框选区域所示为输出部分电路。
主要分为推挽输出、开漏输出复用功能

推挽输出

通常进行高低电平输出时,例如控制LED灯的亮灭就会使用推挽输出模式。如上图所示,在我们软件上配置好相关寄存器后,通过控制mos管的开关来进行高低电平的输出。

  • 当输出高电平时,PMOS 导通,NMOS 截止。
  • 当输出低电平时,NMOS 导通,PMOS 截止。

复用功能

通过配置相关寄存器来选择其他片上外设,从而实现不同于单纯电平输出的其他高级功能,例如PWM输出等。

开漏输出

在开漏输出模式下,禁用了PMOS。这样引脚就只能处于低电平和高阻态的状态,若要输出高电平,则需要外部的上拉电阻。
为了简单阐述开漏输出模式,以两片芯片之间的引脚通信举例。
在这里插入图片描述

如上图所示,简化了芯片内部的电路,只保留了开漏输出部分。

首先,如果芯片1想输出高电平,而芯片2想输出低电平该怎么办?
假设芯片1打开了PMOS输出了高电平,而此时芯片2打开了NMOS输出低电平,那么就导致了芯片1的VDD和芯片2的VSS短路从而导致芯片烧毁。

因此开漏输出模式禁用了PMOS,想要输出高电平,可以使用外部的上拉电阻实现。如下图。

在这里插入图片描述

以芯片1为例,通常状态下PMOS被禁止使用,而NMOS也不驱动,那么在其芯片内部该引脚为悬空状态,电平由外部电路决定。外部电路接了上拉电阻,将A点抽象成芯片1的引脚电平。那么就可以认为该引脚输出了高电平。
当芯片1驱动NMOS时,接地,A点的电平为低电平,认为芯片1输出了低电平。
同理结合芯片1和芯片2同时来看:

  • SOC1驱动N-MOS;SOC2驱动N-MOS; A = 0 & 0 = 0;
  • SOC1驱动N-MOS;SOC2不驱动N-MOS; A = 0 & 1 = 0;
  • SOC1不驱动N-MOS;SOC2驱动N-MOS; A = 1 & 0 = 0;
  • SOC1不驱动N-MOS;SOC2不驱动N-MOS; A = 1 & 1 = 1;

上述模式在IIC通信中也有相似的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值