floating输入 高阻输入_GPIO输入输出各种模式(推挽、开漏、准双向端口)详解...

转自:https://blog.csdn.net/techexchangeischeap/article/details/72569999

概述

能将处理器的GPIO(General Purpose Input and Output)内部结构和各种模式彻底弄清楚的人并不多,最近在百度上搜索了大量关于这部分的资料,对于其中很多问题的说法并不统一。本文尽可能的将IO涉及到的所有问题罗列出来,对于有明确答案的问题解释清楚,对于还存在疑问的地方也将问题提出,供大家讨论。

概括地说,IO的功能模式大致可以分为输入、输出以及输入输出双向三大类。其中作为基本输入IO,相对比较简单,主要涉及的知识点就是高阻态;作为输出IO,相比于输入复杂一些,工作模式主要有开漏(Open Drain)模式和推挽(Push-Pull)模式,这一部分涉及的知识点比较多;对于输入输出IO,容易产生疑惑的地方是准双向和双向端口的区别。

下面就按照这样的顺序依次介绍各个模式的详细情况。

输入IO

这里所说的输入IO,指的是只作为输入,不具有输出功能。此时对于input引脚的要求就是高阻(高阻与三态是同一个概念)。基本输入电路的类型大致可以分为3类:基本输入IO电路、施密特触发输入电路以及弱上拉输入电路。

先从最基本的基本输入IO电路说起,其电路如图 1所示。

其中的缓冲器U1是具有控制输入端,且具有高阻抗特性的三态缓冲器。通俗地说就是这个缓冲器对外来说是高阻的,相当于在控制输入端不使能的情况下,物理引脚与内部总线之间是完全隔离的,完全不会影响内部电路。而控制输入端的作用就是可以发出读Pin状态的操作指令。其过程如图 2所示。

这种基本电路的一个缺点是在读取外部信号的跳变沿时会出现抖动,如下图所示。

于是施密特触发输入电路就是解决了上述这种抖动的问题,其经过施密特触发器后的信号如图 4所示。

对于输入电路还存在另外一个问题,就是当输入引脚悬空的时候,输入端检测到的电平是高还是低?当输入信号没有被驱动,即悬空(Floating)时,输入引脚上任何的噪声都会改变输入端检测到的电平,如图 5所示。

为了解决这个问题,可以在输入引脚处加一个弱上拉电阻,如图 6所示。

这样,当输入引脚悬空时,会被RP上拉到高电平,在内部总线上就有确定的状态了。

但是这种结构是有一定问题的。首先很明显的一点是,当输入引脚悬空时读到的是1,当输入引脚被高电平驱动时读到的也是1,只有当输入引脚被低电平驱动时读到的才是0。也就是对于读1采取的方式是"读取非零"的方式。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GPIO输入输出有多种模式,包括: 1. 模拟输入模式(GPIO_Mode_AIN):用于接收模拟信号的输入。 2. 浮空输入模式(GPIO_Mode_IN_FLOATING):输入不连接到任何电源或地,可以通过外部电路来控制输入。 3. 下拉输入模式(GPIO_Mode_IPD):输入连接到地,通过外部电路上拉电来控制输入。 4. 上拉输入模式(GPIO_Mode_IPU):输入连接到电源,通过外部电路下拉电来控制输入。 5. 输出模式(GPIO_Mode_Out_OD):输出结构,可以通过外部电路连接到其他设备。 6. 输出模式(GPIO_Mode_Out_PP):输出结构,可以提供较输出电流。 7. 复用输出模式(GPIO_Mode_AF_OD):输出结构,并且与其他功能模块共享引脚。 8. 复用输出模式(GPIO_Mode_AF_PP):输出结构,并且与其他功能模块共享引脚。 这些模式可以根据具体的应用需求选择,例如需要输入模拟信号时可以选择模拟输入模式,需要输出信号给其他设备时可以选择输出输出模式。同时,每个GPIO口还可以通过编程来设置其模式。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [GPIO输入输出模式原理(八种工作方式附电路图详解)](https://blog.csdn.net/zhuguanlin121/article/details/118489092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值