GPIO的八种工作模式详解

浮空输入_IN_FLOATING
带上拉输入_IPU
带下拉输入_IPD
模拟输入_AIN
开漏输出_OUT_OD
推挽输出_OUT_PP
开漏复用输出_AF_OD
推挽复用输出_AF_PP
4输入 + 2 输出 + 2 复用输出,一共是8种模式,以下是八种模式的工作原理:

GPIO浮空输入_IN_FLOATING模式工作原理

以上截图就是浮空输入模式的原理图,
图中阴影的部分在浮空输入模式下是处于不工作状态的,尤其是下半部分的输出电路
实际上这时的输出电路与输入的端口处于隔离状态。
黄色的高亮部分显示了数据传输通道,
外部的电平信号通过左边编号1的I/O 端口进入STM32内部
经过编号2的施密特触发器整形以后送入编号为3的“输入数据寄存器”
在“输入数据寄存器”的另一端(编号4) ,CPU通过内部的数据总线可以随时读出I/O 端口的电平变化的状态。

GPIO带上拉输入_IPU 模式工作原理:

上图是STM32的GPIO带上拉输入模式的原理图。
与前面介绍的浮空输入模式相比,仅仅是在数据通道上面,接入了一个上拉电阻,
根据STM32的数据手册,这个上拉电阻阻值介于30K~50K 欧姆。
同样,CPU可以随时在“输入数据寄存器”的另一端,通过内部的数据总线读出I/O 端口的电平变化的状态。

GPIO带下拉输入_IPD 模式工作原理:

对于输入下拉模式的输入,是在数据通道的下部,接入了一个下拉电阻。
根据STM32的数据手册,这个下拉电阻阻值也是介于30K~50K 欧姆。

对于要加上拉或下拉电阻:
1.当作单片机作为输入时,假设我们直接在IO端口接一个按键到地(或电源)。
因为按键按,于不按管脚都是悬空的。单片机就很难检测按键是否按下。
所以人为的接一个上拉(或下拉)。以确定未按下的时候IO输入电平的状态
2.可以提高芯片的抗干扰能
3.当单片机的IO口作输出时,如果不接上拉电阻只能提供灌电流。无法输出电流驱动外接设备。这时也需要考虑上拉电阻。这样才可以使IO输出高电平

GPIO模拟输入_AIN 模式工作原理:

如果把STM32配置为模拟输入模式时,工作原理就比较简单了,信号从左边编号为1 的端口进
从右边编号为2的一端直接进入STM32单片机的AD模块。
细心的朋友可以看到数据通道中上拉、下拉电阻和施密特触发器,这时均处于关断的状态,
“输入数据寄存器”就不能反映IO端口上的电平变化的状态了
换句话说,也就是在模拟输入状态下,CPU不能通过“输入数据寄存器”读到IO端口变化的数据了

以上分析的是GPIO模块IO引脚的输入模式的工作原理,下面介绍一下GPIO输出模式的工作原理

GPIO开漏输出_OUT_OD 模式工作原理

上图是GPIO开漏输出模式的工作原理图
当CPU 在编号1 端通过“位设置/ 清除寄存器”或“输出数据寄存器”写入数据后
该数据位将通过编号2的输出控制电路传送到编号4 的I/O端口。
如果CPU 写入的是逻辑“1 ”,则编号3 的N-MOS管将处于关闭状态
此时I/O 端口的电平将由外部的上拉电阻决定
如果CPU 写入的是逻辑“0 ”,则编号3的N-MOS管将处于开启状态
此时I/O端口的电平被编号3 的N-MOS管拉到了“地”的零电位。

在图中的上半部,施密特触发器处于开启状态
这意味着CPU 可以在“输入数据寄存器”的另一端,随时可以监控I/O端口的状态
通过这个特性,还可以实现了虚拟的I/O端口双向通信:假如CPU 输出逻辑“1 ”
由于编号3 的N-MOS管处于关闭状态,I/O 端口的电平将完全由外部电路决定
因此,CPU 可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1 ”

GPIO口的输出模式下,有3 种输出速度可选(2MHz 、10MHz和50MHz)
这个速度是指GPIO口驱动电路的响应速度,而不是输出信号的速度
输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路
用户可以根据自己的需要选择合适的驱动电路)。
通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
高频的驱动电路,噪声很高  
当我们的项目不需要比较高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI 性能。
当然如果我们的项目要求输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到比较失真的输出信号
有关具体信息可参考: http://www.51hei.com/bbs/dpj-40309-1.html

GPIO推挽输出_OUT_PP模式工作原理

GPIO的推挽输出模式是在开漏输出模式的基础上,在“输出控制电路”之后,增加了一个P-MOS管
当CPU输出逻辑“1 ”时,编号3 处的P-MOS管导通,而下方的N-MOS管截止,达到输出高电平的目的
当CPU输出逻辑“0 ”时,编号3 处的P-MOS管截止,而下方的N-MOS管导通,达到输出低电平的目的
在这个模式下,CPU 仍然可以从“输入数据寄存器”读到该IO端口电压变化的信号

GPIO开漏复用输出_AF_OD模式工作原理

GPIO的开漏复用输出模式与开漏输出模式的工作原理基本相同
不同的是编号为2 的输入的源不同,它是和复用功能的输出端相连
此时的“输出数据寄存器”被输出通道给断开了。
从上面的这个图,我们还可以看到CPU同样可以从“输入数据寄存器”读取到外部IO端口变化的电平信号。

GPIO推挽复用输出_AF_PP模式工作原理

最后介绍一下GPIO推挽复用输出模式的工作原理
编号2“输出控制电路” 输入是与复用功能的输出端相连
此时“输出数据寄存器”被从输出通道断开了,片上外设的输出信号直接与“输出控制电路”的输入端想连接。
我们将GPIO配置成复用输出功能后,假如相应的外设模块没有被激活,那么此时IO端口的输出将不确定。

其它部分原理与前面叙述的模式一样,包括对“输入数据寄存器”的读取方式也是一样的。

转载自 http://www.51hei.com/bbs/dpj-40310-1.html

ST MCU_GPIO的八种工作模式详解相关推荐

  1. linux apache两种工作模式详解

    apache两种工作模式详解 刚接触这两个配置时很迷糊,全部开启或全部注释没有几多变化.今天搜索到这么一篇讲得还不错的文章,看了几篇,还是不能完全记住,做一个收藏. 空闲子进程:是指没有正在处理请求的 ...

  2. VMWare虚拟系统上网设置及VMWare虚拟机三种工作模式详解

    =========================================================== 很多网友安装了VMWare虚拟机,但是在虚拟机上网问题上却卡住了.要想虚拟机上网 ...

  3. efm8bb1 烧录器_【技术】 EFM8BB1系列MCU三种工作模式详解

    MCU,该MCU最高运行频率可达25MHz, 其RAM容量最大为512B,FLASH容量最大可达8KB. EFM8BB1集成了丰富的外设资源,其内部集成12 bit A/D转换器,最高转换速率可达80 ...

  4. SELinux的三种工作模式详解

    目录 前言 一.SELinux是什么 二.CentOS 6.x 7.x安装SELinux 三.SELinux的主要作用 四.SELinux 的工作模式(Disabled.Permissive和Enfo ...

  5. VMWare三种工作模式详解,bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。

    ---------------------  作者:CleverCode  来源:CSDN  原文:https://blog.csdn.net/CleverCode/article/details/4 ...

  6. LVS工作原理以及三种工作模式详解

    1.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(r ...

  7. GPIO的八种工作模式

    一.GPIO的八种工作模式 1.上拉输入:IO口在无输入的情况下,保持高电平. 2.下拉输入:IO口在无输入的情况下,保持低电平. 3.浮空输入:浮空输入状态下,IO的电平状态是不确定的,完全由外部输 ...

  8. STM32的八种工作模式

    一.模式介绍 STM32单片机具有高性能.低成本.低功耗的优点,与它打交道就必须先了解它的几种工作模式,它共有八种IO口模式,分别是:模拟输入.浮空输入.上拉输入.下拉输入.开漏输出.推挽输出.复用开 ...

  9. STM32中GPIO口八种工作模式简介及LED灯测试

    STM32中GPIO口八种工作模式简介及LED灯测试 一.GPIO口八种工作模式 二. LED灯测试 一.GPIO口八种工作模式 在STM32单片机里对于GPIO的配置种类有8种之多,包括4种输入模式 ...

最新文章

  1. Balanced Binary Tree
  2. SpringCloud Config简介
  3. java常用的发送http请求的工具方法
  4. NormalMap 贴图 [转]
  5. 实用知识点梳理:网络操作系统、HTTPS、交换机中用户权限、路由器与集线器功能、HTTP2.0特性
  6. vue class与style绑定
  7. Docker 服务器安装(一)
  8. 微生物组-宏基因组分析第8期 (报名直播课免费参加线下课2020.7,最后一周)
  9. 灯塔预计2022年春节档票房在70亿至80亿元之间
  10. 以Post方式向指定url地址发送数据并活得返回结果
  11. 使用tSQLt进行测试驱动的数据仓库开发(TDWD)
  12. [Python] pip 清除缓存
  13. 微软编程一小时--微软2014实习生招募编程模拟测试感想
  14. 数据库高级查询与性能优化1,开窗函数与子查询
  15. 建筑CAD基础设计【2】
  16. hosts文件是什么? 以及在各个系统中(Windows、Mac、Linux)的hosts文件在哪里?
  17. java c/s网络聊天室,基于c-s网络聊天室报告.doc
  18. 海贼王:第86话 (希鲁鲁克的樱花与被继承的意志!)
  19. 手机微信中对方正在输入...,不显示有4种原因,还能永不显示
  20. 南非数字货币应用潜力巨大 小试牛刀审慎探索

热门文章

  1. Akka 学习(九)Akka Cluster
  2. (转)赵云在长坂坡杀的都是些什么人?一一道来...
  3. 高项 干系人管理论文
  4. 电力猫多路由,NUC黑群晖,小蚁摄像机
  5. 【Canvas】js用Canvas绘制漩涡螺旋图动画效果
  6. vo、po、bo、dto、dao、pojo、entity如何理解和区分?
  7. 2.2.1 定点数的表示 原码 反码 补码 移码
  8. 【PPT炫技】——封面页,炫酷开场
  9. 简介 - Energy是Go基于Chromium构建Windows、Linux、MacOSX的跨平台桌面应用框架
  10. 基于Java的校园商铺的设计与实现