嵌入式2. 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出)

这篇具有很好参考价值的文章主要介绍了嵌入式2. 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 前言
  • GPIO是什么
  • GPIO的八大模式
    • 输入模式
      • 浮空输入
      • 上拉输入
      • 下拉输入
      • 模拟输入
    • 输出模式
      • 开漏输出
      • 推挽输出
      • 复用开漏输出
      • 复用推挽输出
  • GPIO的输出速率

前言

学习了这么久的单片机,说来羞愧,直到写这篇文章之前,我都没有仔细去理解GPIO的八种使用模式,之前只是傻傻的用着,直到把模电,数电学完,到今天重新回顾了一遍这一个知识,发现自己终于看懂了之前没有理解透彻的知识,特此总结下来。

GPIO是什么

从最基础的51单片机,Arduino,到STM32,树莓派等等,这些上面都会有GPIO口这么一个概念,如果你点开了我这个博客,说明你大概率开始学习单片机,那么你应该了解的就是这些口可以输出高低电平,或者是读取引脚上的输入电平。
GPIO的总述功能如下

GPIO(general porpose intputoutput):通用输入输出端口的简称。可以通过软件控制其输出和输入。stm32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通信,控制以及数据采集的功能。
———GPIO简介

下面摆一张以STM32内部GPIO口为例的内部原理图,大伙也不要着急,先有一个这个图的概念,下面就是开始讲怎么理解GPIO口。

输入上拉模式,嵌入式,嵌入式硬件

先来一点最基础的知识
上拉和下拉:
当我们闭合上拉电阻的开关,断开下拉电阻的开关的时候,也就是此时为上拉通路导通。根据我们最基础的电路知识,如果I/O口断开不接外设,或者接了外设但是电路也断开,此时整条回路是断路的时候,电阻相当于不存在,此时O点的电位,也就被钳制在了VDD(供电电压正极),于是O点就处于高电平。
同理,闭合上拉电阻的开关,断开下拉电阻的开关,那么在电路断开的时候,根据电路知识,电阻相当于不存在,O点的电压就就被钳制**在了VSS(GND),也就是O点处于低电平。

数字信号和模拟信号:
数字信号:就是根据一些规则,将一个范围内的电压规定为1,一个范围内的电压规定为0,也就是一连串的0,1信号
模拟信号:就是连续的读取到的电压值。
关于图上的TTL施密特触发器和P-MOS和N-MOS,后面讲到对应部分的时候会讲到。

GPIO的八大模式

GPIO可以分为输入或者输出,加起来一共有八种模式。

输入模式

在输入模式下,一共有四种输出模式,分别是

  • 模拟输入
  • 上拉输入
  • 下拉输入
  • 浮空输入
浮空输入

输入上拉模式,嵌入式,嵌入式硬件

浮空输入需要走的路径如图所示。首先得知道,浮空输出走的这一条路径,是对一个数字信号的读取。
需要的电路如下:
VDD和VSS所在路径的两个开关同时断开。此时没有上拉和下拉的情况,所以当IO口没有接输入的时候,此时的电平会是一个不确定的值,也就是我们所说的浮空。电平会处于一个跳变的状态,一会高,一会低。只有输入了一个高/低电平才会确定下来。
注意: 上拉和下拉电阻电路的开关在实际应用中一般使用MOS管来代替开关来提到。

再往前面走,就是走到了TTL施密特触发器这一个部分。我们知道,由于电源的特性,或者是由于外部开关输入的特性,输入的数字信号,极有可能会出现脉冲等噪声的影响,为了让我们的波形更好看,或者信号更加清晰,所以就设置了TTL施密特触发器这个东西。经过之后,我们就会把这个数字信息存储在输入数据寄存器中。
这样我们就读到了IO过来的数字信号

优势: 这一种输入模式的电平会完全取决于外部电路而与内部电路无关。有时候会用作对开关按键的读取。

但是在没有外部电路接入的时候,IO脚浮空会使得电平不确定

上拉输入

输入上拉模式,嵌入式,嵌入式硬件

上拉输入需要走的路径如图所示。首先得知道,上拉输出走的这一条路径,是对一个数字信号的读取。
需要的电路如下:
VDD所在上拉电阻开关闭合,下拉电阻的开关断开。
根据前面浮空输入里面所提的,在没有信号输入的时候,根据电路知识,此时的电平就是VDD的电平,此时读取到的电平就是高电平。如果输入了一个高电平,VDD和O点(最上面的图中的O点)之间就几乎没有电势差,此时O点的电平就仍然是高电平,读取到的电平就是高电平。但是由于在没有电压输入的时候,电平也是高电平,所以这一种输入情况下是没有办法确定信号是否输入了。
当输入信号是一个低电平的时候,此时O点的电平的电平就会变成低电平,那么VDD和O点之间形成了电势差,但是因为上拉电阻的存在,所以不会出现一个大电流。此时单片机读取到的一个电平就是一个低电平。在上拉输入的情况下,低电平的是能够非常明显的读取到的。
上拉输入的好处就是输入的电平不会上下浮动而导致输入信号不稳定,在没有信号输入的情况下可以稳定在高电平。

下拉输入

输入上拉模式,嵌入式,嵌入式硬件

下拉输入需要走的路径如图所示。首先得知道,下拉输出走的这一条路径,是对一个数字信号的读取。
需要的电路如下:
VDD所在上拉电阻开关断开,下拉电阻的开关闭合。
根据前面浮空输入里面所提的,在没有信号输入的时候,根据电路知识,电平就是VSS的电平,此时读取到的电平就是低电平。此时输入的电平如果是一个低电平,就没有办法和之前的情况进行区分。但如果输入的是一个高电平,O点和VSS之间同样形成了电势差,O点的电平会变成外部的高电平,那么单片机得到的就是一个高电平信号。
下拉输入的好处就是输入的电平不会上下浮动而导致输入信号不稳定,在没有信号输入的情况下可以稳定在低电平。

模拟输入

输入上拉模式,嵌入式,嵌入式硬件

模拟输入需要走的路径如图所示。首先得知道,模拟输出走的这一条路径,是我们需要对一个模拟信号进行读取。
在我们使用单片机的时候,我们有时候需要用AD采集到IO口上面的真实电压。这就有了我们所需要的模拟输入。为了让外部的电压真实的读取到单片机的AD模块,我们既不能闭合上拉和下拉的开关,也不能让信号经过施密特触发器。

优势:可以让AD读取电压。还可以在低功耗模式下运行,实现省电的作用。

输出模式

在输出模式下,同样也有四种输出模式,分别是

开漏输出
推挽输出
复用开漏输出
复用推挽输出

开漏输出

输入上拉模式,嵌入式,嵌入式硬件

④⑤⑥⑦是读取的过程,此处不管。
开漏输出的电路路径是①②③④,②前面的步骤就是一个对输出信号的控制,不是重点,开漏输出里面最重要的是③,也就是N-MOS这一部分,下面来补充一下模电知识。

输入上拉模式,嵌入式,嵌入式硬件
我们可以把这一个MOS管当成一个三极管,对于图中所示的这种三极管我们可以简单的理解成一个水龙头,左侧就是一个水龙头开关,当给一个高电平的时候, O点和GND就会导通。(O点的输出就是一种反向器的输出,也就是O点的电平会和左侧MOS的栅极(三极管的基极)相反)
所以说,开漏输出就很好理解了。当我们给一个低电平的时候,MOS管关闭,此时输出的电压就是一个浮空,即不确定的电压。如果给一个高电平,那么MOS管导通,相当于IO口与VSS相连,此处就输出了一个低电平电压。
优势①
虽然我们可以看到开漏输出是没有办法在内部输出一个高电平,但是这一个看似是缺点。其实实际上是一种优点。我们可以得到,当给一个低电平的时候,MOS管没有导通,此时电压不确定导致无法输出高电平,但是一旦我们在外部增加一个上拉,那么这一个缺点就会被有效避免。并且,因为是我们自己设计一个上拉,这个上拉的电压是由我们自己确定,这样我们就可以根据外部电路需要多少V的高电平来给这一个上拉的电压,可以更好的适应更多情况。 如下图,我们可以给定任意的VDD电压,来适应我们实际所需要的情况。

输入上拉模式,嵌入式,嵌入式硬件

优势②
开漏输出的实质其实就是一个OD门(OD:漏极输出(Open Drain))。而在数电中,OD门有一个非常重要的特性就是可以实现线与的功能,简单来说,就是在像IIC这样的总线协议中,只要有一个给低电平,那么总线都会被拉低。

推挽输出

输入上拉模式,嵌入式,嵌入式硬件

推挽输出就是可以需要利用两个不同的MOS管来实现输出。
P-MOS和N-MOS是不同的控制方式,当给一个高电平的时候,N-MOS导通,P-MOS不导通,此时IO口接通在VSS,此时输出的是低电平。当给一个低电平的时候,P-MOS导通,N-MOS导通,此时IO口接通在VDD电源上面,此时输出的是高电平。
一定要把这个MOS管理解成开关控制的水龙头!!!
优势
带载能力强。

复用开漏输出

复用推挽和复用开漏其实很简单,在你理解了开漏和推挽的原理之后,如果你不想用单片机内部来输出,那么你可以进行复用,将输出转移到其他外设上面

复用推挽输出

输入上拉模式,嵌入式,嵌入式硬件

GPIO的输出速率

输入上拉模式,嵌入式,嵌入式硬件

————————————————
版权声明:本文为CSDN博主「暮尘依旧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。文章来源地址https://www.toymoban.com/news/detail-761827.html

到了这里,关于嵌入式2. 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式STM32 单片机 GPIO 的工作原理详解

    STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为

    2024年02月20日
    浏览(50)
  • 嵌入式系统实验报告实验一 GPIO 口控制LED 实验

    1 实验目的 1.) 了解并掌握如何控制 STM32 的 GPIO; 2.) 掌握控制 LED 的电路原理和程序代码; 2 实验环境 1.) 硬件:1 个空气温湿度传感器模块、1 个 ST-Link 调试器、1 根USB2.0 方口线、1根USB3.0 数据线、1 台PC 机; 2.) 软件:Windows 10、MDK 集成开发环境。 3 实验功能 实现LED灯依

    2024年02月01日
    浏览(63)
  • 全志F1C200S嵌入式驱动开发(GPIO输出)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         和v3s一样,f1c200s本身的外部引脚比较少。所以这个时候,不可避免地,很多引脚的功能就会重叠在一起。这种情况下,我们就要学会取舍了。比如说,如果是学习sd卡的时候,那么s

    2024年02月16日
    浏览(46)
  • 嵌入式-Stm32-江科大基于标准库的GPIO的八种模式

    (推荐先看文章:《 嵌入式-32单片机-GPIO推挽输出和开漏输出》) 下文图都是从参考手册借阅:STM32F10xxx(中文),大概页数是110/775左右 GPIO (General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V(有FT标识) 输出模式 下可控

    2024年01月20日
    浏览(52)
  • 嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

    核心:本文共4个小实验: 第一个:LED灯闪烁 第二个:LED流水灯 第三个:按键控制LED 第四个:光敏传感器控制蜂鸣器 1.1 LED、蜂鸣器、面包板 LED:发光二极管,正向通电点亮,反向通电不亮。 有源蜂鸣器(本实验):内部自带振荡源,将正负极接上直流电压即可持续发声,频

    2024年01月21日
    浏览(64)
  • 嵌入式学习笔记——PWM与输入捕获(下)

    上一篇介绍了通用定时器的输出比较部分,这一篇再来介绍一下输入捕获的相关内容。 输入捕获,见名知意,就用来对输入信号进行捕获的,说到捕获输入信号,之前介绍过一个叫做外部中断的片上外设,它的作用也是捕获输入;它们的不同在于,外部中断捕获的只是边沿,

    2024年02月06日
    浏览(45)
  • 【嵌入式系列】一文彻底理解DMA

    DMA用于在 外设 与 存储器 之间以及 存储器 与 存储器 之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可供其它操作使用。 我们用一个现实例子来做个类比。有一家冶炼公司,每天要不断的从矿场拉矿石进入厂区冶炼,以

    2023年04月19日
    浏览(95)
  • 韦东山嵌入式Liunx入门驱动开发一(Hello 驱动编程、GPIO基础知识、LED驱动、总线设备驱动模型)

    本人学习完韦老师的视频,因此来复习巩固,写以笔记记之。 韦老师的课比较难,第一遍不知道在说什么,但是坚持看完一遍,再来复习,基本上就水到渠成了。 看完视频复习的同学观看最佳! 基于 IMX6ULL-PRO 参考视频 Linux快速入门到精通视频 参考资料 :01_嵌入式Linux应用

    2024年04月25日
    浏览(81)
  • 【蓝桥杯】【嵌入式组别】第十三节:PWM输入捕获编程

    目的就是测量输入到特定管脚上的PWM波的频率和占空比。 下面是PWM部分的电路图: PWM由XL555芯片产生,由滑动变阻器R40连接到PA15,滑动变阻器不同的阻值对应不同的PWM波的频率。下面一个也是一样的原理。 可以看到板子上的PA15引脚的功能分别有:TIM2_CH1和TIM8_CH1,我们在板

    2023年04月11日
    浏览(104)
  • ToBeWritten之理解嵌入式Web HTTP协议

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬请移步知识星球 感谢大家一直以来对我CSDN博客的关注和支持,但

    2023年04月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包