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

【STM32实践篇】:GPIO 详解

文章目录

  • GPIO 基本结构
  • GPIO 工作模式


在这里插入图片描述


GPIO 基本结构

在这里插入图片描述

右边的红框是I/O引脚,这个I/O引脚就是我们可以看到的芯片实物的引脚,其他部分都是GPIO的内部结构。

  1. 保护二极管

    • 上方二极管用于防过压保护,当I/O引脚电压高于 V_DD + 二极管导通压降​时,电流从I/O引脚流向V_DD电源,将I/O引脚电压钳位在 ​V_DD + 0.7V。
    • 下方二极管用于防负压保护,当I/O引脚电压低于 V_SS - 二极管导通压降​时,电流从V_SS流向I/O引脚,将I/O引脚电压钳位在 ​V_SS - 0.7V。
  2. 上拉、下拉电阻
    上拉和下拉电阻最根本的作用是确保I/O引脚在未被主动驱动(高阻态)时,有一个确定的逻辑电平,避免引脚“悬空”导致的信号不稳定或误触发。

    • 上拉电阻 Pull-up Resistor:当I/O引脚未被外部电路或内部驱动主动拉低时,上拉电阻将引脚电位“拉”向V_DD,使其稳定在高电平,也就是逻辑‘1’。
    • 下拉电阻 Pull-down Resistor:当I/O引脚未被外部电路或内部驱动主动拉高时,下拉电阻将引脚电位“拉”向V_SS/GND,使其稳定在低电平,也就是逻辑‘0’​。
  3. 施密特触发器

    • 施密特触发器有一个正阈值电压V+ ​和一个负阈值电压V-​,且 ​V+ > V-。只有当输入电压超过较高的V+时,输出才从低电平跳变为高电平;同样,只有当输入电压低于较低的V-时,输出才从高电平跳变为低电平,当输入电压处于 ​V- 和 V+ 之间​ 时,施密特触发器的输出保持之前的状态不变。
    • 看一张图理解比较器的(A)和施密特触发器(B)的差异:
      在这里插入图片描述
      施密特触发器的​ V+ 和 ​V- 之间的区域被称为 ​滞回电压,在 V- < U < V+ 这个区域内,输出​保持​其之前的状态不变!它不会像比较器一样瞬间产生高低电平的变化,这样就形成了一个 ​噪声免疫区,只要噪声的幅度小于这个滞回电压,并且输入信号本身的变化趋势足够强能越过V+或V-,短暂的噪声干扰不会导致输出发生翻转,这就是施密特触发器相比普通比较器的核心优势。
  4. P-MOS和N-MOS
    驱动输出电平(高电平 1 或低电平 0)并承受外部负载。

    • P-MOS:当其栅极接收到一个相对源极为低电平​的控制信号​时导通,此时它在 V_DD 和输出引脚​之间建立了一个低阻通路,电流从 ​V_DD 流经​导通的P-MOS管,​流入输出引脚,这会将输出引脚的电平拉高至接近 V_DD 的电压,向外部电路提供一个稳定的高电平1, 同时能够为连接在输出引脚到 V_SS/GND 的外部负载提供电流,确保外部能识别到高电平。
    • N-MOS:当其栅极​接收到一个相对源极为高电平​的控制信号时导通,此时它在输出引脚和 V_SS/GND 之间建立了一个低阻通路,电流从输出引脚​流经​导通的 N-MOS 管,​流入 V_SS/GND,这会将输出引脚的电平拉低至接近 V_SS/GND 的电压,向外部电路提供一个稳定的低电平0,能够为连接在 V_DD 到输出引脚的外部负载提供电流通路,确保外部能识别到低电平。

GPIO 工作模式

  1. 输入浮空模式
    在这里插入图片描述

    • 在该模式下,​上拉电阻 (Pull-up)​​ 和 ​下拉电阻 (Pull-down)​​ 的控制开关被断开,输出缓冲器被关闭,这意味着引脚本身几乎没有驱动能力,对外部电路的影响极小,引脚的电压完全由外部连接的电路决定。
    • 工作原理:外部信号通过引脚进入,经过保护二极管后,信号直接进入TTL施密特触发器,施密特触发器对输入信号进行整形,将缓慢变化的信号或带有噪声的信号整形成干净的高低电平信号,整形后的数字电平信号被锁存到​输入数据寄存器中。
  2. 输入上拉模式
    在这里插入图片描述

    • 输入上拉模式主要用于将悬空的 GPIO 引脚稳定地拉到一个确定的高电平状态。
    • ​工作原理:
      • 无外部输入时:开启的上拉电阻会将引脚拉至高电平,经过施密特触发器后,读输入数据寄存器该位将得到逻辑1。
      • 有外部输入时:
        • 当外部电路将引脚下拉至低电平时:外部下拉力量克服了上拉电阻的上拉作用,将引脚拉到 VT- 以下,经过施密特触发器后,读输入数据寄存器该位将得到逻辑0。
        • 当外部电路将引脚驱动至高电平时:由于外部信号源阻抗通常远小于上拉电阻,引脚电压会被外部源拉至高电平,读输入数据寄存器该位将得到逻辑1。
        • 如果外部信号源是高阻态输出​,该信号源本身不会驱动引脚电平,此时,内部上拉电阻起作用,将引脚拉到高电平。
  3. 输入下拉模式
    在这里插入图片描述

    • 当外部没有连接任何信号源或者外部信号源处于高阻态(Hi-Z)时,通过内置电阻将引脚电压下拉到一个明确的低电平。
    • 工作原理:
      • 外部信号为低电平时,“战胜”了内部下拉电阻的微弱下拉能力,引脚被拉低到 VSS。
      • ​外部信号为高电平时,外部的高电平强于​内部下拉电阻的拉低作用,引脚的实际电平被外部信号拉高到接近VDD。
  4. 模拟功能
    在这里插入图片描述

    • 当GPIO用于模拟功能时,必须完全断开其数字电路部分,其中输出缓冲器被禁止,施密特触发器输入停用(施密特触发器的输出被 强制处理为恒定值0),弱上拉和下拉电阻被关闭,对输入数据寄存器的读访问值为0。
    • 当用作模拟输入时(如连接至ADC),​外部模拟信号通过I/O引脚进入芯片。
    • 当用作模拟输出时(如连接至DAC),​片上模拟外设(如DAC)​产生的模拟信号通过该路径输出到I/O引脚。
  5. 开漏输出和推挽输出
    在这里插入图片描述
    对 I/O 端口进行编程作为输出时,输出缓冲器被打开,可以被设置为如下两种模式:

    • 开漏模式:输出寄存器中的“0”可激活 N-MOS,引脚通过导通的N-MOS管拉低到VSS输出低电平;而输出寄存器中的“1”会使端 口保持高组态 (Hi-Z)(P-MOS 始终不激活)。
    • 推挽输出:输出寄存器中的“0”可激活 N-MOS,引脚通过导通的N-MOS管拉低到VSS输出低电平;而输出寄存器中的“1”可激活 P-MOS,引脚通过导通的P-MOS管拉高到VDD输出高电平。
    • 施密特触发器输入被打开,可以读取输入数据寄存器(IDR)​来获取引脚实际的电平状态。
  6. 复用功能
    在这里插入图片描述

    • 复用功能模式 (AF Mode)​​ 就是让GPIO引脚不再作为普通的输入/输出口,而是将引脚的控制权“交”给某个内置的外设模块,如USART,TIM, I2C,SPI等。
    • 引脚输出的信号不再由写入GPIO的输出数据寄存器(ODR)决定,而是由所选外设模块内部产生的信号直接驱动。
    • 引脚输入的信号不再只被通过GPIO的输入数据寄存器(IDR)读取,而是会同时被连接到所选外设模块的接收端。

http://www.xdnf.cn/news/1082053.html

相关文章:

  • 2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--上篇
  • 九、K8s污点和容忍
  • web前端面试-- MVC、MVP、MVVM 架构模式对比
  • 递归与循环
  • 高频交易服务器篇
  • A/B测试实战:页面微小改动如何带来30%转化率提升?
  • ABC413 : E Reverse 2^i
  • Vue前端项目接收webSocket信息
  • Linux网络配置与故障排除完全指南
  • 介绍electron
  • 【ES6】Latex总结笔记生成器(网页版)
  • TailWind CSS Intellisense 插件在VSCode 上不生效
  • LESS/SCSS 高效主题换肤方案
  • 基于 LangChain 实现通义千问 + Tavily 搜索 Agent 的简单实践
  • 在VMware虚拟机中安装Windows 98时,Explorer提示“该程序执行了非法操作,即将关闭”的解决办法
  • 虚拟机与容器技术详解:VM、LXC、LXD与Docker
  • php协程
  • MySQL 数据库传统方式部署主从架构的实现很详细
  • React Native 亲切的组件们(函数式组件/class组件)和陌生的样式
  • 若 VSCode 添加到文件夹内右键菜单中显示(通过reg文件方式)
  • 盘式制动器的设计+说明书和CAD)【6张】+绛重
  • Redis性能优化
  • 权电阻网络DAC实现电压输出型数模转换Multisim电路仿真——硬件工程师笔记
  • 前端捕获异常的全面场景及方法
  • Linux操作系统之文件(三):缓冲区
  • 每天一个前端小知识 Day 21 - 浏览器兼容性与 Polyfill 策略
  • 【每天一个知识点】动态知识库
  • JxBrowser 8.9.0 版本发布啦!
  • chrome插件合集
  • vue/微信小程序/h5 实现react的boundary