首页 > 其他分享 >【STM32】GPIO内部电路原理

【STM32】GPIO内部电路原理

时间:2024-07-21 13:30:27浏览次数:13  
标签:输出 MOS STM32 -- 电路 电压 GPIO

前言

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

【STM32】GPIO内部电路原理

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

标签:输出,MOS,STM32,--,电路,电压,GPIO
From: https://blog.csdn.net/AbaAbaxxx_/article/details/140585532

相关文章

  • 嵌入式单片机STM32中堆栈使用方法
       学习STM32单片机的时候,总是能遇到“堆栈”这个概念。分享本文,希望对你理解堆栈有帮助。    对于了解一点汇编编程的人,就可以知道,堆栈是内存中一段连续的存储区域,用来保存一些临时数据。堆栈操作由PUSH、POP两条指令来完成。而程序内存可以分为几个区:栈区(stack......
  • LabVIEW电路产品功能自动检测系统
    开发基于LabVIEW的电路产品功能自动检测系统。该系统通过整合先进的硬件和软件技术,实现了电路产品的自动化测试,显著提高了测试效率和准确性,对于提升电子产品的可靠性和工作效率具有重要意义。项目背景在电子制造业中,电路产品的性能和可靠性直接影响到产品的质量和市场竞争力......
  • STM32 DMA
    STM32暑假学习DMA文章目录STM32暑假学习DMA前言一、DMA是什么?存储器映像二、DMA基本结构图1.DMA进行转运,有以下条件:2.数据宽度与对齐3.DMA是如何工作的数据转运+DMAADC扫描模式+DMA三、数据转运+DMA示例代码及接线图四、ADC扫描模式+DMA示例代码及接线图ADC连续扫......
  • 【记录】stm32f103c8t6+hc05+TB6612FNG实现蓝牙app控制直流电机
    前言这周刚好做了一个小项目,需要用到单片机控制一个小车移动,在实验室搜刮了一些材料,进行了一些调试工作,感觉也是蛮有意思的。小车的底盘用的是之前电赛剩下的,单片机用的是最小系统板,蓝牙模块是hc05,直流电机也是最普通的小马达。软硬件调试软件:keil5主控板:stm32f103c8t6蓝......
  • 基于单片机的远程烟雾报警系统的硬件电路设计
    摘要:目前,智能家居已成为信息化时代的产物遍布全国各地,其中适用于家用的烟雾报警系统已成为家庭设备中安全管理的基础。本文设计了一款基于单片机对家用燃气进行实时监测的系统,该系统可通过短信的形式通知家庭主人当前的烟雾浓度。本设计主要完成了硬件电路设计,其中包括基于A......
  • STM32学习(2)-GPIO输出
    GPIO输出2.1GPIO输出1.GPIO简介2.GPIO基本结构3.GPIO位结构4.GPIO模式5.硬件电路2.2LED闪烁&LED流水灯&蜂鸣器1.LED闪烁main函数代码2.LED流水灯3.蜂鸣器2.1GPIO输出1.GPIO简介GPIO(GeneralPurposeInputOutput)通用输入输出口可配置为8种输入输出模式引脚电......
  • STM32被拔网线 LWIP的TCP无法重连解决方案
    目录一、问题描述二、项目构成三、问题解决1.问题代码2.解决思路3.核心代码: 四、完整代码1.监测网口插入拔出任务2.TCP任务3.创建tcp任务4.删除tcp任务五、总结一、问题描述最近遇到一个问题,就是我的stm32设备作为tcp客户端和上位机交互,如果在连接过程中网线......
  • STM32+USART串口(1)
    GPIO口的复用功能是有对应的,作USART使用的话要选择对应的GPIO;可以参考引脚定义;(1)串口通信分为:串行通信和并行通信;(2)通信波特率:通常用波特率(BaudRate)来衡量数据通信的速度。波特率是指每秒钟传送数据的位数,单位为bps(BitPerSecond),用户可根据需要进行设定(3)异步通信:在异步通......
  • 采用反相正基准电压电路的反相运算放大器(运放)
    采用反相正基准电压电路的反相运算放大器(运放)采用反相正基准电压电路的同相运算放大器(运放)设计目标输入ViMin输入ViMax输出VoMin输出VoMax电源电压Vcc电源电压Vee电源电压Vref-5V-1V0.05V3.3V5V0V5V设计说明1此设计使用具有反相正基准的反相放大器将–5V至–1V的输......
  • Linux驱动开发-06蜂鸣器和多组GPIO控制
    一、控制蜂鸣器1.1控制原理 我们可以看到SNVS_TAMPER1是这个端口在控制着蜂鸣器,同时这是一个PNP型的三极管,在端口输出为低电平时,蜂鸣器响,在高电平时,蜂鸣器不响 1.2在Linux中端口号的控制        gpiochipX:当前SoC所包含的GPIO控制器,我们知道I.MX6UL/I.MX6ULL......