【STM32】GPIO内部电路原理

前言

笔者近日在B站刷到了一个视频,使我对GPIO的I/O口内部基本结构以及工作原理有了恍然大明白的理解,现在对此做一个总结,并为大家推荐该视频Keysking

GPIO内部结构概览

在这里插入图片描述

结构关系图如下图所示

在这里插入图片描述

GPIO内部结构详解

保护电路

在这里插入图片描述
PS:
当I/O口为FT 5V容忍时,其上方保护二极管电压Vdd = 5V
保护二极管不能长期导通,否则会烧坏保护二极管。所以保护电路只能抵御一瞬间的电压波动,较长时间的电压波动仍会损坏芯片

输出电路

推挽输出

在这里插入图片描述
流程图
代码 --> 寄存器 --> 输出控制器 --> 控制P-MOS/N-MOS的导通与断开 --> 输出的电压

分类讨论
SET置1:P-MOS导通 N-MOS断开 芯片输出3.3V(此电压由芯片输出,所以推挽输出有驱动能力
RESET置0:P-MOS断开 N-MOS导通 芯片输出0V

开漏输出

在这里插入图片描述
前提:在开漏输出下,P-MOS一直断开,所以在图上我直接将其删去以简化单路

以I/O口外接工作电压为5v的小灯泡为例
开漏输出更像是一个电子开关,小灯泡的工作电压由小灯泡外接的5V提供(注意,此I/O口需5V容忍)。因为电压由外部提供,所以开漏输出无驱动能力(他只是个电子开关 不提供电压 所以当然没驱动能力)

分类讨论
SET置1:N-MOS导通 电路通路 小灯泡电压由外部5V提供 灯亮
RESET置0:N-MOS断开 电路内部高阻态 电路断路 无电流 灯灭

所以,开漏输出的高电平实际是高阻态 无法输出电流 无驱动能力

输入电路

在这里插入图片描述
上下拉电阻
Pull-up上拉:开关1闭合,I/O引脚内部上拉
Pull-down下拉:开关2闭合,I/O引脚内部下拉
不上拉也不下拉:开关1、2均不闭合,I/O引脚内部浮空 电平不确定
PS:I/O口输入可以配置内部的上下拉电阻,为硬件功能实现提供了更多的可能(比如KEY按键模块中,如果KEY模块没有配置外部的上拉电阻,则可以通过自行配置内部的上下拉电阻来实现功能。具体请参考B站

TTL肖特基触发器
实际上是模拟电压 --> 数字电压
在这里插入图片描述
高低参考电压之间,维持原本电平信号不变,以此来抗噪声

PS:
Q:为什么没有复用输入模式?
A:因为复用功能输入与通用功能输入可以同时读取施密特触发器的输

总结

对于GPIO内部结构而言,通过不同的配置可以完成不同的输入输出功能
输出
代码 --> 寄存器 --> 输出控制模块 --> 控制P-MOS与N-MOS的导通与断开情况 --> 推挽/开漏输出
输入
I/O口输入模拟电压 --> 上下拉电阻 --> 施密特触发器 --> 数字电压 --> 存储到输入数据寄存器

参考资料

GPIO内部的那些事儿_Keysking

  • 35
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值