问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

GPIO的几种模式讲解

创作时间:
作者:
@小白创作中心

GPIO的几种模式讲解

引用
CSDN
1.
https://m.blog.csdn.net/2301_79508803/article/details/144796251

GPIO(通用输入输出)是嵌入式系统和单片机中非常重要的一个概念,它允许开发者通过软件控制硬件的输入输出。本文详细介绍了GPIO的8种工作模式,包括4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出),并结合电路结构和应用场景进行了深入讲解。

一、GPIO的模式

GPIO支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出)。

二、GPIO的结构

每一个GPIO口都是这样的结构,单片机通过多个开关的控制来实现不同的模式。

三、模式的特点及使用场景

1.上拉输入

图中开关打开
上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在高电平;在I/O端口输入为低电平的时候,输入端的电平也是低电平。
施密特触发器:施密特就是为了防止在某一个临界电平的情况出现各种情况的抖动出现,为了稳定我们的输出而设计的。

2.下拉输入

下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在低电平;在I/O端口输入为高电平的时候,输入端的电平也是高电平。

*上拉与下拉的选择

3.浮空输入

浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。即I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。
通常用于IIC、USART。

4.模拟输入

模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等。(3.3v、9v、5v)

5.开漏输出

开漏输出模式下(上拉电阻+N-MOS管),通过设置位设置/清除寄存器或者输出数据寄存器的值,途经N-MOS管,最终输出到I/O端口。当设置输出的值为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平。

6.开漏复用输出

与开漏输出类似,只不过输出的内容不再从输出数据寄存器,而是片上外设的复用功能输出。
片内外设功能:TX1,MOSI,MISO,SCK,SS

7.推挽输出模式

推挽输出模式下(P-MOS管+N-MOS管),通过设置位设置/清除寄存器或者输出数据寄存器的值,途经P-MOS管和N-MOS管,最终输出到I/O端口。这里要注意P-MOS管和N-MOS管,当设置输出的值为高电平的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口的电平就由P-MOS管决定:高电平;当设置输出的值为低电平的时候,P-MOS管处于关闭状态,N-MOS管处于开启状态,此时I/O端口的电平就由N-MOS管决定:低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,此时I/O端口的电平一定是输出的电平。

8.推挽复用输出模式

与推挽输出模式类似,只不过输出的内容不再从输出数据寄存器,而是片上外设的复用功能输出。
片内外设功能IIC的SCL、SDL

四、模式的选择

在使用 GPIO 时,根据具体应用需求选择合适的模式可以让功能实现更高效,以下是 GPIO 模式选择的总结:

1. 输入相关模式

1.1 浮空输入(Floating Input)

• 选择场景:
• 外部电路已经明确设置电平。
• 需要高阻输入,不希望引脚默认有电平干扰。
• 典型应用:
• 接外部传感器输出。

1.2 上拉输入(Pull-Up Input)

• 选择场景:
• 防止引脚浮空,默认逻辑为高电平。
• 典型应用:
• 接按钮或开关输入,默认无按下为高电平。

1.3 下拉输入(Pull-Down Input)

• 选择场景:
• 防止引脚浮空,默认逻辑为低电平。
• 典型应用:
• 接按钮或开关输入,默认无按下为低电平。

1.4 模拟输入(Analog Input)

• 选择场景:
• 需要读取模拟信号(电压)。
• 典型应用:
• ADC 采集传感器信号或电位器信号。

2. 输出相关模式

2.1 推挽输出(Push-Pull Output)

• 选择场景:
• 引脚需要输出高电平或低电平来驱动外部设备。
• 典型应用:
• 驱动 LED、蜂鸣器、电路控制信号。

2.2 开漏输出(Open-Drain Output)

• 选择场景:
• 输出时需要引脚共享信号线,或需要外接上拉电阻提供高电平。
• 典型应用:
• I²C 总线通信,驱动高电压设备(通过上拉电阻)。

3. 复用功能模式

• 选择场景:
• GPIO 引脚用于特定外设功能,而非普通输入输出。
• 典型应用:
• UART 通信、SPI/I²C 时钟或数据引脚、PWM 输出等。

4. 模拟模式

• 选择场景:
• 需要禁用引脚的数字功能,用于模拟信号的输入或输出。
• 典型应用:
• ADC 信号输入、DAC 模拟信号输出。

选择总结

  1. 输入场景:
    • 信号明确且稳定:浮空输入。
    • 默认逻辑为高电平:上拉输入。
    • 默认逻辑为低电平:下拉输入。
    • 读取模拟信号:模拟输入。

  2. 输出场景:
    • 驱动简单电路:推挽输出。
    • 需要共享信号或高压驱动:开漏输出。

  3. 特殊功能:
    • 使用外设:复用功能模式。
    • 模拟电路:模拟模式。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号