GPIO 深度解析:引脚特性、工作模式、速度选型及上下拉电阻详解

    • 一、GPIO概述
    • 二、GPIO的工作模式
    • 1、简述
    • (1)4种输入模式
    • (2)4种输出模式
    • (3)4种最大输出速度
    • 2、引脚速度
    • (1)输出速度设置及其意义
    • (2)输出速度与驱动电路的关系
    • 3、配置建议
    • 4、详细分析
    • (1)对 I/O 端口进行编程作为输出时
    • (2)对 I/O 端口进行编程作为输入时
    • (3)对 I/O 端口进行编程作为复用功能时
    • (4)对 I/O 端口进行编程作为模拟配置时
    • 三、上下拉电阻
    • 1、上拉电阻
    • 2、下拉电阻

一、GPIO概述

GPIO(英语:General-purpose input/output),即通用I/O(输入/输出)端口,是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
在这里插入图片描述

STM32F407有8组IO。分别为GPIOA~GPIOH,除了GPIOH只有两个IO引脚,其余每组IO有16根引脚。
GPIO的复用:引脚复用是指将单个引脚配置为多个功能的能力。在 STM32 中,每个引脚都可以配置为多个不同的功能,如GPIO、定时器、UART、SPI等。这样一来,通过配置引脚复用功能,可以实现多种硬件功能的连接和实现,提高了芯片的灵活性和可扩展性。引脚默认为IO口。
GPIO的电平:引脚电平对芯片的某个引脚进行高低电平的输出,以及可以去检测某个引脚的电平状态。一般电平采用都是TTL电平信号,TTL电平信号规定:+5V等价于逻辑“1”,0V等价于逻辑“0”。
电平其实有一个电平范围:>2V就表示高电平,<0.8V就表示低电平。

二、GPIO的工作模式

1、简述

(1)4种输入模式

  • 浮空输入(即不连接内部上下拉电阻)
  • 上拉输入(连接上拉电阻)
  • 下拉输入(连接下拉电阻)
  • 模拟输入(用于检测模拟信号的输入)

(2)4种输出模式

  • 开漏输出(带上拉或者下拉)
  • 复用开漏输出(带上拉或者下拉)
  • 推挽输出(带上拉或者下拉)
  • 复用推挽输出(带上拉或者下拉)

(3)4种最大输出速度

  • 2MHZ (低速)
  • 25MHZ (中速)
  • 50MHZ (快速)
  • 100MHZ (高速)

2、引脚速度

STM32微控制器的GPIO(General Purpose Input/Output)引脚速度设置是一个关键的配置参数,它影响着I/O口的性能,特别是当用于高速信号传输时。

(1)输出速度设置及其意义

STM32的GPIO端口在设置为输出模式时,通常提供几种速度选项,这些选项代表了I/O口驱动电路的不同响应速度,旨在优化噪声控制和降低功耗。常见的速度设置包括:

  • 2MHz:适用于对噪声敏感的应用或者低速信号传输。这种设置下,输出驱动电路的响应较慢,但功耗较低,噪声也相对较小。
  • 25MHz:平衡了速度和噪声控制的需求,适用于中速信号传输。相比2MHz,它的响应更快,但仍能保持较好的信号完整性。
  • 50MHz:用于高速信号传输,如SPI或某些高速总线通信。虽然提供了最快的响应速度,但会增加噪声并消耗更多功耗。
  • 100MHz:这是最快的速度设置,用于超高速信号传输,如更高速SPI或某些高速总线通信。虽然提供了最快的响应速度,但会增加更多的噪声并消耗更多功耗。

(2)输出速度与驱动电路的关系

每个GPIO引脚都有与其关联的输出驱动电路,这些电路的设计能够适应不同的速度要求。选择更高的输出速度意味着选择了响应更快的驱动电路,这能够更迅速地切换输出状态(即从高电平到低电平或反之),从而支持更高的数据传输速率。但是,更快的切换速度往往伴随更大的开关噪声和稍高的功耗。
在这里插入图片描述

📔专业名词
1.开关噪声:电子电路中的开关噪声通常是指由于开关操作引起的电磁干扰(Electromagnetic Interference, EMI)或瞬态电压现象。这种噪声可能对电路的正常运行产生负面影响,特别是在高频和高速数字电路中更为明显。 定义与成因:

.开关噪声主要发生在电路中的快速切换元件上,比如晶体管、继电器等。

.当这些元件从一种状态迅速切换到另一种状态时(如从导通变为截止),会在电路中产生瞬间的电流变化或电压突变。

.这种突变会导致寄生电感和电容之间的能量交换,从而产生振荡或尖峰信号。

2.寄生电容:寄生电容是电路设计中常见的非理想效应,它们并不是设计师特意加入的元件,而是由于电路物理结构自然形成的。这些“寄生”元件可以影响电路的行为,尤其是在高频应用中。
定义:寄生电容是指在两个导体之间无意中形成的一种电容效应。它通常出现在集成电路内部、印刷电路板(PCB)上的走线间或与地平面之间等地方。
影响:

.在高频电路中,寄生电容可以导致信号延迟增加。

.它可能造成不必要的耦合,使得一个信号路径中的变化影响到另一个不相关的路径。

.对于高速数字电路来说,寄生电容还会影响信号完整性,如引起过冲、下冲或者振铃现象。

3.过冲 (Overshoot)

定义:当信号从低电平切换到高电平时,如果信号超过目标电压水平并达到更高的峰值,这种现象就称为过冲。

原因:通常是由于信号路径上的寄生电感和电容相互作用造成的。当快速上升沿遇到寄生电感时,会产生一个反向电动势,这会导致电压超出预期值。

影响:过冲可能导致器件承受高于其额定工作电压的压力,从而可能缩短器件寿命或直接造成损害。

4.下冲 (Undershoot)

定义:与过冲相反,当下降沿信号低于目标低电平,并进一步跌落到更低的电压水平时,这种现象被称为下冲。

原因:同样是由寄生元件引起的,尤其是当信号通过较长的走线或者具有较大电感的路径时。

影响:下冲可能会使信号暂时达不到正确的逻辑电平,从而引起逻辑判断错误。

5.振铃 (Ringing)

定义:振铃是指在信号边沿之后出现的一系列振荡现象。这些振荡可能围绕着最终稳定的目标电压上下波动。

原因:振铃通常是由于信号路径上存在的寄生LC(电感-电容)谐振网络造成的。当信号经过这样的网络时,会激发起振荡模式。

影响:振铃不仅会影响当前信号的质量,还可能干扰相邻线路的信号,尤其是在高密度布线的PCB上。

3、配置建议

  • 应用需求导向:根据实际应用需求选择合适的速度。例如,如果使用I2C接口且波特率为400kHz,选择2MHz的速度可能已足够,但如果希望预留更多的余量,可以考虑使用10MHz。
  • 信号完整性和噪声考虑:高速信号传输时,应考虑信号的完整性,可能需要增加适当的终端电阻或其他抗干扰措施,以减少高速切换引起的反射和串扰。
  • 功耗考量:在低功耗应用中,应优先考虑低速设置以减少功耗。

在这里插入图片描述
在这里插入图片描述
电路的驱动能力由负载电容决定的,当负载电容一定时,GPIO端口的驱动能力越大,充放电的电流也越大,上升时间就越短。另外速度越高,EMI电磁干扰就越高,因此必须平衡GPIO性能与噪声,特别是产品出口时要取得EMC(电磁兼容:Electro Magnetic Compatibility)认证。
速度越高,需要电压就越高,对应功耗也越高。

4、详细分析

(1)对 I/O 端口进行编程作为输出时

  • 输出缓冲器被打开:

  • 开漏模式(常用于总线,典型特征是引脚外部有上拉电阻):输出寄存器中的“0”可激活 N-MOS,而输出寄存器中的“1”会使端口保持高阻态 (Hi-Z)(P-MOS 始终不激活)。

  • 推挽模式:输出寄存器中的“0”可激活 N-MOS,而输出寄存器中的“1”可激活P-MOS。

  • 施密特触发器输入被打开

  • 根据 GPIOx_PUPDR 寄存器中的值决定是否打开弱上拉电阻和下拉电阻

  • 输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样

  • 对输入数据寄存器的读访问可获取 I/O 状态

  • 对输出数据寄存器的读访问可获取最后的写入值
    在这里插入图片描述

  • 当输入信号为高电平的时候,上面的管子导通,下面的管子截止,输出信号为高电平。

  • 当输入信号为低电平的时候,上面的管子截止,下面的管子导通,输出信号为低电平。
    在这里插入图片描述
    🔸推挽电路
    推挽电路(push-pull)就是两个不同极性晶体管间连接的输出电路。推挽电路采用两个参数相同的功率BJT管或MOSFET管,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小效率高。推挽输出既可以向负载灌电流,也可以从负载抽取电流,常见应用场景音频放大器,用于放大音频信号以驱动扬声器。
    在这里插入图片描述

  • 工作原理

  • 当输入信号为正半周时,NPN晶体管导通,PNP晶体管截止,输出电流流过负载。

  • 当输入信号为负半周时,NPN晶体管截止,PNP晶体管导通,输出电流反方向流过负载。

  • 这样,两个晶体管轮流工作,使得输出波形接近于输入波形,但具有更大的幅度。

在电路设计中,推挽输出是一种很常用的输出模式。推挽输出有很多优点,比如更低的损耗,更安全的输出等。“推挽”之意,即为当一个管子推出去时,另一个管子拉回来。输入不同,交替导通。
🔸钳位二极管
钳位二极管是指用于在电路中将某点的电位进行限制的二极管,钳位是将某点的电位进行限制,使其不大于或者不小于参考端的值,该点的电位是可变的,是利用二极管的正向导通特性来进行钳位。IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。
如上图所示,有两个保护二极管,用于保护内部电路,防止I/O引脚外部过高或者过低的电压输入时造成内部电路损坏。
具体来讲:当引脚输入电压高于VDD时,上面的二极管导通,输入点电压被钳位到约VDD+0.7V;当引脚输入电压低于VSS时,下面的二极管导通,输入点电压被钳位到约VSS-0.7V,从而使输入芯片内部的电压出于比较稳定的值(钳位作用)。
虽然有二极管的保护,但这样的保护很有限,大电压大电流的输入很容易烧坏芯片,在实际设计中要考虑设计引脚的保护电路。
在这里插入图片描述
假设二极管D1和D2的正向导通压降都是uD,反向击穿电压大于VDD+uD,Pin点的电位记作Upin,则:
① 当Pin点的电位Upin ≥ (VDD+uD)时,此时D1会导通而将Pin点的电位限制在VDD+uD,D2截止;
② 当Pin点的电位在范围(GND-uD) < Upin < (VDD+uD)时,D1截止,D2截止;
③ 当Pin点的电位Upin ≤ (GND-uD)时,D1截止,D2会导通而将Pin点的电位限制在GND-uD。
综上所述,Pin点的电位范围会被限制在(GND-uD) ≤ Upin ≤ (VDD+uD)。若VDD=5V、GND=0V、uD=0.7V,则Pin点电位范围被限制在 -0.7V ≤ Upin ≤ 5.7V;若忽略D1和D2的正向导通压降,则可认为Pin点电位范围被限制为 0V ≤ Upin ≤ 5V。
📣钳位电路相关说明
二极管具有单向导电性,可利用这一特性对电路进行整流或钳位。
钳位的定义:将信号强行钳制到某一电位上,抬高或降低信号的基准电位,但不改变原信号的波形。钳位电路分为正向钳位和负向钳位电路。
当二极管负极接地时,正极端电路的电位比地高,二极管导通,电位被拉下来,即正极端电压被钳位到零电位或零电位以下(忽略二极管压降)。
当二极管正极接地时,负极端电路的电位比地高,二极管截止,电位将不会受二极管影响。

(2)对 I/O 端口进行编程作为输入时

  • 输出缓冲器被关闭
  • 施密特触发器输入被打开
  • 根据 GPIOx_PUPDR 寄存器中的值决定是否打开上拉和下拉电阻
  • 输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样
  • 对输入数据寄存器的读访问可获取 I/O 状态
    在这里插入图片描述
    🔸施密特触发器
    在电子学中,施密特触发器(英语:Schmitt trigger)是包含正反馈的比较器电路。
    在这里插入图片描述
    对于标准施密特触发器,当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变,也就是说输出由高电准位翻转为低电准位,或是由低电准位翻转为高电准位时所对应的阈值电压是不同的。只有当输入电压发生足够的变化时,输出才会变化,因此将这种元件命名为触发器。
    施密特触发器可作为波形整形电路,能将模拟信号波形整形为数字电路能够处理的方波波形,而且由于施密特触发器具有滞回特性,所以可用于抗干扰,其应用包括在开回路配置中用于抗扰,以及在闭回路正回授/负回授配置中用于实现多谐振荡器。

(3)对 I/O 端口进行编程作为复用功能时

  • 可将输出缓冲器配置为开漏或推挽
  • 输出缓冲器由来自外设的信号驱动(发送器使能和数据)
  • 施密特触发器输入被打开
  • 根据 GPIOx_PUPDR 寄存器中的值决定是否打开弱上拉电阻和下拉电阻
  • 输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样
  • 对输入数据寄存器的读访问可获取 I/O 状态
    在这里插入图片描述

(4)对 I/O 端口进行编程作为模拟配置时

  • 输出缓冲器被禁止。
  • 施密特触发器输入停用,I/O 引脚的每个模拟输入的功耗变为零。施密特触发器的输被 强制处理为恒定值 (0)。
  • 弱上拉和下拉电阻被关闭。
  • 对输入数据寄存器的读访问值为“0”。
    在模拟配置中,I/O 引脚不能为 5 V 容忍
    在这里插入图片描述

三、上下拉电阻

上下拉电阻(Pull-up 和 Pull-down Resistors)是电子电路中常用的一种组件,用于确保数字电路中的信号线在没有其他信号源驱动时处于一个确定的状态。它们对于防止信号线悬空(浮空)非常重要,因为在悬空状态下,信号线可能会受到噪声干扰,导致误操作。
在这里插入图片描述

1、上拉电阻

  • 将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平;
  • 上拉是对器件注入电流;灌电流;
  • 当一个接有上拉电阻的IO端口设置为输入状态时,它的常态为高电平;

2、下拉电阻

  • 将一个不确定的信号,通过一个电阻与地GND相连,固定在低电平;
  • 下拉是从器件输出电流;拉电流;
  • 当一个接有下拉电阻的IO端口设置为输入状态时,它的常态为低电平;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95407.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95407.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95407.shtml

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

相关文章

第1节 大模型分布式推理基础与技术体系

前言:为什么分布式推理是大模型时代的核心能力? 当我们谈论大模型时,往往首先想到的是训练阶段的千亿参数、千卡集群和数月的训练周期。但对于商业落地而言,推理阶段的技术挑战可能比训练更复杂。 2025年,某头部AI公司推出的130B参数模型在单机推理时面临两个选择:要么…

《软件工程导论》实验报告一 软件工程文档

目 录 一、实验目的 二、实验环境 三、实验内容与步骤 四、实验心得 一、实验目的 1. 理解软件工程的基本概念&#xff0c;熟悉软件&#xff0c;软件生命周期&#xff0c;软件生存周期过程和软件生命周期各阶段的定义和内容。 2. 了解软件工程文档的类别、内容及撰写软件工…

基于elk实现分布式日志

1.基本介绍 1.1 什么是分布式日志 在分布式应用中&#xff0c;日志被分散在储存不同的设备上。如果你管理数十上百台服务器&#xff0c;你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。所以我们使用集中化的日志管理&#xff0c;分布式日志…

多模态RAG赛题实战之策略优化--Datawhale AI夏令营

科大讯飞AI大赛&#xff08;多模态RAG方向&#xff09; - Datawhale 项目流程图 1、升级数据解析方案&#xff1a;从 fitz 到 MinerU PyMuPDF&#xff08;fitz&#xff09;是基于规则的方式提取pdf里面的数据&#xff1b;MinerU是基于深度学习模型通过把PDF内的页面看成是图片…

09--解密栈与队列:数据结构核心原理

1. 栈 1.1. 栈的简介 栈 是一种 特殊的线性表&#xff0c;具有数据 先进后出 特点。 注意&#xff1a; stack本身 不支持迭代器操作 主要原因是因为stack不支持数据的随机访问&#xff0c;必须保证数据先进后出的特点。stack在CPP库中实现为一种 容器适配器 所谓容器适配器&a…

打造专属 React 脚手架:从 0 到 1 开发 CLI 工具

前言: 在前端开发中&#xff0c;重复搭建项目环境是个低效的事儿。要是团队技术栈固定&#xff08;比如 React AntD Zustand TS &#xff09;&#xff0c;每次从零开始配路由、状态管理、UI 组件&#xff0c;既耗时又容易出错。这时候&#xff0c;自定义 CLI 脚手架 就派上…

Python day43

浙大疏锦行 Python day43 import torch import numpy as np import pandas as pd import torchvision import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torch.utils.data import Da…

python基于Hadoop的超市数据分析系统

前端开发框架:vue.js 数据库 mysql 版本不限 后端语言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 数据库工具&#xff1a;Navicat/SQLyog等都可以 摘要&…

如何用 COLMAP 制作 Blender 格式的数据集

如何用 COLMAP 制作 Blender 格式的数据集并划分出 transforms_train.json、transforms_val.json 和 transforms_test.json。 一、什么是 Blender 格式数据集? Blender 格式数据集是 Nerf 和 Nerfstudio 常用的输入格式,其核心是包含了相机内外参的 JSON 文件,一般命名为:…

[GESP202309 六级] 2023年9月GESP C++六级上机题题解,附带讲解视频!

本文为GESP 2023年9月 六级的上机题目详细题解和讲解视频&#xff0c;觉得有帮助或者写的不错可以点个赞。 题目一讲解视频 GESP2023年9月六级上机题一题目二讲解视频 题目一:小羊买饮料 B3873 [GESP202309 六级] 小杨买饮料 - 洛谷 题目大意: 现在超市一共有n种饮料&#…

linux 操作ppt

目录 方法1&#xff1a;用 libreoffice 打开PPT文件 播放脚本&#xff1a; 方法2&#xff1a;用 python-pptx 创建和编辑PPT 方法3&#xff1a;其他方法 在Linux中&#xff0c;可以使用Python通过python-pptx库来创建和编辑PPT文件&#xff0c;但直接播放PPT文件需要借助其…

元数据管理与数据治理平台:Apache Atlas 基本搜索 Basic Search

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 Apache Atlas 框架是一套可扩展的核心基础治理服务&#xff0c;使企业能够有效、高效地满足 Hadoop 中的合规性要求&#xff0c;并支持与整个…

LangChain4J-(1)-Hello World

一、LangChain4J是什么&#xff1f; LangChain4J 是一个专为 Java 生态系统设计的开源框架&#xff0c;用于简化与大语言模型&#xff08;LLM&#xff0c;如 OpenAI 的 GPT 系列、Google 的 Gemini、Anthropic 的 Claude 等&#xff09;的集成和交互。它借鉴了 Python 生态中 L…

HTTPS应用层协议-中间攻击人

HTTPS应用层协议-中间攻击人 • Man-in-the-MiddleAttack&#xff0c;简称“MITM 攻击” 确实&#xff0c;在方案 2/3/4 中&#xff0c;客户端获取到公钥 S 之后&#xff0c;对客户端形成的对称秘钥 X 用服务端给客户端的公钥 S 进行加密&#xff0c;中间人即使窃取到了数据&am…

利用 Makefile 高效启动 VIVADO 软件:深入解析与实践

利用 Makefile 高效启动 VIVADO 软件&#xff1a;深入解析与实践 系列文章目录 1、VMware Workstation Pro安装指南&#xff1a;详细步骤与配置选项说明 2、VMware 下 Ubuntu 操作系统下载与安装指南 3.基于 Ubuntu 的 Linux 系统中 Vivado 2020.1 下载安装教程 文章目录利用 …

[前端算法]排序算法

默认情况下&#xff0c;sort() 会将元素转换为字符串&#xff0c;然后按照 Unicode 编码的顺序进行排序&#xff1a; const fruits [apple, banana, cherry, date]; fruits.sort(); console.log(fruits); // 输出: ["apple", "banana", "cherry"…

C#标签批量打印程序开发

C#标签批量打印程序开发&#xff08;集成Bartender解决方案&#xff09;一、系统架构设计 1. 核心模块划分 public class LabelPrintingSystem {private IDataLoader _dataLoader; // 数据加载器private ITemplateEngine _templateEngine; // 模板引擎private IPrintControl…

ECC的原理、背景、工作机制和数学基础

ECC的原理、背景、工作机制和数学基础摘要&#xff1a;本文首先详细介绍ECC&#xff08;Error-Correcting Code&#xff0c;纠错码&#xff09;的原理&#xff0c;包括背景、工作机制和数学基础。然后&#xff0c;解释ECC在SRAM&#xff08;Static Random-Access Memory&#x…

计算机网络2-2:物理层下面的传输媒体

目录 导引型传输媒体 同轴电缆 双绞线 光纤 电力线 非导引型传输媒体 无线电波 微波 红外线 可见光 无线电频谱管理机构 导引型传输媒体 同轴电缆 双绞线 光纤 光在光纤中传播的基本原理 电力线 非导引型传输媒体 无线电波 微波 红外线 可见光 LiFi(可见光通信) …

Dify 从入门到精通(第 32/100 篇):Dify 的日志分析与监控

Dify 从入门到精通&#xff08;第 32/100 篇&#xff09;&#xff1a;Dify 的日志分析与监控 Dify 入门到精通系列文章目录 第一篇《Dify 究竟是什么&#xff1f;真能开启低代码 AI 应用开发的未来&#xff1f;》介绍了 Dify 的定位与优势第二篇《Dify 的核心组件&#xff1a…