0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全面掌握stm32的GPIO知识

硬件攻城狮 来源:技术让梦想更伟大 作者:技术让梦想更伟大 2022-11-02 12:47 次阅读

1 初学者重要提示

本文主要是以stm32H7系列为主。

对于不使用的引脚,推荐设置为模拟模式,悬空即可。

GPIO的速度等级高的时候,最好使能IO补偿单元。

2 GPIO功能简介

STM32H7的GPIO特性如下:

输出状态:开漏/推挽 + 上拉/下拉电阻

通过输出数据寄存器(GPIOx_ODR)或者外设(GPIO设置为复用模式时)输出数据。

GPIO速度等级设置。

输入状态:浮空,上拉/下拉,模拟。

通过输入数据寄存器(GPIOx_IDR)或者外设(GPIO设置为复用模式)输入数据。

通过寄存器GPIOx_BSRR实现对寄存器GPIOx_ODR的位操作。

通过配置寄存器GPIOx_LCKR的锁机制,实现冻结IO口配置。

每两个时钟周期就可以翻转一次IO。

高度灵活的引脚复用功能,允许IO引脚既可以做GPIO也可以做功能复用。

3 GPIO功能模式分析(重要)

STM32H7的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 模拟模式

3.1 推挽输出

5617e5f0-5a68-11ed-a3b6-dac502259ad0.png

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

3.2 开漏输出

562669fe-5a68-11ed-a3b6-dac502259ad0.png

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

输出高电平时利用外部电路的驱动能力,减少 IC 内部的驱动。

开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平。如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越低,功耗越小。

开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。

可以将多个开漏输出连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系,即“线与”。可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑 0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为 0,只有都为高电平时,与的结果才为逻辑 1。

3.3 复用推挽和开漏

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

3.4 四种输入模式

5630a144-5a68-11ed-a3b6-dac502259ad0.png

通过上面的引脚结构图可以得到如下三种方式

浮空输入:CPU内部的上拉电阻、下拉电阻均断开的输入模式。

下拉输入:CPU内部的下拉电阻使能、上拉电阻断开的输入模式。

上拉输入:CPU内部的上拉电阻使能、下拉电阻断开的输入模式。

而模拟输入模式是GPIO引脚连接内部ADC

563ab300-5a68-11ed-a3b6-dac502259ad0.png

4 GPIO的拉电流负载和灌电流负载能力

这里先普及点小知识,什么是拉电流负载,什么是灌电流负载。

拉电流负载:一种负载电流从驱动门流向外电路,称为拉电流负载。比如使用STM32H7的GPIO直接驱动LED就是拉电流形式。

5642a376-5a68-11ed-a3b6-dac502259ad0.png

灌电流负载:负载电流从外电路流入驱动门,称为灌电流负载。比如下面这种形式的LED驱动电路

564de420-5a68-11ed-a3b6-dac502259ad0.png

有了上面这些知识后再来看STM32H7的IO驱动能力(截图来自STM32H7参考手册):

5658c142-5a68-11ed-a3b6-dac502259ad0.png

通过上面的截图可知:STM32H7总的拉电流和灌电流不可超过140mA,单个引脚最大不可超过20mA,这个知识点,大家要知道。

5 IO补偿单元,用于高速

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

566b3980-5a68-11ed-a3b6-dac502259ad0.jpg

/** @defgroup GPIO_speed_define  GPIO speed define
  * @brief GPIO Output Maximum frequency
  * @{
  */  
#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    */

566b3980-5a68-11ed-a3b6-dac502259ad0.jpg

使用后两种速度等级的话,最好使能IO补偿单元。

6 GPIO兼容CMOS和TTL电平

CMOS和TTL电平兼容问题也是一个比较重要的知识点

567dc8b6-5a68-11ed-a3b6-dac502259ad0.png

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

主要从功耗和防干扰考虑。

所有用作带上拉电阻输入的 I/O都会在引脚外部保持为低时产生电流消耗。此电流消耗的值可通过使用的静态特性中给出的上拉 / 下拉电阻值简单算出。

对于输出引脚,还必须考虑任何外部下拉电阻或外部负载以估计电流消耗。

若外部施加了中间电平,则额外的 I/O 电流消耗是因为配置为输入的 I/O。此电流消耗是由用于区分输入值的输入施密特触发器电路导致。除非应用需要此特定配置,否则可通过将这些I/O 配置为模拟模式以避免此供电电流消耗。ADC 输入引脚应配置为模拟输入就是这种情况。

任何浮空的输入引脚都可能由于外部电磁噪声,成为中间电平或意外切换。为防止浮空引脚相关的电流消耗,它们必须配置为模拟模式,或内部强制为确定的数字值。这可通过使用上拉 / 下拉电阻或将引脚配置为输出模式做到。

综上考虑,不使用的引脚设置为模拟模式,悬空即可。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5390

    浏览量

    121901
  • STM32
    +关注

    关注

    2276

    文章

    10947

    浏览量

    359160
  • GPIO
    +关注

    关注

    16

    文章

    1223

    浏览量

    52745

原文标题:全面掌握stm32的GPIO,看这篇就可以了!

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发GPIO基础知识

    【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发GPIO基础知识
    的头像 发表于 03-06 11:23 183次阅读
    【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发<b class='flag-5'>GPIO</b>基础<b class='flag-5'>知识</b>

    嵌入式教育科普|GPIO接口全面解析

    知识掌握直接影响着嵌入式项目实现功能的成效。本文将以GPIO接口为切入点,深入解析其工作原理与技术特性,希望能帮助屏幕前想要学习嵌入式开发的小伙伴建立嵌入式接口的
    的头像 发表于 03-05 11:11 611次阅读
    嵌入式教育科普|<b class='flag-5'>GPIO</b>接口<b class='flag-5'>全面</b>解析

    GPIO使用教程 GPIO接口应用

    GPIO(General-Purpose Input/Output,通用输入/输出)接口是电子设备中的一个重要组成部分,主要用于控制和读取设备的数字信号。它通过简单的高(1)或低(0)电平来与系统
    的头像 发表于 01-31 10:10 775次阅读

    GPIO错误排查与解决

    在嵌入式系统和微控制器编程中,通用输入输出(GPIO)是最常见的接口之一。然而,在使用GPIO时,我们可能会遇到各种错误。 1. 理解GPIO GPIO是微控制器上的一组引脚,可以被配
    的头像 发表于 01-09 09:46 900次阅读

    硬件工程师需要掌握的硬件基础知识

    作为一个资深硬件工程师,我们需要掌握一些硬件基础知识,今天总结一下哪些算是基础知识。给学电子方面想从事硬件工作的同学们一点提示。给未走出大学校园的电子方面的学生一些帮助。   工具/原料 万用表
    的头像 发表于 12-02 09:22 800次阅读
    硬件工程师需要<b class='flag-5'>掌握</b>的硬件基础<b class='flag-5'>知识</b>

    GPIO内部电路的原理

    前言 笔者近日在B站刷到了一个视频,使我对GPIO的I/O口内部基本结构以及工作原理有了恍然大明白的理解,现在对此做一个总结,并为大家推荐该视频Keysking 【STM32GPIO内部电路
    的头像 发表于 11-20 09:24 572次阅读
    <b class='flag-5'>GPIO</b>内部电路的原理

    stm32 GPIO中断配置教程

    在嵌入式开发中,STM32微控制器因其高性能和丰富的外设而广受欢迎。GPIO(通用输入/输出)中断是STM32微控制器中常用的功能之一,它允许开发者在特定引脚上检测到外部信号变化时快速响应。 1.
    的头像 发表于 11-19 15:53 1789次阅读

    STM32 GPIO的八种工作模式

    GPIO (general purpose input output)是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
    的头像 发表于 11-06 09:40 1120次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的八种工作模式

    硬件设计技巧:三类GPIO接口的实用指南

    今天教大家一些关于硬件设计的的技巧,只要掌握好三类GPIO,轻松玩好硬件设计。
    的头像 发表于 11-05 12:22 495次阅读
    硬件设计技巧:三类<b class='flag-5'>GPIO</b>接口的实用指南

    SOC GPIO操作

    sapphire Soc提供了两个GPIO组每组有4个GPIO,定义为GPIO[3:0],其中只有GPIO[1:0]可以支持中断。中断在程序中打开了
    的头像 发表于 11-01 11:06 260次阅读

    STM32 GPIO八种模式及工作原理详解

    一. 前言   GPIO全称General Purpose Input Output,是微控制数字输入/输出的基本模块,可以实现微控制器与外部环境的数字进行交换。借助GPIO微控制器可以实现对外
    的头像 发表于 07-22 09:32 7207次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>八种模式及工作原理详解

    快速搞懂GPIO控制器的六种模式

    在嵌入式系统和单片机开发中,GPIO(通用输入输出)控制器是一个非常重要的组件。GPIO引脚的灵活性使它们能够执行多种功能,从简单的输入输出到复杂的通信任务。为了帮助大家快速了解和掌握GPIO
    的头像 发表于 05-18 08:04 1739次阅读
    快速搞懂<b class='flag-5'>GPIO</b>控制器的六种模式

    什么是GPIOGPIO组成原理

    GPIO全拼叫General Purpose Input Output(通用输入输出)简称IO口也叫总线扩展器,GPIO口是由引脚,功能寄存器组成,不同的架构中的GPIO封装不同,所使用的引脚数与寄存器数不同,具体可以参考芯片手
    发表于 04-28 12:30 8010次阅读
    什么是<b class='flag-5'>GPIO</b>?<b class='flag-5'>GPIO</b>组成原理

    请问如何提高STM32 GPIO输出速度?

    由于应用需要,用GPIO输出高低电平产生脉冲,通过软件控制GPIO输出翻转。用的是STM32F412, APB2最高达到100M,可实际GPIO输出最多只能达到10M 频率。 请问能继
    发表于 04-12 06:05

    STM32GPIO口如果既要输入又要输出怎么办?STM32 GPIO口8种模式如何准确的分析?

    STM32GPIO口如果既要输入又要输出怎么办?STM32 GPIO口8种模式如何准 确的分析?
    发表于 04-08 08:27