单片机的几种GPIO输入输出模型详解

模式选择汇总参考表:

模式 输出驱动 输入阻抗 默认状态 典型应用场景
推挽输出 强驱动 禁用 可配置 LED, SPI, 高速信号
开漏输出 弱驱动 禁用 低/悬空 I²C, 电平转换, 线与
浮空输入 禁用 极高 不确定 外部强驱动信号
上拉输入 禁用 中高 高电平 按键(接地型), 数字输入
下拉输入 禁用 中高 低电平 按键(接VDD型), 中断
模拟输入 禁用 极高 无 ADC, 模拟信号采集

输出模式:

1. 推挽输出 (Push-Pull)

复制代码
       VDD
        │
        ├──P-MOS◯──┐ (受控导通)
        │         │
控制逻辑─┤         ├───GPIO引脚
        │         │
        ├──N-MOS◯──┘ (受控导通)
        │
       GND

工作状态:
高电平:P-MOS导通,N-MOS截止 → 引脚=VDD
低电平:P-MOS截止,N-MOS导通 → 引脚=GND
  • 特点:

    • 双MOS管协同工作(P管拉高,N管拉低)

    • 可主动输出高/低电平

    • 驱动能力强(典型20mA),多个IO之间不可以直接并联,否则短路

  • 应用:

    • LED控制

    • 驱动继电器

    • SPI、UART通信

    • 高速数字信号

2. 开漏输出 (Open-Drain)

复制代码
       VDD
        │
        ├──P-MOS ──┐ (永久禁用)
        │         │
控制逻辑─┤         ├───GPIO引脚───┬──外部上拉电阻──VDD_EXT
        │         │             │ (可选不同电压)
        ├──N-MOS◯──┘ (受控导通)  │
        │                      ▼
       GND                    GND

工作状态:
低电平:N-MOS导通 → 引脚=GND
高电平:N-MOS截止 → 引脚悬空(需外部上拉)
  • 特点:

    • 只有N-MOS工作

    • 高电平依赖外部上拉

    • 支持"线与"连接,即多个IO之间可以直接并联

  • 应用:

    • I²C/SMBus总线

    • 电平转换(3.3V↔5V)

    • 多设备中断共享

    • 开关键控

输入模式:

1. 浮空输入 (Floating Input)

复制代码
       VDD
        │
        ├──P-MOS ──┐ (禁用)
        │         │
控制逻辑─┤         ├───GPIO引脚───外部信号源
        │         │
        ├──N-MOS ──┘ (禁用)
        │
       GND
        ▲
        │
  无上拉/下拉
  • 特点:

    • 完全悬空状态

    • 高阻抗输入(>1MΩ)

    • 易受干扰

  • 应用:

    • 外部明确驱动的信号

    • ADC输入前级

    • 高速数字信号接收

2. 上下拉输入 (Pull-up Input)

复制代码
       VDD
        │
        │ 内部上拉电阻(30-50kΩ)
        ├───┬──────┐
        │   │      │
        ├──P-MOS ──┤ (禁用)
        │         │
控制逻辑─┤         ├───GPIO引脚
        │         │
        ├──N-MOS ──┘ (禁用)
        │
       GND




       VDD
        │
        ├──P-MOS ──┐ (禁用)
        │         │
控制逻辑─┤         ├───GPIO引脚
        │         │
        ├──N-MOS ──┘ (禁用)
        │
       GND
        ▲
        │
  内部下拉电阻(30-50kΩ)
  • 特点:

    • 内部上拉电阻使能

    • 默认高电平

    • 抗干扰能力增强

  • 应用:

    • 按键检测(按键接地)

    • 数字传感器输入

    • 默认高有效的信号

3. 模拟输入 (Analog Input)

复制代码
       VDD
        │
        ├──P-MOS ──┐ (禁用)
        │         │
控制逻辑─┤         ├───GPIO引脚───┬──ADC输入
        │         │             │
        ├──N-MOS ──┘ (禁用)      ▼
        │                  模拟信号源
       GND
  • 特点:

    • 完全断开数字电路

    • 高阻抗模式(>10MΩ)

    • 无上拉/下拉

  • 应用:

    • ADC采样

    • 模拟传感器接口

    • 精密测量电路

实际配置示例(STM32 HAL库):

cpp 复制代码
// 推挽输出
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

// 开漏输出(I²C)
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;

// 上拉输入(按键检测)
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;

// 下拉输入
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;

// 模拟输入(ADC)
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
相关推荐
我先去打把游戏先21 分钟前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu
木子n11 小时前
车载以太网与SOME/IP服务化通信实战-02.状态机与订阅:SOME/IP-SD的三态迁移、重传账与上电风暴
嵌入式硬件·网络协议·车载系统·车载以太网·some/ip
Gongsion1 小时前
30V输入耐压|1.5μA超低静态电流|200mA输出,CSM52系列:线性稳压器LDO,12V母线转3.3V/5V传感器、MCU弱电支路可靠稳压方案
单片机·嵌入式硬件·车载系统·无人机·智能家居
Steelenwang1 小时前
基于XT960的泵站监控方案
嵌入式硬件·物联网·硬件工程·智慧城市·智能硬件
国科安芯1 小时前
面向低轨卫星互联网载荷控制的抗辐射MCU技术综述
嵌入式硬件·mcu·卫星·低轨卫星·商业航天·抗辐射·微型互联网
2401_862880823 小时前
input 子系统框架 、platform 驱动框架
linux·驱动开发·嵌入式硬件
Industio_触觉智能4 小时前
瑞芯微AI算力NPU路线图与协处理器|触觉智能瑞芯微RK方案商出品
人工智能·嵌入式硬件·硬件架构·智能硬件·npu·瑞芯微·端侧ai
女神下凡4 小时前
嵌入式系统 vs 嵌入式文件系统
arm开发·嵌入式硬件·设计规范
芯岭技术5 小时前
XL2400T收发芯片,2.4G无线荧光棒控光解决方案,+PA距离可达700M
单片机·嵌入式硬件·物联网
HPT_Lt5 小时前
ZCC485符合RS485、422通信协议高速超低功耗接口芯片
嵌入式硬件