GPIO的基础知识


首先对于GPIO我们需要注意以下几点

  1. 对于不使用的引脚,推荐设置为模拟模式,悬空即可。
  2. GPIO的速度等级高的时候,最好使能IO补偿单元
  3. GPIO还涉及到了注入电流的最大值问题。
  4. GPIO8种模式要弄清楚。
  5. GPIO的拉电流负载和灌电流负载能力要了解
  6. GPIO兼容CMOS和TTL电平

STM32H7 的GPIO基本配置

◆ 输出状态:开漏/推挽 + 上拉/下拉电阻。
◆ 通过输出数据寄存器**(GPIOx_ODR)或者外设(GPIO 设置为复用模式时)输出数据。
◆ GPIO 速度等级设置。
◆ 输入状态:浮空,上拉/下拉,模拟。
◆ 通过输入数据寄存器
(GPIOx_IDR)或者外设(GPIO 设置为复用模式)**输入数据。
◆ 通过寄存器 GPIOx_BSRR 实现对寄存器 GPIOx_ODR 的位操作。
◆ 通过配置寄存器 GPIOx_LCKR 的锁机制,实现冻结 IO 口配置。
◆ 每两个时钟周期就可以翻转一次 IO。
◆ 高度灵活的引脚复用功能,允许 IO 引脚既可以做 GPIO也可以做功能复用。

不使用的引脚设置为模拟模式

主要从功耗和防干扰考虑。
◆ 所有用作带上拉电阻输入的 I/O 都会在引脚外部保持为低时产生电流消耗。此电流消耗的值可通过使
用的静态特性中给出的上拉 / 下拉电阻值简单算出。
◆ 对于输出引脚,还必须考虑任何外部下拉电阻或外部负载以估计电流消耗。
◆ 若外部施加了中间电平,则额外的 I/O 电流消耗是因为配置为输入的 I/O。此电流消耗是由用于区
分输入值的输入施密特触发器电路导致。除非应用需要此特定配置,否则可通过将这些 I/O 配置为模
拟模式以避免此供电电流消耗。 ADC 输入引脚应配置为模拟输入就是这种情况。
◆ 任何浮空的输入引脚都可能由于外部电磁噪声,成为中间电平或意外切换。为防止浮空引脚相关的电
流消耗,它们必须配置为模拟模式,或内部强制为确定的数字值。这可通过使用上拉 / 下拉电阻或
将引脚配置为输出模式做到。
这里也有一个低功耗的例子必须把所有IO设置成模拟模式才能够达到官方文档里面给出的功耗:
低功耗项目链接

IO补偿单元

IO 补偿单元用于控制 I/O 通信压摆率(tfall / trise)以此来降低 I/O 噪声。当前 STM32H7 的速度等
级可以配置为以下四种:

#define GPIO_SPEED_FREQ_LOW ((uint32_t)0x00000000U) /*!< Low speed */
#define GPIO_SPEED_FREQ_MEDIUM ((uint32_t)0x00000001U) /*!< Medium speed */
#define GPIO_SPEED_FREQ_HIGH ((uint32_t)0x00000002U) /*!< Fast speed */
#define GPIO_SPEED_FREQ_VERY_HIGH ((uint32_t)0x00000003U) /*!< High speed */

关闭补偿单元

在这里插入图片描述

开启补偿单元

在这里插入图片描述

注入电流大小和特性

在这里插入图片描述

GPIO 的8种模式

◆ 输入浮空
◆ 输入上拉
◆ 输入下拉
◆ 模拟功能
◆ 具有上拉或下拉功能的开漏输出
◆ 具有上拉或下拉功能的推挽输出
◆ 具有上拉或下拉功能的复用功能推挽
◆ 具有上拉或下拉功能的复用功能开漏
由于上拉和下拉是可选配置,对应的 HAL 库配置使用下面 6 种就可以表示:
◆ GPIO_MODE_INPUT 输入模式
◆ GPIO_MODE_OUTPUT_PP 推挽输出
◆ GPIO_MODE_OUTPUT_OD 开漏输出
◆ GPIO_MODE_AF_PP 复用推挽
◆ GPIO_MODE_AF_OD 复用开漏
◆ GPIO_MODE_ANALOG 模拟模式

四种输入模式

在这里插入图片描述
通过上面的引脚结构图可以得到如下三种方式
◆ 浮空输入:CPU 内部的上拉电阻、下拉电阻均断开的输入模式。
◆ 下拉输入:CPU 内部的下拉电阻使能、上拉电阻断开的输入模式。
◆ 上拉输入:CPU 内部的上拉电阻使能、下拉电阻断开的输入模式。
而模拟输入模式是 GPIO 引脚连接内部 ADC。
在这里插入图片描述

两种输出模式

推挽输出

推挽电路是两个参数相同的三极管或 MOSFET,以推挽方式存在于电路中。 电路工作时,两只对称
的开关管每次只有一个导通,导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。
推拉式输出级提高电路的负载能力。 相对于开漏输出模式,推挽输出最大优势是输出高电平时,上升时
间快,电压驱动能力强。
在这里插入图片描述

开漏输出

在这里插入图片描述开漏端相当于 MOS 管的漏极(三极管的集电极),要得到高电平状态必须外接上拉电阻才行,因此
输出高电平的驱动能力完全由外接上拉电阻决定,但是其输出低电平的驱动能力很强。开漏形式的电路有
以下几个特点:

  1. 输出高电平时利用外部电路的驱动能力,减少 IC 内部的驱动。
  2. 开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出
    低电平。如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉
    电源的电压,便可以改变传输电平。上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越
    低,功耗越小。
  3. 开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接
    上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果
    对延时有要求,则建议用下降沿输出。
  4. 可以将多个开漏输出连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻
    辑”关系,即“线与”。可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个
    引脚输出为逻辑 0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平
    便为 0,只有都为高电平时,与的结果才为逻辑 1。

复用推挽和开漏

复用指的是 GPIO 切换到 CPU 内部设备(比如 SPI,I2C,UART 等电路),也就是 GPIO 不是作为普通
IO 使用,是由内部设备直接驱动。推挽和开漏的特征同上。

GPIO拉灌电流负载能力

在这里插入图片描述

GPIO兼容CMOS和TTL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:本片文章大多参考武汉安富莱电子有限公司STM32_V7开发板文档和https://www.armbbs.cn/硬汉嵌入式论坛,个人只是做了整合和部分修改,作为个人学习分享。

  • 22
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及GPIO基础知识时,以下是从这几个方面展开的解释: 1. GPIO的概念、原理和工作方式: - 概念:GPIO是通用输入输出的缩写,它是一种可编程的数字引脚,可以用于连接和控制外部设备。每个GPIO引脚可以被配置为输入或输出模式。 - 原理:GPIO引脚通过读取或写入电平来实现与外部设备的通信。输入模式下,GPIO引脚可以读取外部设备的状态;输出模式下,GPIO引脚可以控制外部设备的状态。 - 工作方式:GPIO引脚可以通过设置为高电平(通常为3.3V或5V)或低电平(通常为0V)来表示不同的状态。这些电平可以用来传输数字信息、触发中断或控制外部设备的开关等。 2. GPIO的输入和输出模式、引脚配置、电平控制等基本概念: - 输入模式:GPIO引脚配置为输入模式时,它可以读取外部设备的状态。输入模式下,GPIO引脚通常连接到传感器、按钮或其他外部设备的输出引脚。 - 输出模式:GPIO引脚配置为输出模式时,它可以控制外部设备的状态。输出模式下,GPIO引脚通常连接到执行器、LED灯或其他需要控制的设备。 - 引脚配置:GPIO引脚的配置包括确定引脚的工作模式(输入或输出)、引脚编号和其他相关参数。引脚配置通常通过软件编程来实现。 - 电平控制:GPIO引脚可以通过设置高电平或低电平来控制外部设备。高电平表示逻辑1,低电平表示逻辑0。电平控制可以通过软件编程来实现。 请注意,具体的GPIO实现可能因硬件平台、操作系统和编程语言而有所不同。因此,建议在具体的开发环境中查阅相关文档和资料,以了解更多详细信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值