当前位置: 首页 > article >正文

MCU的GPIO 八种模式

对于MCU来说,GPIO总共有8种模式:

  1. 浮空输入模式
  2. 上拉输入模式
  3. 下拉输入模式
  4. 模拟输入模式
  5. 推挽输出模式
  6. 开漏输出模式
  7. 复用推挽输出模式
  8. 复用开漏输出模式

一、STM32 普通 GPIO 内部逻辑图

在这里插入图片描述

1、保护二极管

IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。
当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。也叫钳位二极管

2、P-MOS 管和 N-MOS 管

由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。

3、TTL 肖特基触发器

信号经过触发器后,模拟信号转化为 0 和 1 的数字信号。但是,当 GPIO 引脚作为 ADC 采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。(可以理解为一个比较器,大于某个值是1,小于某个值是0)

查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;

如果没有标注“FT”,就代表着不兼容5V。比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。

二、模式

1、浮空输入模式

当GPIO引脚配置为浮空输入模式时,外部电平信号通过IO引脚传输到施密特触发器(即图中TTL肖特基触发器)并最终进入输入数据寄存器,MCU通过读取输入数据寄存器获取外部电平信号。

现象体现:

IO引脚浮空时,读取输入电平信号可能为0,也可能为1
IO引脚接高电平时,读取输入电平信号为1
IO引脚接低电平时,读取输入电平信号为0

2、上拉输入模式

当GPIO引脚配置为上拉输入模式时,上拉电阻开关闭合,当IO引脚未接电平信号时,VDD(高电平信号)通过上拉电阻经过施密特触发器存入输入数据寄存器,因此未接电平信号时读取该IO引脚输入数据寄存器值为1。

现象体现:

IO引脚浮空时,读取输入电平信号为1
IO引脚接高电平时,读取输入电平信号为1
IO引脚接低电平时,读取输入电平信号为0

3、下拉输入模式

当GPIO引脚配置为下拉输入模式时,下拉电阻开关闭合,当IO引脚未接电平信号时,VSS(低电平信号)通过下拉电阻经过施密特触发器存入输入数据寄存器,因此未接电平信号时读取该IO引脚输入数据寄存器值为0。

现象体现:

IO引脚浮空时,读取输入电平信号为0
IO引脚接高电平时,读取输入电平信号为1
IO引脚接低电平时,读取输入电平信号为0

4、模拟输入模式

当GPIO引脚配置为模拟输入模式时,IO引脚信号直接通过模拟输入端进入片上外设模块,IO口外部电压信号为模拟量,非电平形式。通常配置ADC时GPIO引脚初始化配置为模拟输入模式。

5、推挽输出模式

当GPIO引脚配置为推挽输出模式时,推挽电路(push-pull)就是两个不同极性晶体管间连接的输出电路。推挽电路采用两个参数相同的MOSFET管,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小效率高。当设置输出的值为为高电平时,P-MOS导通,N-MOS截止,此时I/O端口的电平就由P-MOS管决定为高电平;当设置输出的值为低电平的时候,P-MOS管处于截止状态,N-MOS管处于导通状态,此时I/O端口的电平就由N-MOS管决定为低电平,同时IO口输出的电平可以通过输入电路读取,此时I/O端口的电平一定是输出的电平

现象体现:

	当IO引脚配置输出高电平信号时,读该引脚信号一直为高电平信号1,此时可以通过直接读取该引脚输入数据寄存器获取输出电平信号
	当IO引脚配置输出低电平时,输出信号一直为低电平信号0,此时可以通过直接读取该引脚输入数据寄存器获取输出电平信号

6、开漏输出模式

当GPIO引脚配置为开漏输出模式时,通过设置 位设置/清除寄存器或者输出数据寄存器的值,途经N-MOS管,最终输出到I/O端口。这里要注意N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于截止状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于导通状态,此时I/O端口的电平就是低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平,可通过直接读取该引脚确定输出电平信号GPIO_ReadInputDataBit()

现象体现:

当IO引脚配置输出高电平且接上拉电阻时,读该引脚信号一直为高电平信号1,如下图:

在这里插入图片描述

当IO引脚配置输出高电平且接下拉电阻或不接电平信号时,读该引脚信号一直为低电平信号0,如下图:

在这里插入图片描述
IO引脚配置输出低电平时,无论上拉还是下拉,输出信号一直为低电平信号,如下图:
在这里插入图片描述

7、复用推挽输出模式

具有推挽模式的特点,但输出源通常由其他外设控制

8、复用开漏输出模式

具有开漏模式的特点,但输出源通常由其他外设控制。


http://www.kler.cn/a/567387.html

相关文章:

  • java使用word模板填充内容,再生成pdf
  • 低空经济火热,校企合作无人机低空产业技术详解
  • huffman压缩
  • 在idea中使用spring boot devtools开发工具的问题
  • 智能图像处理平台:图像处理配置类
  • 基于机器学习的结构MRI分析:预测轻度认知障碍向阿尔茨海默病的转化
  • 易错点abc
  • 分享一套适合做课设的SpringBoot商城系统
  • Kotlin协变与逆变区别
  • yolov12 部署瑞芯微 rk3588、RKNN 部署工程难度小、模型推理速度快
  • 大模型应用案例 | 大模型+金融运维,擎创携手某证券创新运维能力新范式
  • Proser:新增CRC计算辅助功能
  • 从UNIX到Linux:操作系统进化史与开源革命
  • 加油站小程序实战05地图加载
  • 计算机毕业设计SpringBoot+Vue.js社团管理系统(源码+文档+PPT+讲解)
  • 如何在工控机上实现机器视觉检测?
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-loss.py
  • Kubernetes (K8S) 高效使用技巧与实践指南
  • MySQL 主从同步配置及操作步骤
  • 20250226-代码笔记05-class CVRP_Decoder