GPIO内部结构、工作原理、高电平、低电平、上拉电阻、下拉电阻详解

单片机的IO(GPIO)相关的知识点

 

注意:本文章需要配合无际单片机编程-硬件基础2.0教程视频学习。

注意:本文章需要配合无际单片机编程-硬件基础2.0教程视频学习。

 

关于单片机的IO,大家可能有很多疑问?IO口的内部结构是怎么样的?高低电平的电压范围是多少?单片机IO配置不同的工作模式对应内部结构有什么区别?…… 本节课就重点给大家解答这些问题。

本节课重点介绍:

  • 施密特触发器
  • IO口的高低电平&高低电平的电压范围
  • STM32单片机8种工作模式详解
  • STC15单片机4种工作模式详解
  • 电平转化电路
  • 上拉电阻&拉电流&上拉电阻的应用电路
  • 下拉电阻&灌电流&下拉电阻的应用电路

 

一、  施密特触发器

为了更好的理解单片机IO口内部的结构,我们先了解一下施密特触发器。

1.分类

  • 同向输出 
  • 反向输出 

 

2.工作特性讲解:

如下图:

UT+:正(同)向阈值电压    UT- :  负(反)向阈值电压

UOH:输出高电平             UOL : 输出低电平   

同向输出施密特触发器 :

当输出电平为低时,输入电压低于正向阈值电压,保持低电平;高于正向阈值电压,输出变高

当输出电平为高时,输入电压高于负向阈值电压,保持高电平;低于负向阈值电压,输出变低 

反向输出施密特触发器 :

输出的电平状态和同向正好相反;

 

3.施密特触发器功能总结:

功能说明:

施密特触发器可作为波形整形器,能将模拟信号整形为单片机内部方便处理的数字方波信号,由于施密特触发器具有滞回特性,所以可用于抗干扰。

总结:

施密特触发器的作用:

  • 将模拟信号转换成数字信号
  • 提供抗干扰作用

 

二、  IO口高低电平&高低电平的电压范围

本小节主要给大家讲解2个问题:

  • IO口高低电平的定义
  • IO口高低电平的工作电压范围

 

1.高低电平的定义:

举例:

例如:  sbit LED1 = P3^1;     

            LED1 = 1;              表示P3.1 输出高电平(用1表示)

            LED1 = 0;             表示P3.1  输出低电平(用0表示)

 

高电平定义:

IO口作为数据输出的时候,IO口对应的数据寄存器bit位配置成1,IO口输出的电平,称为单片机的高电平,此时IO口的输出的电压,为高电平对应的电压值; 

 

低电平定义:

IO口作为数据输出的时候,IO口对应的数据寄存器bit位配置成0,IO口输出的电平,称为单片机的低电平;此时IO口的输出的电压,称为低电平对应的电压值

问:那单片机高低电平的电压范围是多少?

 

2.严格意义上的高低电平电压范围:

高电平电压是  VCC  (单片机的供电电压  以STM32为例: VCC=3.3V)

低电平电压是  GND (0V)

 

3.IO口做输出功能时,高低电平的电压范围:  

高电平:VCC    一般情况下,高电平就是单片机的供电电压

低电平:   0V.   

 

4.IO口做输入功能时,高低电平的电压范围

①通过单片机数据手册获取输入高低电平的范围:

不同单片机,输入的高低电平的范围是不一样的,下面通过STC15和STM32F103为例,我们通过芯片说明书获取输入高低电平的范围。

  • STC15单片机:以下截图来自芯片手册规格书

通过以上的问题,我们总结一下: 低电平:0-0.8V   高电平:2.2-VCC

  • STM32单片机     以下截图来自芯片手册规格书

STM32单片机IO口的电平:

  • 输入高电平范围: 0.65*VDD —  VDD
  • 输入低电平范围: 0 —  0.35*VDD 

 

②输入的高低电平,硬件设计的时候注意事项:

通过规格书获取IO口输入的高低电平的电压范围,只能作为我们设计的参考。在产品设计的时候,低电平要尽可能的低(0V),高电平要尽可能的接近VCC。  

备注:VCC和VDD都表示单片机的工作电压;

 

三、STM32单片机的IO的内部结构&8种工作模式

STM32F103在程序开发的时候的,有8种配置模式:

我们以视频的形式解析这8中形式的工作模式对应的内部结构:(图片来自STM32规格书)

 

1.  模拟输入:

当IO口用作ADC功能的时候,IO需要配置成模拟输入。

2.浮空输入:

3.上拉输入:

 

4.下拉输入:

5.推挽输出:

推挽结构:一般是指两个MOS管(或三极管)分别受两个互补信号的控制。

同一时刻,总是有一个MOS管(或三极管)导通,另外一个截止。高低电平由单片机的IO的数据寄存器控制的,VDD是由单片机电源决定。

  • 输出高电平:

  • 输出低电平:

 

6.开漏输出:

开漏是什么意思? 

我们可以把开漏模式等效成以下的电路, 由于漏极是连接单片机的IO口,当内部的MOS管关闭的时候,MOS管的漏极是悬空断开的,所以叫开漏模式。

开漏输出的时候,外部必须要设计外部上拉电阻才可以正常的使用。

STM32单片机开漏模式时:

 

7.复用-开漏模式:

复用功能:GPIO口做串口、SPI、定时器捕获等功能的时候配置;

 

8.复用-推挽模式:

复用功能:GPIO口做串口、SPI、定时器捕获等功能的时候配置;

 

 

四、STC15 IO口内部结构(4种工作模式对应的内部结构解析)

本小节的主要内容:

  • STC15单片机IO口4种工作模式的介绍
  • 4种工作模式对应的内部结构解析

1.STC15单片机的IO的四种工作模式:

以下图片截自STC15单片机的规格书。 

通过上图,我们可以知道,STC15单片机可以配置成准双向口、推挽输出、高阻输入、开漏

 

2.  四种工作模式对应的内部结构:(了解)

关于STC15单片机的IO结构,规格上有很详细的说明,大家可以结合芯片规格书,来理解下面的内容。

①准双向IO口

此工作模式,STC15单片机的IO支持数据的输入和输出;

  • 内部结构:

  • 数据输出:

  • 数据输入:

②推挽输出
  • 内部结构:

  • 数据输出:

  • 数据输入:

 

③高阻输入

高阻模式在产品开发过程中,使用的相对比较少,我们直接通过规格书来查看,什么时候配置成高阻输入模式。(通过视频讲解)

 

④开漏模式

  • 开漏模式使用说明:

即可读取外部状态,也可对外部输出(高电平或低电平)。如果要正确的读取外部的状态或需要对外部输出高电平,需外加上拉电阻。

  • 数据输入和输出的工作原理(通过视频讲解)

3.  STC15单片机IO在准双向IO口模式时,做数据输入的时候,为什么需要先输出高电平,才能正确的读取外部电平?

  • 规格书文档说明:

  • 原理分析

如果IO输出低电平的时候,红色圈起来的MOS导通,此时IO的电平恒定位0V(低电平),所以此时不管外部输入什么信号,数据输入端的电平都是低电平。

 

五、电平转换电路

如果两个通讯的芯片的高电平电压不一致,如何处理?

如下图,左边是STM32单片机芯片,右边是4G模块。   STM32单片机的高电平电压是3.3V,4G模块的高电平是1.8V,两个芯片通讯高电平不匹配,因此需要考虑电平转换电路。

关于以上电路在三极管课程中,给大家讲解过,这里直接跳过。

 

六、  上拉电阻&拉电流

1.上拉电阻的定义: 

电阻的一端连接VCC电源,一端连接IO口(或GPIO口),让IO口的电平保持在高电平,这个电阻称为上拉电阻。

 

2.上拉电阻的分类和区别:

在单片机电路中,上拉电阻可以分为:IO内部上拉电阻 和外部上拉电阻。

IO口内部上拉电阻:单片机内部集成,阻值不可更改

外部上拉电阻:由硬件工程师设计,阻值可以按照电路的需求来设计,阻值可以更改

大多数单片机的IO内部都会集成上拉电阻,在产品设计中,我们也会尽可能的选择单片机的内部上拉电阻,这样可以减少单片机外部元器件的数量,降低成本等。 如果内部上拉电阻不能满足需求的时候,我们就需要在IO的外部设计外部上拉电阻。

 

3.单片机IO内部配置了上拉电阻,外部硬件设计也加了上拉电阻,有什么影响?

如上图:内部上拉电阻是R1,外部R2是外部上拉电阻,对产品的功能,一般情况下,基本上没有影响。 影响的这个IO口的上拉电阻的阻值, 上图的上拉电阻的阻值,是R1 和R2并联之后的电阻值。

4.如何估算单片机内部上拉电阻的阻值?(了解)

如下图,在单片机的IO口串联一个电阻(阻值:1K)到GND,用万用表测量IO口的电流I;

假如电压VCC:3.3V    测的电流是:0.3mA;     R = R1+R2;   R1=1K  R2上拉电阻;

按照欧姆定律:  R =   U/I = 3.3V/0.0003A = 11000 Ω;  上拉电阻R2 = R – R1 =11K-1K = 10K;

所以这个单片机的上拉电阻的阻值是:10K;

 

5.IO的拉电流介绍

上拉电阻的阻值的大小,对IO口的功能有什么影响? 不同的阻值,对影响IO的拉电流大小。

  • 拉电流的概念:

高电平输出时,一般是输出端对负载提供电流,其提供电流的数值叫做拉电流。

如下图的电流I,称为单片机IO口的拉电流。( RL代表负载)

  • 拉电流的大小对电路的影响:

如下图,电流I越大,LED灯的亮度越高,越小,LED灯亮度越低;

 

6.上拉电阻的应用电路1:在低功耗产品中,上拉电阻的设计

在电池供电的产品中,为了降低产品的待机电流,我们需要考虑上拉电阻的取值,我们以下面的电路为例给大家讲解一下

网络标号GUAN 连接IO口P3.4,如果干簧管R7导通的时候,GUAN和GND连接导通,此时,P3.4的和GND连接;如果此时单片机配置成准双向IO口,则P3.4IO口的等效电路如下,R2是内部上拉电阻。

由于内部的上拉电阻的阻值是固定的,所以此时P3.4的拉电流是固定的。

如果我们需要把拉电流变得更小,如何处理?  我们可以把P3.4的IO口配置成开漏模式,外部设计一个阻值更大的上拉电阻R1/4.7M;   拉电流 = VCC/R1 = 3.3V / 4.7M = 0.7uA

总结:可以通过增加上拉电阻的阻值,降低IO的拉电流,从而降低产品的功耗。

注意:在产品设计中,上拉电阻要选择合适的取值,阻值太大,可能会导致功能异常。

7.上拉电阻的应用电路2: EEPROM电路

以下电路我们在电阻部分给大家讲解过,由于内部的上拉电阻的阻值比较大,拉电流比较小,可能会导致EEPROM工作不稳定,所以我们需要外部设计一个阻值比内部上拉电阻更小的上拉电阻,从而增加拉电流。

(以下电路更加详细的讲解,大家可以复习电阻课程应用电路5

     

总结:如果单片机内部的上拉电阻的拉电流比较小,不能满足产品需求的时候,我们需要在单片机的外部设计一个阻值更小的上拉电阻,增大拉电流,用来满足产品的需求。

上拉电阻应用总结:

  • 应用电路1,断开内部上拉电阻,设计阻值更大的外部上拉电阻,减小拉电流,降低功耗
  • 应用电路2,设计阻值更小的外部上拉电阻,增大拉电流,满足负载的需求。

因此在不同的应用电路中,我们要按照电路的需求,选择合适的上拉电阻,来满足产品的功能需求。

七、  下拉电阻&灌电流

1.下拉电阻的定义: 

电阻的一端连接GND,一端连接IO口,将IO口不确定的状态保持在低电平,这个电阻称为下拉电阻。

2.下拉电阻的分类和区别:

在单片机电路中,下拉电阻可以分为:IO内部下拉电阻 和外部下拉电阻。

IO口内部下拉电阻:单片机内部集成,阻值不可更改

外部下拉电阻:由硬件工程师设计,阻值可以按照电路的需求来设计,阻值可以更改

有些单片机的IO内部是没有集成下拉电阻(STM32内部有下拉电阻,STC15没有),所以在产品设计中,如果有下拉电阻的需求,我们需要在IO口外部设计外部下拉电阻。 

3.IO的灌电流的介绍

下拉电阻的阻值的大小,对IO口的功能有什么影响? 不同的阻值,会影响IO的灌电流

灌电流的概念:低电平输出时,一般是输出端要吸收负载的电流,其吸收电流的数值叫做灌电流

如下图的电流I,称为IO口的灌电流。( RL代表负载)

 

5.单片机电路中,IO口对灌电流的要求: 

单片机电路设计中,对IO口的灌电流是有要求的,以STC15单片机为例,如下图,每个IO口的灌电流最大不能超过20mA;  对单片机整体来说,灌电流+拉电流 不能超过90mA;

 

如下图:P3.0控制LED2灯亮灭,当P3.0输出低电平的时候,LED2亮; 

P3.0的灌电流  =( 3.3V – 2V(LED2消耗的电流))/1K = 1.3mA;  所以P3.0的灌电流是1.3mA;

 

6.下拉电阻应用电路:

下拉电阻在实际应用中,应用的比较少,这里举2个应用电路:

①应用电路1: 让IO保持在低电平

下拉电阻R40的作用是将GPIO15电平保持在低电平。

 

②应用电路2:(按键检测电路)

如下图,是一个按键检测的电路,单片机是STC15系列单片机。 P3.0检测按键的状态。

 电路工作状态分析: 

按键未按下:

SW3断开,R11接地,P3.0电压是 0V.   低电平;

按键按下:

SW3闭合,R11接地,R11上端接VCC,P3.0电压是 3.3V.   高电平;

总结:按键按下和松开,P3.0口的电平不一样,P3.0 可以检测按键的状态;

由于51单片机的内部,没有集成下拉电阻,所以必须要在外部加下拉电阻;如果不加R11这个下拉电阻,按键按下和松开,IO口检测的电平都是高电平,无法识别IO的状态。

R10的作用:降低P3.0 IO口的灌电流,保护IO口,防止IO被损坏。

 

重点回顾:

如何深入的分析单片机IO口的工作状态:

关于单片机IO口的使用,为了方便大家更好的理解单片机IO工作的原理,我们在深入的给大家讲解一下:

如下图:STM32单片机PB9 控制LED3的亮灭;

我们结合STM32单片机的内部结构,紫色线虚线框起来的部分,是一个内部结构的等效电路;

PB9数据寄存器输入0:Q16导通,Q17断开,LED2灭;

PB9数据寄存器输入1:Q17导通,Q16断开,LED2亮; 

以上就是IO口输出控制的原理。IO口其他模式的控制大家也可以通过同样的方式来分析

 

学习要求:

  • 施密特触发器   (要求:了解)
  • IO口的高低电平&高低电平的电压范围(要求:理解并掌握)
  • STM32单片机8种工作模式详解(要求:了解) 
  • STC15单片机4种工作模式详解(要求:了解)
  • 电平转化电路(要求:理解并掌握)
  • 上拉电阻&拉电流&上拉电阻的应用电路(要求:理解并掌握)
  • 下拉电阻&灌电流&下拉电阻的应用电路(要求:理解并掌握)

其次,对于课程中讲解的很多理论知识,大家可以通过实际的项目实战进一步去理解和掌握,不需要大家死记硬背。  

结束

给TA买糖
共{{data.count}}人
人已赞赏
单片机百科单片机自学指南

MOS管的工作原理、参数、选型、产品应用详解

2023-5-23 17:03:39

单片机百科单片机自学指南

继电器的工作原理、参数、规格书、应用电路详解

2023-5-23 19:08:01

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧