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的简单介绍就完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3903.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

dubbo的SPI机制和服务暴露,引用原理

一、SPI引入&#xff1a;spi标准&#xff1a;1、需要在 classpath 下创建一个目录&#xff0c;该目录命名必须是&#xff1a;META-INF/service2、在该目录下创建一个 properties 文件&#xff0c;该文件需要满足以下几个条件 &#xff1a;2.1 文件名必须是扩展的接口的全路径名…

量子运算-比算子描述更广泛的一类刻画量子态在客观世界演化的数学工具

参考链接&#xff1a;1.1 量子运算 - 知乎 (zhihu.com)一个量子操作&#xff08;包括量子测量和量子信道&#xff09;指的是把一个密度矩阵变成另一个密度矩阵的变换&#xff0c;一般记为 背景演化算符是酉的。这里考虑考虑特殊的演化-测量。测量对应的算子是投影算子&#xff…

刘禹锡最经典诗文10首,每一首都是千古名作,读懂受益一生

他是唐代最乐观的诗人&#xff0c;是比他的好友乐天更乐天的人&#xff01;他与柳宗元并称“刘柳”&#xff0c;与韦应物、白居易合称“三杰”&#xff0c;并与白居易合称“刘白”。他是在唐代诗人中&#xff0c;出了名的豪放豁达的刘禹锡。白居易称他为“诗豪”。自“永贞革新…

Elasticsearch:理解 Master,Elections,Quorum 及 脑裂

集群中的每个节点都可以分配多个角色&#xff1a;master、data、ingest、ml&#xff08;机器学习&#xff09;等。 我们在当前讨论中感兴趣的角色之一是 master 角色。 在 Elasticsearch 的配置中&#xff0c;我们可以配置一个节点为 master 节点。master 角色的分配表明该节点…

【javaEE】阻塞队列、定时器、线程池

目录 &#x1f334;一、阻塞队列 1.概念 2.生产者消费者模型 3.阻塞队列的实现 &#x1f3f9;二、定时器 1.引出定时器 2.定时器的实现 &#x1f525;三、线程池 1.引出线程池 2.ThreadPoolExecutor 构造方法 3.标准数据库的4种拒绝策略【经典面试题】【重点掌握】 …

2020年第十一届C/C++ B组第一场蓝桥杯省赛真题

准备参加第十四届蓝桥杯&#xff0c;今天开始刷题目的第一天&#xff0c;下面是2020年第十一届C/C B组第一场蓝桥杯省赛真题&#xff0c;以下是我的做题目心得。跑步训练第一次写的代码失误点如下&#xff1a;第一个错误点是因为好久没有写代码&#xff0c;忘记判断对才能循环&…

【SCL】博图——先入先出排序法

使用博图SCL语言来实现先入先出排序 前言 使用SCL完成一个先入先出排序 具体要求&#xff1a;最先输入的一个数值&#xff0c;最先输出出来&#xff0c;下面的数自动向前填充&#xff1b; 注&#xff1a;这里可能有两种理解&#xff1a;一是第一个输入的第一个出来&#xff…

解析vue中的process.env

一、介绍 1、process process是 nodejs 下的一个全局变量&#xff0c;它存储着 nodejs 中进程有关的信息。 2、process.env env 是 environment 的简称&#xff0c;process.env属性返回一个包含用户环境的对象。 3、dotenv Dotenv 是一个零依赖的模块&#xff0c;它能将环境变…

蓝桥杯刷题冲刺 | 倒计时16天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.青蛙跳杯子1.青蛙跳杯子 题目 链接&#xff1a; 青蛙跳杯子 - 蓝桥云课 (lanqiao.cn) X 星球的…

用于人工智能研究的开源Python微电网模拟器pymgrid(入门篇)

pymgrid是一个开源Python库&#xff0c;用于模拟微型电网的三级控制&#xff0c;允许用户创建或自行选择的微电网。并可以使用自定义的算法或pymgrid中包含的控制算法之一来控制这些微电网&#xff08;基于规则的控制和模型预测控制&#xff09;。 pymgrid还提供了与OpenAI Gy…

初识冯诺依曼体系结构

目录 1.冯诺依曼体系结构 2.冯诺依曼体系的原理 3.数据流向 4.冯诺依曼体系的意义 1.冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 &#xff08;1&#xff09;输入单元&#xff1a;…

JavaEE-多线程中wait和notify都有哪些区别?

更多内容请点击了解 本篇文章将详细讲述wait和notify的区别&#xff0c;请往下看 目录 更多内容请点击了解 文章目录 一、wait和notify概念 二、wait()方法详解 三、notify()方法详解 代码如下&#xff1a; 3.1notifyAll()详解 四、wait和sleep的对比 一、wait和notif…

Docker容器高级篇

文章目录一、Dockerfile文件1.dockerfile基础知识2.docker执行dockerfile的大致流程3.dockerfile常用保留字4.dockerfile构建镜像示例二、docker network1.docker net常用指令2.docker的网络模式三、docker-compose容器编排1.下载安装2.三个步骤3.compose常用命令4.不使用docke…

Java Web 实战 17 - 计算机网络之传输层协议(2)

大家好 , 这篇文章继续给大家讲解 TCP 协议当中的一些操作 , 比如 : 滑动窗口、流量控制、拥塞控制、延时应答、捎带应答、面向字节流这几个提升 TCP 效率的操作 . 我们还会给大家分析 TCP 连接出现异常的时候 , 该如何处理 . 最后会将 TCP 和 UDP 进行比较 上一篇文章的链接也…

【计组】RAM的深入理解

一、存储机理 RAM的实现逻辑有种&#xff0c;分别是触发器和电容。 SRAM&#xff08;Static&#xff09;DRAM&#xff08;Dynamic&#xff09;存储方式触发器电容破坏性读出否&#xff08;触发器具有稳态&#xff0c;能够锁住0或1两种状态&#xff09;是&#xff08;电容需要…

面试热点题:回溯算法 递增子序列与全排列 II

前言&#xff1a; 如果你一点也不了解什么叫做回溯算法&#xff0c;那么推荐你看看这一篇回溯入门&#xff0c;让你快速了解回溯算法的基本原理及框架 递增子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两…

K8S + GitLab + Jenkins自动化发布项目实践(二)

K8S GitLab Jenkins自动化发布项目实践&#xff08;二&#xff09;Jenkins容器化部署部署NFS PV存储Jenkins部署Jenkins初始化安装Jenkins插件Jenkins主从架构配置Kubernetes插件配置安装nerdctl工具自定义Jenkins Slave镜像测试主从架构是否正常前置工作&#xff1a;已部署5…

Linux中滴计划任务

计划任务计划任务计划任务分类at命令load averagecrontab命令配置文件通常包含三个部分cron服务配置文件cron服务的日志文件时间数值的特殊表示方法应用实例案例anacron服务计划任务 计划任务&#xff08;Cron Job&#xff09;是指在预定的时间自动执行一些指定的任务或脚本。…

【蓝桥杯专题】 树状数组(C++ | 洛谷 | acwing | 蓝桥)

菜狗现在才开始备战蓝桥杯QAQ 文章目录【蓝桥杯专题】 &#xff08;C | 洛谷 | acwing | 蓝桥&#xff09;什么是线段数组??1264. 动态求连续区间和数星星线段树AcWing 1270. 数列区间最大值PPPPPPP【蓝桥杯专题】 &#xff08;C | 洛谷 | acwing | 蓝桥&#xff09; 什么是…

华为OD机试用java实现 -【最多获得的短信条数】(2023-Q1 新题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:最多获得的短信条数 题目 某…