深入浅出 STM32(六):GPIO 硬件电路深度剖析——从输入输出模式到 MOS 管开关原理

目录

  • 前言
  • [一、MCU 内部视角下的 GPIO 拓扑结构](#一、MCU 内部视角下的 GPIO 拓扑结构)
    • [1.1 从外部黑盒到内部宏观架构的认知转变](#1.1 从外部黑盒到内部宏观架构的认知转变)
    • [1.2 GPIO 端口与物理引脚的数量对应关系](#1.2 GPIO 端口与物理引脚的数量对应关系)
      • [1.2.1 端口的定义与命名](#1.2.1 端口的定义与命名)
      • [1.2.2 内部编号与外部命名的映射](#1.2.2 内部编号与外部命名的映射)
      • [1.2.3 形象的类比理解](#1.2.3 形象的类比理解)
    • [1.3 系统总线与 GPIO 的连接位置](#1.3 系统总线与 GPIO 的连接位置)
  • [二、GPIO 引脚的硬件电路构成概览](#二、GPIO 引脚的硬件电路构成概览)
    • [2.1 单个引脚电路的通用性原则](#2.1 单个引脚电路的通用性原则)
    • [2.2 核心电路图解构:输入与输出的二选一](#2.2 核心电路图解构:输入与输出的二选一)
      • [2.2.1 输入模式电路(Input)](#2.2.1 输入模式电路(Input))
      • [2.2.2 输出模式电路(Output)](#2.2.2 输出模式电路(Output))
      • [2.2.3 核心电路图解构:输入与输出的二选一](#2.2.3 核心电路图解构:输入与输出的二选一)
  • [三、GPIO 引脚的硬件电路构成详解](#三、GPIO 引脚的硬件电路构成详解)
    • [3.1 引脚的公共防护:双二极管钳位电路](#3.1 引脚的公共防护:双二极管钳位电路)
      • [3.1.1 为什么需要钳位保护?](#3.1.1 为什么需要钳位保护?)
      • [3.1.2 电路工作原理详解](#3.1.2 电路工作原理详解)
    • [3.2 GPIO输出模式电路工作原理详解](#3.2 GPIO输出模式电路工作原理详解)
      • [3.2.1 GPIO工作模式概览与设计哲学](#3.2.1 GPIO工作模式概览与设计哲学)
      • [3.2.2 "通用"与"复用"的本质区别](#3.2.2 “通用”与“复用”的本质区别)
      • [3.2.3 GPIO输出电路的核心架构](#3.2.3 GPIO输出电路的核心架构)
      • [3.2.4 MOS管:GPIO输出的物理开关](#3.2.4 MOS管:GPIO输出的物理开关)
        • [3.2.4.1 P-MOS与N-MOS的导通逻辑与电流方向](#3.2.4.1 P-MOS与N-MOS的导通逻辑与电流方向)
        • [3.2.4.2 GPIO输出电路的最终形态:两个开关的组合](#3.2.4.2 GPIO输出电路的最终形态:两个开关的组合)
  • 结语

🎬 云泽Q个人主页
🔥 专栏传送入口 : 《C语言》《数据结构》《C++》《Linux》《蓝桥杯系列》《笔试算法》《AI赋能》《STM32

⛺️遇见安然遇见你,不负代码不负卿~


前言

大家好啊,我是云泽Q,欢迎阅读我的文章,一名热爱计算机技术的在校大学生,喜欢在课余时间做一些计算机技术的总结性文章,希望我的文章能为你解答困惑~

一、MCU 内部视角下的 GPIO 拓扑结构

1.1 从外部黑盒到内部宏观架构的认知转变

在上一篇文章中,我们主要是把 MCU 当成一个"黑盒"来看待。那时候,我们关注的是 MCU 伸出来的一个个针脚,通过研究外部结构来理解 GPIO 输入输出对应的高低电平逻辑。这种视角虽然直观,但只能让我们知其然。现在,我们需要进入 MCU 的内部,去探究其所以然。

要真正理解 GPIO,我们必须从宏观上建立起对 MCU 内部结构的认知。这主要分为两个阶段:首先,我们要搞清楚 GPIO 和物理针脚(Pin)之间究竟是什么样的数量对应关系;其次,我们要深入到一个针脚对应的 GPIO 硬件电路内部,看看它到底是由什么构成的。

这里有一个核心概念需要明确:我们口中常说的"GPIO",其实是一个笼统的抽象概念。在直观感觉上,GPIO 似乎就是那个针脚,但实际上,从 MCU 内部视角来看,这个过程是需要被量化和具体化的。所有的 GPIO 端口(如 GPIOA、GPIOB 等)都是实实在在存在于 MCU 芯片内部的模块。

1.2 GPIO 端口与物理引脚的数量对应关系

1.2.1 端口的定义与命名

在 MCU 内部,GPIO 被划分为了多个组,我们称之为"Port"(端口)。以 STM32F103 系列为例,内部包含了从 GPIOA 到 GPIOG 共 7 个端口(Port A ~ Port G)。

为什么要叫"Port"而不是"Group"?在计算机领域,"Port"代表的是数据输入/输出的通道,它强调的是功能属性,即作为 I/O 接口的能力;而"Group"仅仅体现了分组关系。因此,使用"Port"更能准确反映 GPIO 作为 MCU 与外部设备(如 LED、按键等)通信接口的本质。

1.2.2 内部编号与外部命名的映射

每一个 Port 内部包含了 16 个具体的引脚资源。

  • 内部视角 :在 MCU 内部逻辑中,这些引脚被命名为 GPIOA_PIN0GPIOA_PIN1 ...... 一直到 GPIOA_PIN15
  • 外部视角 :当这些信号引出到芯片外部的物理封装上时,为了书写和识别的方便,我们将其统一简化命名。例如,GPIOA_PIN0 在外部就被称为 PA0GPIOA_PIN1 被称为 PA1,以此类推直到 PA15。同理,GPIOB 组对应的就是 PB0 ~ PB15

这种一一对应的关系是理解后续硬件电路的基础。当我们说操作 PA0 时,实际上就是在操作 MCU 内部 GPIOA 端口的第 0 号引脚电路。

1.2.3 形象的类比理解

为了帮助大家更好地理解这种结构,我们可以打几个比方:

  • 手与手指:一个 GPIO 端口(比如 GPIOA)就像是一只手,而它内部的 16 个引脚就像是手指(虽然人手只有 5 指,但这里是为了说明分组控制的概念),用于对外进行抓取或触碰操作。
  • USB 拓展坞:一个 GPIO 端口类似于一个 USB 拓展坞,一端通过总线连接着 MCU 这个"电脑主机",另一端则提供了多个接口(引脚)供外部设备连接。
  • 电源插排 :每个 GPIO 端口就像一个电源插排,MCU 内部有 7 个这样的插排(A~G),每个插排上有 16 个插孔(引脚)。

1.3 系统总线与 GPIO 的连接位置

如果我们打开 STM32 的参考手册,查看"系统架构"或"模块框图",就能清晰地看到 GPIO 在 MCU 内部的物理位置。

GPIOA、GPIOB 等模块并不是孤立存在的,它们全部位于 MCU 内部,并且都挂载在特定的总线上。具体来说,GPIO 端口通常挂载在 APB2 总线上(部分低速外设可能在 APB1,但 GPIO 一般在 APB2)。ARM CPU、DMA、SRAM、Flash 等其他核心组件,都是通过总线矩阵(Bus Matrix)与这些外设相连的。

这意味着,CPU 想要控制 GPIO 输出高低电平,或者读取 GPIO 的状态,都必须通过这套硬件总线电路来进行数据传输。这也是为什么我们在配置 GPIO 之前,通常需要先开启对应端口的时钟------因为时钟信号是驱动这些内部硬件电路工作的前提。

在未来的原理图绘制或分析中,完整的系统架构图往往过于复杂,压力太大。因此,我们通常会采用简化的画法:

  • 当分析输入功能时,我们只把 GPIO 电路中对应的"输入部分"拎出来画。
  • 当分析输出功能时,我们只保留电路图中的"下半部分",即输出驱动部分。

二、GPIO 引脚的硬件电路构成概览

理解了宏观结构后,接下来我们要深入微观层面,看看一个具体的 GPIO Pin 到底是由什么硬件电路组成的。这是理解 GPIO 工作原理的核心。

2.1 单个引脚电路的通用性原则

MCU 的每一个外部引脚(例如 PA0),在芯片内部都对应着一套完全独立的硬件电路。对于 STM32F103ZET6 这样拥有 112 个 GPIO 的芯片来说,内部就有 112 套这样的电路。

学习这些电路有一个非常重要的技巧:触类旁通 。你只需要把特定端口(比如 GPIOA)中的某一个引脚(比如 PA0)是如何完成 IO 操作的彻底搞清楚了,那么其他所有引脚的原理就都清楚了。因为它们的电路结构是完全一致的。

2.2 核心电路图解构:输入与输出的二选一

一个标准的 GPIO 引脚内部电路图主要包含三个关键区域:保护二极管、输入驱动器、输出驱动器。在实际工作时,根据配置的不同,电路会在"输入"和"输出"两种模式间切换,我们可以形象地称之为"二选一"。

2.2.1 输入模式电路(Input)

当我们将引脚配置为输入模式时,主要关注电路图的上半部分,也就是所谓的"上 I"部分。

速记口诀:输入看上面,简称"上 I"。

2.2.2 输出模式电路(Output)

当我们将引脚配置为输出模式时,关注点则转移到电路图的下半部分,即"下 O"部分。

速记口诀 :输出看下面,简称"下 O"。

2.2.3 核心电路图解构:输入与输出的二选一

在深入探讨具体的输入或输出模式之前,我们需要先建立一个宏观的认知:MCU 内部的一个 GPIO 引脚,其背后挂靠的其实是一整套复杂的硬件电路。这套电路在物理上是同时包含了"输入"和"输出"两部分功能的。

但在实际的学习和工程应用中,我们遵循一个**"二选一"**的原则。也就是说,对于某一个特定的引脚,在同一时刻,它要么被配置为输入功能,要么被配置为输出功能。虽然它们共用一套物理引脚,但在学习原理图时,如果将输入和输出混在一起看,很容易造成理解上的障碍。因此,我们将这套电路拆解开来,先搞懂公共的保护部分,再分别深入研究输入和输出电路。

三、GPIO 引脚的硬件电路构成详解

3.1 引脚的公共防护:双二极管钳位电路

无论是配置为输入还是输出,MCU 的每一个引脚(总计 112 个引脚,每个都有)在进入内部核心逻辑之前,都必须经过一道"安检门"。这就是我们常说的前卫电路 ,或者更专业的叫法------钳位保护电路,这是为了防止过高的电压进入 MCU 内部导致芯片烧毁所设计的。

3.1.1 为什么需要钳位保护?

这时候就有人要说了:"我又不是脑子有问题,谁会天天故意给引脚灌高电压去烧芯片呢?"

确实,在正常的逻辑设计中,我们不会主动施加违规电压。但是,误操作 是不可避免的。最典型的场景就是人体静电

  • 静电的威力 :当你手指触碰 MCU 周围的引脚时,手上携带的静电瞬时电压可能高达 ±2kV 甚至 ±15kV
  • 后果:如果没有保护电路,这股巨大的能量会瞬间击穿 MCU 内部的精密晶体管,导致芯片永久损坏。
  • 操作建议:这也是为什么在操作电路板时,建议提前洗手并接触水龙头之类的铁质产品以释放静电或佩戴绝缘工具去触摸引脚,而不是直接上手摸。除了静电,外部传感器的故障、电源的浪涌都可能导致引脚电压异常。钳位电路的作用,就是充当"牺牲品"或"泄洪道",保护内部脆弱的 ARM CPU 核心。

3.1.2 电路工作原理详解

这个保护电路的核心元件是两个二极管 。我们需要回顾一下二极管的基本特性:单向导通性 。只有当阳极电压比阴极电压高出约 0.7V (硅管压降)时,二极管才会导通电流。

基于此,钳位电路的工作逻辑如下(假设系统供电 VDD = 3.3V,地 VSS = 0V):

  1. 正常输入范围(安全区)

    • 当引脚输入的电压处于 -0.7V 到 4.0V 之间时,两个二极管均处于截止状态(不导通)。
    • 此时,信号可以无损地传输到 MCU 内部,电路表现为高阻抗,不影响正常逻辑电平。
  2. 正向过压保护(上限钳位)

    • 触发条件 :当外部输入电压过高,超过 VDD + 0.7V(即 > 4.0V)时。
    • 动作:上方的二极管(阳极接引脚,阴极接 VDD)正向偏置导通。
    • 结果 :多余的电流通过二极管直接流向电源 VDD,将引脚处的电压强行"钳位"在 4.0V 左右。这样,流入 MCU 内部 Schmitt 触发器或寄存器的电压就被限制在了安全范围内,避免了高压击穿。
  3. 负向欠压保护(下限钳位)

    • 触发条件 :当外部输入电压过低,低于 VSS - 0.7V(即 < -0.7V)时。
    • 动作:下方的二极管(阳极接 VSS,阴极接引脚)正向偏置导通。注意这里是因为引脚电压比地电位还要低 0.7V 以上,导致二极管两端压差满足导通条件。
    • 结果 :电流从地 VSS 流向外部低电位源,将引脚处的电压强行"钳位"在 -0.7V 左右。这防止了负电压破坏内部的 CMOS 结构。

总结:通过这个双二极管结构,MCU 引脚实际上被限制在了一个相对安全的电压窗口内(约 -0.7V ~ 4.0V)。凡是超出这个范围的异常能量,都会被二极管引导至电源轨或地,从而确保 MCU 内部电路的安全。

3.2 GPIO输出模式电路工作原理详解

在理解了GPIO引脚的公共防护机制后,我们需要进一步深入MCU内部,去探究GPIO究竟是如何实现"输入"与"输出"功能的。这不仅仅是软件配置的问题,更是硬件电路设计的精妙之处。接下来,我们将重点剖析GPIO的输出电路结构,特别是其中核心的MOS管工作原理。

3.2.1 GPIO工作模式概览与设计哲学

首先,我们要明确GPIO的核心职责:它主要负责MCU的输入与输出功能,解决的是I/O接口问题。在STM32等主流MCU中,GPIO的工作模式通常被设计为八种,分为两大类:

  • 四种输入模式:浮空输入、上拉输入、下拉输入、模拟输入。
  • 四种输出模式:通用推挽输出、通用开漏输出、复用推挽输出、复用开漏输出。

为什么GPIO需要设计这么多复杂的模式?难道不能简单一点吗?

这背后的核心逻辑在于通用性。GPIO不仅仅是给ARM CPU直接做输出的,它还可能被片上的其他外设(如串口UART、I2C、SPI等)复用。在设计MCU时,芯片设计者无法预知未来用户具体会使用哪些外设,也无法预知这些外设具体的电气特性需求。因此,GPIO必须把自己对应的I/O功能做得足够"通用",提供的模式越多,将来片上外设可选择的余地就越大,应用场景也就越广泛。

这就好比你的电脑键盘:如果你只是玩某些特定游戏,可能只需要WASD四个方向键就够了。但是,键盘的设计者不能只给你这四个键,因为用户还会拿它来编程、写文档、聊天。为了满足这些多样化的场景,键盘必须配备足够多的按键。同理,GPIO丰富的模式就是为了应对未来未知的复杂应用场景。

3.2.2 "通用"与"复用"的本质区别

在深入电路之前,我们需要先厘清输出模式中"通用"与"复用"的概念区别,这在后续的电路分析中至关重要:

  • 通用(General Purpose):指的是由ARM CPU直接控制GPIO进行输出。这是最通常的使用方式,CPU通过指令直接操作寄存器来控制引脚电平。
  • 复用(Alternate Function) :指的是MCU内部的片上外设(如USART、I2C控制器)"借用"GPIO引脚进行输入或输出。此时,控制权不再来自CPU的通用数据寄存器,而是来自外设模块。

3.2.3 GPIO输出电路的核心架构

让我们把目光聚焦到MCU内部的GPIO输出电路上。如果不考虑其他片上外设的干扰,仅看CPU直接控制的场景,其核心结构可以简化为以下几个关键部分:

简化图:

  1. 输出数据寄存器 :这是CPU与GPIO硬件交互的第一站。当ARM CPU想要输出一个高电平或低电平时,它会向这个寄存器写入10。这个寄存器其实属于GPIO模块的一部分,但在宏观架构图上,我们常把它看作CPU指令的执行终点。
  2. 复用器:这是一个选择开关。它的输入端有两路信号:一路来自"输出数据寄存器"(即CPU的直接控制),另一路来自"片上外设"(即复用功能输出)。复用器的作用就是决定当前引脚的控制权到底归谁。
  3. 输出控制电路:接收复用器选出来的信号(0或1),并将其转化为能够驱动MOS管的电压信号。
  4. MOS管驱动级:这是物理层面的执行机构,包含一个P-MOS管和一个N-MOS管。

3.2.4 MOS管:GPIO输出的物理开关

要深刻理解GPIO的输出,核心点在于对P-MOSN-MOS的理解。我们先明确一些基础名词,这些名词不需要死记硬背,但需要理解其含义:

  • MOS :全称是 Metal-Oxide-Semiconductor Field-Effect Transistor(金属氧化物半导体场效应管),简写为MOSFET,再简写为MOS。
  • P-MOSP-channel Metal-Oxide-Semiconductor(P沟道金属氧化物半导体)。这里的"P"代表 positive,意为积极的、正向的。
  • N-MOSN-channel Metal-Oxide-Semiconductor(N沟道金属氧化物半导体)。这里的"N"代表 negative,意为消极的、负面的、反向的。

抛开复杂的半导体物理定义,P-MOS和N-MOS的本质就是一个开关

对于MOS管,无论是P型还是N型,都有三个关键端子:

  • S (Source,源极):"Source"意为"源头",指这里是载流子(电子或空穴)的来源。
  • D (Drain,漏极):"Drain"意为"漏出",指载流子最终从这里流出器件。虽然有人将其理解为Destination(目的地),但MOS管往往不是目的地,而是一个电流路过的器件,所以官方用Drain更准确。
  • G (Gate,栅极):"Gate"就是门的意思,预示着开关的开启和关闭由它控制。

在未来的电路中,S和D是要接VCC(电源)或者GND(地)的,而G要接一个控制电路。通过控制G极的电压,来控制开关的打开和闭合,从而让S和D导通。未来真正的电流,是在S和D之间流动的。

3.2.4.1 P-MOS与N-MOS的导通逻辑与电流方向

我们可以通过电流方向来区分P-MOS和N-MOS,这是理解它们工作原理的第一层逻辑:

  • P-MOS管 :被控制电流方向从 Source (S) 流向 Drain (D) 。这符合 positive(积极的、正向的)定义,顺势而为。
  • N-MOS管 :被控制电流方向从 Drain (D) 流向 Source (S) 。这符合 negative(消极的、反向的)定义,逆水行舟。

但是,无论是从S到D,还是从D到S,电路必须是导通的。上面的符号图默认都是没有导通的状态。那么,如何让它们导通呢?答案是:给G极施加一个电压

P-MOS的导通过程(第二层理解):

施加电压的过程,就是一个闭合开关的过程。对于P-MOS,施加力的方向(控制信号)和电流方向(红色箭头)一致,这就是 positive(积极的、正向的),也是顺势而为的。所以叫做P-MOS管。当G极接收到特定的控制电压时,开关合上,电流从S流向D,电路导通。

N-MOS的导通过程(第二层理解):

同样,施加电压的过程就是闭合开关。但对于N-MOS,施加力的方向(控制信号)和电流方向(红色箭头)相反,与之对抗。这就是 negative(消极的、负面的、反向的),对抗趋势,逆流而上。所以叫做N-MOS管。当G极接收到特定的控制电压时,开关合上,电流从D流向S,电路导通。

结论总结:

  • P-MOS和N-MOS的本质是什么?是一个开关
  • 为什么要有P-MOS和N-MOS?通过小电压(G极控制),通过控制开关的手段,达到控制大电流(S-D极通路)的目的
3.2.4.2 GPIO输出电路的最终形态:两个开关的组合

现在,让我们把P-MOS和N-MOS放回到GPIO的输出电路中,看看它们是如何协同工作的。

在MCU内部,ARM CPU或者片上外设(如串口、I2C)会向输出数据寄存器 写入0或1。这个数据经过复用器 选择后,进入输出控制 电路。输出控制电路会根据写入的数据,定向地给两个MOS管(P-MOS和N-MOS)的G极施加电压。

这里有一个关键的连接方式:

  • P-MOS管的S极 :连接到外部的 VDD(通常是3.3V电源)。
  • N-MOS管的S极 :连接到外部的 VSS(即GND,0V地)。
  • 两个MOS管的D极 :连接在一起,并连接到最终的 I/O引脚

GPIO的本质原理,其实就是两个开关的闭合问题!

当ARM CPU往寄存器里写"1"时,输出控制电路会导通上方的P-MOS开关(连接VDD),同时断开下方的N-MOS开关。此时,电流从VDD经过P-MOS流向I/O引脚,引脚输出高电平。

当ARM CPU往寄存器里写"0"时,输出控制电路会导通下方的N-MOS开关(连接GND),同时断开上方的P-MOS开关。此时,I/O引脚通过N-MOS直接连通到地,引脚输出低电平。

这种由一个P-MOS和一个N-MOS互补组成的电路结构,就是我们常说的**推挽输出(Push-Pull)**的基础模型。它之所以强大,是因为它既能主动输出高电平(推),又能主动输出低电平(挽),驱动能力强,速度快。

至此,我们从宏观的MCU架构,一路拆解到了微观的MOS管开关动作,形成了一个从局部到宏观的完整认知闭环。明白了这个结构,后面再讲其他平台外设或者更复杂的通信协议时,就会轻松很多了。后续GPIO的各工作模式的详细电路解析会总结在下一篇文章

结语

相关推荐
碧海银沙音频科技研究院2 小时前
4 BES2710编译环境搭建方法
嵌入式硬件·算法
别催小唐敲代码3 小时前
STM32 定时器学习笔记:TIM 架构、输入捕获与 PWM 一篇讲透
笔记·stm32·学习
csdn杰哥3 小时前
瑞萨单片机AI教程【六】导入外部电机状态数据训练模型
人工智能·单片机·嵌入式硬件·瑞萨·ra6m5
深念Y4 小时前
ZTE_UZ901_NVRAM经验总结
linux·服务器·网络·嵌入式硬件·嵌入式·随身wifi
远翔调光芯片^138287988724 小时前
高效驱动!FP7153赋能3A大电流手电筒,单节锂电 / 5V 供电也能迸发强劲照明力
科技·单片机·嵌入式硬件·智能家居·能源
wuyk5554 小时前
89.嵌入式内存管理的“稳定利器”:内存池原理与C语言实现
c语言·开发语言·stm32·单片机·嵌入式硬件
芯片设计-曾工5 小时前
远乐YL1628 SSOP28驱动芯片详解
驱动开发·单片机·51单片机·硬件工程
芸翳&Camellia5 小时前
2026年电赛H题钢珠识别——基于深度学习的视觉目标检测与实时速度估计系统技术分析
嵌入式硬件·深度学习·目标检测·电赛
ACP广源盛139246256735 小时前
2026 PCIe互连芯片@ACP#国产替代格局解析:芯动科技领跑高端交换芯片赛道
大数据·网络·数据库·人工智能·分布式·嵌入式硬件
碧海银沙音频科技研究院5 小时前
8基于BES2700IHC数字助听器系统开发
嵌入式硬件·算法