文章目录

  • 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.pswp.cn/pingmian/87650.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87650.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87650.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#include

关于 C 中的 include <>和 include “” 这两种形式&#xff0c;区别其实是关于“搜索路径”和“优先级”的。让我详细为你讲解。 1. 简单区别总结 #include <header>&#xff1a;告诉编译器去“系统标准目录”或“预定义的标准路径”中查找头文件&#xff08;比如…

永磁同步电机参数辨识算法--带遗忘因子的递推最小二乘法辨识

一、原理介绍之前已经介绍了递推最小二乘法进行电气参数辨识&#xff0c;在实时参数辨识中&#xff0c;协方差矩阵P和增益矩阵K是用于更新参数估计的重要工具&#xff0c;而系统参数变化时&#xff0c;P、K矩阵会逐渐减小&#xff0c;导致数据饱和。数据饱和与参数迟滞是实时参…

JVM 知识点

一、JVM 概述JVM&#xff08;Java Virtual Machine&#xff09;即 Java 虚拟机&#xff0c;它是 Java 编程语言的核心组件之一&#xff0c;负责执行 Java 程序。JVM 使得 Java 程序可以实现“一次编写&#xff0c;到处运行”的特性&#xff0c;因为它提供了一个抽象的运行环境&…

windows装机

1、制作启动盘 2、制作启动盘 启动盘中含有WinPE系统和ISO 3、从U盘启动&#xff0c;加载ISO 4、执行ISO中的setup安装win10 5、之后从C盘启动进入win10系统 6、安装“华为电脑管家”,安装驱动 华为电脑管家官方下载-笔记本驱动更新 | 华为官网 7、下载安装必要软件 https://…

提示技术系列(13)——ReAct

什么是提示技术&#xff1f; 提示技术是实现提示工程目标的具体技术手段&#xff0c;是提示工程中的“工具库”。 什么又是提示工程&#xff1f; 提示工程是指通过设计、优化和迭代输入到大语言模型&#xff08;LLM&#xff09;的提示&#xff08;Prompt&#xff09;&#xff…

【SVO】klt与极限搜索块匹配findEpipolarMatchDirect

Matcher::findEpipolarMatchDirect 函数逻辑与原理分析 核心目标&#xff1a; 在极线上搜索参考帧特征点 ref_ftr 在当前帧 cur_frame 中的最佳匹配点&#xff0c;并通过三角化计算深度。 关键步骤解析&#xff1a; 1. 极线端点计算&#xff1a; const BearingVector A T_…

C 语言基础入门:基本数据类型与运算符详解

一、基本数据类型C 语言提供了丰富的基本数据类型&#xff0c;用于存储不同类型的数据&#xff0c;主要包括整数类型、浮点类型和布尔类型。1. 整数类型整数类型用于存储整数&#xff0c;根据是否带符号以及占用存储空间的不同&#xff0c;可进一步细分&#xff1a;类型名占用存…

应用在核电行业的虚拟现实解决方案

核能领域正处于创新与责任的交汇点。尽管核反应堆提供了高效且可持续的能源&#xff0c;但由于放射性物质的危险性&#xff0c;其也带来了独特挑战。虚拟现实&#xff08;VR&#xff09;技术正通过为远程操作、应急响应和放射性物质处理提供先进解决方案&#xff0c;彻底革新这…

CTF Web的数组巧用

PHP数组绕过intval和preg_match的CTF技巧 原题目 <?php include("flag.php"); // 引入flag文件&#xff0c;flag变量在这里定义 show_source("index.php"); // 显示index.php文件的源码&#xff08;方便选手查看&#xff09;// 判断是否通过GET方式传入…

vue2+elementui使用compressorjs压缩上传的图片

首先是npm install compressorjs 然后新建一个compressorjs.js的文件 import Compressor from "compressorjs";// 默认压缩配置 const DEFAULT_COMPRESS_OPTIONS {quality: 0.6, // 默认压缩质量 (0-1)maxWidth: 1920, // 最大宽度maxHeight: 1080, // 最大高度con…

GPIO详解:不仅仅是输入输出那么简单

GPIO详解&#xff1a;不仅仅是输入输出那么简单 “别小看一个小小的引脚&#xff0c;它可是 MCU 世界的社交之门。” &#x1f44b; 先打个招呼&#xff1a;什么是 GPIO&#xff1f; GPIO&#xff0c;全称是 General Purpose Input/Output —— 通用输入输出口。 简单说&…

深度学习5(深层神经网络 + 参数和超参数)

深层神经网络简介 深层神经网络是机器学习中一种重要的模型&#xff0c;它通过增加网络的“深度”&#xff08;即隐藏层的数量&#xff09;来提升模型对复杂数据的表示和学习能力。同浅层类似&#xff0c;也分为三个部分&#xff1a; 输入层&#xff1a;接收原始数据&#xff…

时间复杂度与空间复杂度分析

一、什么是复杂度&#xff1f; 1.1 为什么需要复杂度分析&#xff1f; 假设你写了两个程序来解决同一个问题&#xff0c;如何判断哪个程序更好&#xff1f;我们不能只看运行时间&#xff0c;因为&#xff1a; 不同电脑性能不同同一电脑在不同时刻状态也不同数据规模不同&#x…

上下文工程:从提示词到自动化流程的AI应用新范式

上下文工程&#xff1a;从提示词到自动化流程的 AI 应用新范式 一、背景与概述&#xff1a;从提示词工程到上下文工程的演进 随着大语言模型 (LLM) 技术的飞速发展&#xff0c;AI 应用开发正经历从 “提示词工程”(Prompt Engineering) 到 “上下文工程”(Context Engineerin…

HTML网页应用打包Android App 完整实践指南

技术准备与工具下载 必需工具清单 在开始之前&#xff0c;需要准备以下开发工具&#xff1a; Android Studio官网&#xff1a;https://developer.android.com/studio HBuilderX官网&#xff1a;https://www.dcloud.io/hbuilderx.html 离线SDK下载&#xff1a;https://nati…

简单 Python 爬虫程序设计

爬虫是获取网页数据的常用工具&#xff0c;我们一起来设计一个基于 requests 和 BeautifulSoup 的简单爬虫&#xff0c;它可以获取网页内容并提取文本信息。 所需库安装 首先需要安装两个必要的库&#xff1a; pip install requests beautifulsoup4 完整代码 import reques…

AUTOSAR图解==>AUTOSAR_AP_EXP_ARAComAPI

AUTOSAR ara::com API详解 自适应平台通信API技术详解 目录 1. 概述2. ara::com API架构 2.1 Proxy/Skeleton架构2.2 通信方式2.3 服务连接方式 3. 详细API说明 3.1 Proxy类3.2 Skeleton类3.3 实例标识符3.4 通信组 4. ara::com API状态管理 4.1 服务生命周期4.2 事件与方法状…

Spring Boot + 本地部署大模型实现:优化与性能提升

在将大语言模型集成到 Spring Boot 应用中时&#xff0c;性能优化是一个关键环节。本地部署的大模型虽然提供了强大的功能&#xff0c;但也可能带来一些性能挑战&#xff0c;如响应时间较长、资源占用较高等问题。本文将介绍如何在 Spring Boot 应用中优化本地部署大模型的性能…

QML 鼠标只响应左键处理方法

【1】问题描述 默认情况下qml支持左键&#xff0c;如果需要支持右键&#xff0c;甚至是中键那需要设置 【2】设置方法 MouseArea{ id: mouse anchors.fill: parent property int cx: 0 pr…

北方算网亮相2025全球数字经济大会|共绘数字友好城市建设

7月2日&#xff0c;以“建设数字友好城市”为主题的2025全球数字经济大会隆重开幕&#xff0c;为构建技术与人、城市与生态和谐共进的全球数字经济新生态提供交流合作平台。自7月3日开始&#xff0c;北方算网将在大会集中亮相&#xff0c;先后在多个论坛中发表主题演讲&#xf…