STM32控制系统外设简介(一)GPIO

一、GPIO定义及其特征

GPIO(General purpose input/output,通用输入输出),它表示一个通用的输入输出口,它是一个在集成电路中没有特殊功能的引脚。大多数引脚都是要完成特定功能的,GPIO可以通过适当的配置完成你所需要的功能。下面介绍一下GPIO的几个常见术语:

1.1 引脚模式(PIN MODE)

所有的GPIO都可以被设置为一下三种模式:

  • 输入输出(Input or output)
  • 模拟量(Analog)
  • 复用功能(Alternate function,AF)

1.2 引脚特征(PIN characteristics)

  • 输入:上拉(Pull-up),下拉(Pull-down)和浮空(Floating)
  • 输出:推挽(Push-pull),开漏(open-drain)和上拉、下拉
  • 复用功能:推挽(Push-pull),开漏(open-drain)和上拉、下拉

img

1.3 GPIO输出速率(GPIO Output-speed)

简单来说就是引脚电平变化速度,这个速度指的是从上升沿(下降沿)速度,高速可能会导致EMI噪声并消耗STM32资源,最好是匹配外设的速度。比如说低速比较适合1HZ的点平变化,当然如果我们使用作为SPI通信使用时,速度可能达到45MHz,这时候就应该用非常高的速度。
img

二、GPIO八大工作模式

在介绍八大工作模式之前,我们先来看看STM32关于GPIO的设计图:
img

  • 保护二级管(Protection diode):这种结构能够防止电压过高、或者过低对电路造成的损坏。当外部电压大于VDD时上边的二极管将会导通,当外部电压小于VSS时,下边的二极管将会导通。这种电路也叫做钳位电路,在交汇处的电压始终保持在VDDVSS之间;
  • P-MOS和N-MOS管,是的GPIO具备“推挽输出”和“开漏输出”两种模式;
  • 肖特基触发器,将相对缓慢变化的模拟信号变成矩形信号(外部的电压变成数字的0 1),当然当用作模拟输入时就不会进行转换;

2.1 浮空输入模式

img

浮空输入模式下,内部的上下拉电阻均不起作用,直接与输入数据寄存器相连,尝试读取此时的电平是未定义的,对外是高阻抗,这个具体数值取决于所处电路的泄露情况,对于逻辑电路设计来说,这是一种非常糟糕的做法[2]。“浮”指的是及不接受上拉电阻的拉高,也不接受下拉电阻的拉低,处于一种随机状态。

2.2 上拉输入模式

img
上拉输入模式内部上拉电阻起作用,引脚对外表现是高电平,输入之前默认值为低电平。

2.3 下拉输入模式

img
下拉输入模式内部上拉电阻起作用,引脚对外表现是低电平,输入之前默认值为高电平。

2.4 模拟输入模式

img
该模式下,端口的电平信号直接模拟输入到片上外设,一般时ADC模块(模拟转数字)。

2.5 开漏输出模式(Open Drain Output)

借助三极管理解这个输出的特点,它相当于将集电极直接作为对外引脚。假如不额外增加外部电源,将无法产生基极电流,此时发射极和集电极相当于短路,没有电流通过负载也就无法驱动使其工作,那么利用上拉电阻将电平拉高(如上图),当基极有控制电流时,三极管导通,电流流向发射极,负载没有电流,LED灭;当基极没有电流时,三极管相当于断路,电流全部流向负载,LED亮。实际单片机上,将三极管换成场效应管即可,场效应管漏极直接开路,当栅极存在电压时,电路导通。说了这么多,开漏输出有什么优点?

  • 负载可以自行选择电压大小,而不一定要用内部上下拉确定的电压;
  • 因为场效应管阻抗很大,所以电流压根不会流入或者流出栅极,对内部电路具有保护作用;
  • 多个开漏输出接在一起,必须同时满足输出高电平才能对外供电,一个不满足,所有的都不工作;[4]

2.6 开漏复用输出

img
这种情况下,输出有外部决定,而不是由内部的CPU输出决定。

2.7 推挽输出(内部具备)

img

img

推挽输出左侧由单片机内部向外推出电流到负载,右侧单片机内部挽电流到内部。推挽输出的缺点是:

  • 当两个推挽输出连接到一起,一个向外推(VCC),一个向内挽(GND),因为中间没有电阻,很有可能出现短路

优点就是,对外部负载具备驱动能力,而开漏输出就无法提供。

2.8 推挽复用输出

img
简单来说GPIO的复用就是将决定权由CPU转移到其他外设信号。


[1] https://blog.csdn.net/qq_38410730/article/details/79858906
[2] https://www.quora.com/What-does-a-floating-pin-mean-Does-that-mean-unconnected?top_ans=342251185
[3] https://www.zhihu.com/question/28512432/answer/41129662
[4] https://zhuanlan.zhihu.com/p/41942876

posted @   吖屋  阅读(751)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示