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

GPIO的八种模式分析

GPIO是general purpose input output,即通用输入输出端口,作用是负责外部器件的信息和控制外部器件工作。

GPIO有如下几个特点:1.不同型号的IO口数量不同;2,反转快速,每次翻转最快只需要两个时钟周期,以STM32F1系列为例,最快速度可达50MHz;3.每个IO口都可以做中断。

接下来介绍GPIO的电气特性:1.工作电压范围为:[2, 3.3]V ;2.识别电压范围(CMOS端口):-0.3V <= VIL <= 1.164V , 1.833V <= VIH <= 3.6V;3.输出电流单个IO口最大25mA。

下图为GPIO的结构图:

 GPIO的上半部分为输入部分,下半部分为输出部分。

接下来简要介绍其工作流程

1.输入:信号从IO脚输入,经过保护电路后进入GPIO内部,然后进入上下拉电路(只是在输入状态时候设置,因此在芯片处在输出状态时不需要设置上下拉,比如我们的LED实验),然后兵分两路,上面的是模拟输入(ADC/DAC),下面再分为两路,上面是复用输入至片上外设,下面进入输入寄存器(IDR),CPU就能读取其中的信号获得信息。

2.输出:

i) 执行机构:如果需要输出高电平,就使PMOS管导通,从VDD接进高电平输出3.3V,如果需要输出低电平就使NMOS管导通将VSS(0V)导通至外部。

ii)控制机构:上面的是连接输出寄存器(ODR),可以通过位清除寄存器(BSRR)对ODR进行读写,也可以直接进行读写操作,然后进入二选一选择器,再进入输出控制器。

接下来介绍几个重要的元件:

1.保护二极管:当输入过高的电压(比如5V,PS:必须串联一个电阻,不然会烧)的时候,下面的保护二极管截止,上面的保护二极管导通,因为保护二极管的压降为0.3V,VDD为3.3V,所以实际输入的电压为3.6V,防止了过高的电压输入;如果输入一个过低的电压(比如-5V,同理要接电阻),上面的保护二极管截止,下面的保护二极管导通,因为VSS为0V,所以实际输入的电压为0.3V。

2.内部上下拉电阻:内部上下拉电阻值为30~50kOhm,当未接入的时候处于高阻态,电平由外部状态控制,是非稳定的状态。当该器件初始状态是高电平的时候,需要一个稳定的高电位来维护这个状态,于是我们选用上拉电阻(如KEY0);当该器件的初始状态是低电平的时候,需要一个稳定的低电位来维护这个状态,于是我们选用下拉电阻(如WAKE_UP_KEY)。

3.施密特触发器:为一种整形电路,可以将非标准波整形成方波。如图,施密特触发器有一个正向阈值电压和一个负向阈值电压。当电压高于正向阈值电压,输出为高电平;当电压低于负向阈值电压的时候,输出为低电平;当电压处于正向和负向阈值电压之间的时候,输出不改变。

 

4.P/N-MOS管:MOS管是压控型元件,通过控制栅源电压实现导通或关闭。

 G:栅极;S:源极;D:漏极

对PMOS管来说,当Vgs<0时导通,因为VDD为3.3V,所以G极必须低于3.3V,即G输出低电平时,PMOS管才导通。

对NMOS管来说,当Vgs>0时导通,因为VDD为0V,所以G极必须高于3.3V,即G输出高电平时,NMOS管才导通。

接下来详细介绍八种模式分析

GPIO_MODE_INPUT:前三种都属于

1.输入浮空(GPIO_NOPULL):输入用,完全浮空,状态不定。

上下拉电阻关闭,施密特触发器打开,模拟输入关闭,双MOS管不导通。空闲时(高阻态),IO状态不稳定,由外部环境决定。

2.输入上拉(GPIO_PULLUP):输入用,用内部上拉,默认为高电平。

使用上拉电阻,下拉电阻关闭,施密特触发器打开,模拟输入关闭,MOS管不导通。空闲时,IO呈现高电平。

3.输入下拉(GPIO_PULLDOWN):输入用,用内部下拉,默认为低电平。

使用下拉电阻,上拉电阻关闭,施密特触发器打开,模拟输入关闭,MOS管不导通。空闲时,IO呈现低电平。

PS:GPIO_NOPULL,GPIO_PULLUP,GPIO_PULLDOWN都是在GPIO_PULL中进行设置的。

4.模拟(复用)输入(GPIO_MODE_AF_INPUT):ADC/DAC

上下拉电阻关闭,施密特触发器关闭,模拟输入打开,双MOS管不导通。专门用于模拟信号输入。

5.开漏输出(GPIO_MODE_OUTPUT_OD):软件IIC的SDL,SCL等。

上下拉电阻关闭,施密特触发器打开,PMOS管关闭,在ODR对应位写0时,NMOS管导通,输出低电平,写1时不导通,不导通时为高阻态。不能输出高电平,必须有外部上拉电阻才能输出高电平。

6.推挽输出(GPIO_MODE_OUTPUT_PP):驱动能力强,25mA(MAX),通用输出。

上下拉电阻关闭,施密特触发器打开,ODR对应位写0时,NMOS管导通,输出低电平,写1则PMOS管导通,输出高电平。可输出高低电平,驱动能力强。

7.开漏复用输出(GPIO_MODE_AF_OD):片上外设(软件IIC的SDL,SCL等)

上下拉电阻关闭,施密特触发器打开,PMOS管关闭,在外设复用输出写0时,NMOS管导通,写1时不导通,不导通时为高阻态。不能输出高电平,必须有外部上拉电阻才能输出高电平。

8.推挽复用输出(GPIO_MODE_AF_PP):片上外设(SPI的SCK,MISO,MOSI等)

上下拉电阻关闭,施密特触发器打开,外设复用功能写0时,NMOS管导通,输出低电平,写1则PMOS管导通,输出高电平。可输出高低电平,驱动能力强。

至此,对GPIO的简单介绍就完成了。

相关文章:

GPIO的八种模式分析

GPIO是general purpose input output,即通用输入输出端口&#xff0c;作用是负责外部器件的信息和控制外部器件工作。 GPIO有如下几个特点&#xff1a;1.不同型号的IO口数量不同&#xff1b;2&#xff0c;反转快速&#xff0c;每次翻转最快只需要两个时钟周期&#xff0c;以ST…...

携职教育:财会人常用必备,203个EXCEL快捷键汇总

会用快捷键的人早下班&#xff01; 作为财务人员如果你想要提高工作效率&#xff0c;不掌握一些Excel快捷键怎么行&#xff1f; 老板看见了&#xff0c;也会赞一声&#xff0c;“看&#xff0c;这就是专业。” 立马给你加薪&#xff08;划掉&#xff09;&#xff0c;工作效率这…...

【美赛】2023年ICM问题Z:奥运会的未来(思路、代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

CSS基础入门

CSS基础之语法 介绍 ​CSS&#xff08;层叠样式表&#xff09;是一门用来设计网页样式的语言&#xff0c;如网页的布局、字体、颜色搭配、视觉特效。作为WEB开发的基础技术之一&#xff0c;掌握CSS的语法和API对于我们构建丰富的网页是必须的。 基础语法 <style>div …...

可重入锁、读写锁、邮戳锁 详解

文章目录1、可重入锁&#xff08;递归锁&#xff09;2、读写锁2.1、读写分离2.2、从写锁到读锁&#xff0c;ReentrantReadWriteLock可以降级2.3、写锁和读锁是互斥的3、邮戳锁StampedLock3.1、是什么3.2、锁饥饿3.3、如何缓解锁饥饿问题呢3.3.1、使用“公平”策略3.3.2、Stampe…...

HBase客户端、服务器端、列簇设计、HDFS相关优化,HBase写性能优化切入点,写异常问题检查点

HBase客户端、服务器端、列簇设计、HDFS相关优化&#xff0c;HBase写性能优化切入点&#xff0c;写异常问题检查点HBase读优化1.1 HBase客户端优化1) scan缓存是否设置合理&#xff1f;2) get请求是否可以使用批量请求&#xff1f;3) 请求是否可以显示指定列簇或者列&#xff1…...

DINO-DETR在COCO缩减数据集上实验结果分析

博主在进行DINO-DETR模型实验时&#xff0c;使用缩减后的COCO数据集进行训练&#xff0c;发现其mAP值只能达到0.27作用&#xff0c;故而修改了下pycocotool的代码&#xff0c;令其输出每个类别的AP值&#xff0c;来看看是由于什么原因导致这个问题。 之所以这样是因为博主认为各…...

语聊房app源码及架构设计

语音社交产品技术架构设计 语音社交产品的技术架构设计是产品开发中非常重要的一环。在设计时需要考虑产品的功能、性能、可靠性等多个方面&#xff0c;同时也需要与产品策划与设计相协调。以下是语音社交产品技术架构设计的主要内容。 架构设计原则 在设计语音社交产品的技…...

什么是软件测试?5分钟带你快速了解!

经常有人问我&#xff0c;你的公司是做什么的&#xff1f;我回答“软件测试”&#xff0c;看着对方一脸的迷茫。何为软件测试&#xff1f;软件测试究竟测试什么&#xff1f;一、软件测试的定义和意义软件测试是伴随着软件工程的重要组成部分&#xff0c;是软件质量保证的重要前…...

[3D游戏开发实践] Cocos Cyberpunk 源码解读-手把手教你新增一个后效Shader

Cocos Cyberpunk 是 Cocos 引擎官方团队以展示引擎重度 3D 游戏制作能力&#xff0c;提升社区学习动力而推出的完整开源 TPS 3D游戏&#xff0c;支持 Web, IOS, Android 多端发布。 本系列文章将从各个方面对源码进行解读&#xff0c;提升大家的学习效率。希望能够帮助大家在 …...

构建产品帮助中心,促进SaaS企业的进步

长期来看&#xff0c;保留现有客户比获取新客户更为关键&#xff0c;因此建立良好的客户服务质量需要着重关注客户心理状态。 什么是 SaaS SaaS是软件即服务&#xff08;Software as a Service&#xff09;的缩写。它是一种软件交付模式&#xff0c;其中软件应用程序托管在云计…...

【Qt】Qt单元测试详解(四):Google Test

1、创建测试工程 【Qt】Qt单元测试详解(一):通过QtCreator创建测试工程 2、添加测试代码 2.1 默认生成的代码 1)项目工程pro include(gtest_dependency.pri)TEMPLATE = app CONFIG += console c++14 CONFIG -= app_bundle CONFIG += thread CONFIG -= qtHEADERS += \t…...

容器引擎Docker的常用命令

一.镜像相关命令 1.搜索镜像 可使用 docker search命令搜索存放在 Docker Hub中的镜像。执行该命令后&#xff0c; Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓库 docker search java以上列表包含五列&#xff0c;含义如下&#xff1a; NAME:镜像仓库名称。D…...

vue尚品汇商城项目-day01【3.项目路由的分析】

文章目录本人其他相关文章链接安装命令&#xff1a;cnpm install --save vue-router vue-router 前端所谓路由&#xff1a;kv键值对 key:URL(地址栏中的路径) value:相应的路由组件 注意&#xff1a;本项目是上中下结构 路由组件&#xff1a; Home首页路由组件、Search路由组件…...

详解--高级IO

文章目录前言一、五种IO模型阻塞IO非阻塞IO信号驱动IOIO多路转接:异步IO二、高级IO同步通信和异步通信阻塞 VS 非阻塞其他高级IO三、非阻塞IOfcntl实现函数SetNoBlock总结前言 理解五种IO模型的基本概念.重点是IO多路转接. 正文开始! 一、五种IO模型 IO: 等 数据拷贝 read/…...

Android自定义闹钟

google推荐方式3种&#xff1a; 一、AlarmManager setRepeating() 重复闹钟。1、Android 4.4&#xff08;API 级别 19&#xff09;开始&#xff0c;所有重复闹钟都是不精确的&#xff0c;延时2分钟左右。2、闹钟触发的待定 Intent。当您设置使用同一待定 Intent 的第二个闹钟…...

第02章_MySQL环境搭建

第02章_MySQL环境搭建 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前…...

java使用线程池和Future接口实现异步的实例

线程池可以提供线程的复用和管理&#xff0c;避免线程频繁创建和销毁的开销。而Future接口则可以获取异步任务的执行结果和状态&#xff0c;避免了阻塞等待异步任务完成的情况。下面是一个简单的示例代码&#xff1a; import java.util.concurrent.*;public class AsyncExample…...

cocosCreator 事件系统

概述&#xff1a; DOM的输入事件通过CCInputManager转化成cocos的输入事件&#xff0c;由CCEventManager 分发给监听器。 监听器在通过回调函数(begin/move/end/cancel)告知事件派发对象&#xff08;eventTarget&#xff09;派发事件。 重要类&#xff1a; event&#xff1…...

刷题_20:字符串反转 and 公共子串计算

一.字符串反转 题目链接&#xff1a; 字符串反转 题目描述&#xff1a; 接受一个只包含小写字母的字符串&#xff0c;然后输出该字符串反转后的字符串。&#xff08;字符串长度不超过1000&#xff09; 输入描述&#xff1a; 输入一行&#xff0c;为一个只包含小写字母的字符串…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...