一文看懂GPIO!

面包板社区 2022-09-10 20:00

一、前言

GPIO全称General Purpose Input Output 即通用输入/输出,其实GPIO的本质就是芯片的一个引脚,通常在ARM中所有的I/O都是通用的。不过由于每个开发板上都会设计不同的外围电路,这就造成GPIO的功能可能有所不同,大部分GPIO都是有复用功能的,比如有些GPIO可能是串口的TXRX,也可能是I2CSCLSDA线。

所以我们不仅要知道GPIO能够输出高低电平,还要理解为什么有些GPIO可以复用某些功能,而其他的不可以。

二、GPIO内部结构

我们在使用GPIO的时候可能不会去想为什么我们通过写代码或者操作寄存器就可以控制一个引脚的高低电平。

今天就让我们一起来看看为什么我们通过操作寄存器(其实写代码的过程就是在操作寄存器)就能控制引脚输入或者输出。

我们想要想控制一个GPIO口的需要操作7个寄存器,分别是CRL,CRH,IDR,ODR,BRR,BSRR,LCKR 我们对GPIO的操作本质上就是在对这些寄存器进行读写操作,以下是这些寄存器的名称:

GPIOx_CRL(x = A..E)端口配置低寄存器 32位寄存器
GPIOx_CRH(x = A..E)端口配置高寄存器 32位寄存器
GPIOx_IDR(x = A..E)端口输入数据寄存器 32位寄存器但仅用低16
GPIOx_ODR(x = A..E)端口输出数据寄存器 32位寄存器但仅用低16
GPIOx_BRR(x = A..E)端口位清除寄存器 16位寄存器
GPIOx_BSRR(x = A..E)端口位设置/清除寄存器 16位寄存器
GPIOx_LCKR(x = A..E)端口配置锁定寄存器 32位寄存器

我们首先分析上面的结构电路:

1、保护二极管: 保护二极管从它的名字就不难想到他是用来对系统进行保护的,通过两个二极管的导通可以防止引脚外部输入电压过低或过高。当电压过高时,上方的保护二极管导通。当电压过低时,下方的二极管导通,防止不正常电压导入到芯片内部造成芯片烧毁。

2、P·MOS管和N·MOS管: GPIO经过两个二极管的保护后向上流入输入模式,向下流入输出模式,而输出模式的控制是由一个由P·MOS管和N·MOS管组成的单元电路,该电路主要是控制输出的模式,由该结构狗策划给你的单元电路具有推挽输出开漏输出两种模式。

当系统配置为推挽输出模式时:

  • 若向该结构中输入高电平,经过反向后,上方的P-MOS导通,下方的N-MOS关闭,对外输出高电平;

  • 若向该结构中输入低电平时,经过反向后,下方的N-MOS管导通,上方的P-MOS关闭,对外输出低电平。

  • 当引脚高低电平切换时,两个MOS管轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。**推挽输出的低电平为0V,高电平为3.3V**。

当系统配置为开漏输出模式时:

  • 上方的P-MOS管完全不工作;

  • 如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出接地;

  • 若控制输出为1(它无法直接输出高电平)时,则P-MOS管和N-MOS管都关闭,所以开漏输出模式下引脚既不输出高电平,也不输出低电平,为高阻态

推挽输出模式一般应用在输出电平为0和3.3V而且需要高速切换开关状态的场合开漏输出模式一般应用在I2C、SMBUS通信等需要 线与功能的总线电路中

在单片机中除了必须用开漏模式的场合,一般习惯使用推挽输出模式

3、输出数据寄存器:前面我们知道双了MOS管结构电路的输入信号,是由GPIO输出数据寄存器GPIOx_ODR提供的,因此我们可以通过修改输出数据寄存器的值,就可以修改GPIO引脚的输出电平。而置位/复位寄存器GPIOx_BSRR可以通过修改输出数据寄存器的值,从而影响电路的输出。

4、复用功能输出:复用功能输出中的复用是指STM32的其他片上外设对GPIO引脚进行控制,此时GPIO引脚用作该外设功能的一部分,算是第二用途。从其他外设引出来的复用功能输出信号与GPIO本身的数据寄存器都连接到双MOS管结构的输入中。

三、输入输出模式

GPIO共有8中输入输出模式,分别是:上拉输入、下拉输入、浮空输入、模拟输入、开漏输出、推挽输出、开漏复用输出、推挽复用输出 ,下面我们详细介绍以下上面的八种输入输出模式。

  • 上拉输入: GPIO_Mode_IPU
  • 下拉输入: GPIO_Mode_IPD
  • 浮空输入: GPIO_Mode_IN_FLOATING
  • 模拟输入: GPIO_Mode_AIN
  • 开漏输出: GPIO_Mode_Out_OD
  • 推挽输出: GPIO_Mode_Out_PP
  • 开漏复用: GPIO_Mode_AF_OD
  • 推完复用: GPIO_Mode_AF_PP

这里详细讲一下几个常用的模式:

3.1 浮空输入

浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的,通常用于IICUSART等总线设备上。

3.2 上拉输入模式

上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在高电平(并且在I/O端口输入为低电平的时候,输入端的电平也是低电平)

3.3 下拉输入模式

下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在低电平;并且在I/O端口输入为高电平的时候,输入端的电平也是高电平。

3.4 模拟输入模式

模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等。

3.5 开漏输出模式

见上面二中的详细介绍;

3.6 开漏复用输出模式

开漏复用输出模式,与开漏输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的,一般用于片内外设功能:TX1,MOSI,MISO,SCK,SS

3.7 推挽输出模式

见上面二中的详细介绍;

3.8 推挽复用输出模式

推挽复用输出模式,与推挽输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,而是利用片上外设模块的复用功能输出来决定的,常见采用推挽输出模式的一般为片内外设功能IICSCLSDL

四、开漏输出和推挽输出的区别

开漏输出和推挽输出模式的区别主要是开漏输出只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内);推挽输出可以输出强高、低电平,连接数字器件。

五、STM32中GPIO的配置

在固件库开发中,操作寄存器 CRHCRL 来配置 IO 口的模式和速度是通过 GPIO 初始化函数完成:

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
/*第一个参数是用来指定 GPIO,取值范围为 GPIOA~GPIOG。
 *第二个参数为初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef
 */

初始化 GPIO 的常用格式是:

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-- PB.5 端口配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 50MHz

GPIO_Init(GPIOB, GPIO_InitStructure);//根据设定参数配置 GPIO

IO 口速度设置有三个可选值:

typedef enum

{

GPIO_Speed_10MHz,

GPIO_Speed_2MHz,

GPIO_Speed_50MHz

}GPIOSpeed_TypeDef;

模式则有8个可选定义如下:

typedef enum

{ GPIO_Mode_AIN = 0x0//模拟输入

GPIO_Mode_IN_FLOATING = 0x04//浮空输入

GPIO_Mode_IPD = 0x28//下拉输入

GPIO_Mode_IPU = 0x48//上拉输入

GPIO_Mode_Out_OD = 0x14//开漏输出

GPIO_Mode_Out_PP = 0x10//通用推挽输出

GPIO_Mode_AF_OD = 0x1C//复用开漏输出

GPIO_Mode_AF_PP = 0x18 //复用推挽

}GPIOMode_TypeDef;

六、总结

本文主要介绍了GPIO的定义和GPIO不同模式间的区别与实现方式,观看完本文相信你对于GPIO会有一个更深的理解,我们如果是做软件的可以不用太关注于GPIO是如何实现的,但是我们需要知道每个模式下GPIO的特点和应用场合,只有这样我们在实际应用中才能更好的配置出最合适的那个。

声明:本文经公众号“嵌入式悦翔园”授权转载,版权归原作者所有。转载仅为学习参考,不代表本号认同其观点,本号亦不对其内容、文字、图片承担任何侵权责任。


 研讨会推荐,扫码报名 

「“自动驾驶车辆导航中的MEMS IMU”

面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论 (0)
  • 在PCB制造过程中,表面处理工艺的选择直接影响到电路板的性能、可靠性和成本。捷多邦作为行业领先的PCB制造商,致力于为客户提供高质量、高可靠性的PCB产品。本文将深入探讨沉金、镀金和HASL(热风整平)三种常见表面处理工艺的特点及其对PCB质量的影响,帮助您做出最佳选择。 1. 沉金(ENIG)沉金工艺通过化学沉积在PCB表面形成一层镍金合金,具有以下优势: ​平整度高:适合高密度、细间距的PCB设计,尤其适用于BGA和QFN封装。​抗氧化性强:金层能有效防止铜氧化,延长PC
    捷多邦 2025-03-19 10:11 88浏览
  • 在PCB(印刷电路板)的制造过程中,材料选择对最终产品的性能、稳定性和可靠性有着直接的影响。作为行业领先的PCB制造商,捷多邦始终坚持在材料选择上精益求精,确保每一款PCB产品都能够满足客户对高质量的需求。今天,我们将重点分析FR4、Rogers和铝基板三种常见材料,它们如何影响PCB的质量与性能,以及捷多邦如何通过优化材料选择为客户提供更具竞争力的产品。1. FR4:高性价比的通用材料FR4是最常见的PCB基材,广泛应用于消费电子、通信、计算机等领域。它由玻璃纤维和环氧树脂复合而成,具有良好的
    捷多邦 2025-03-19 10:09 66浏览
  • 在电子制造业中,PCB(印制电路板)作为电子设备的核心组件,其质量直接决定了产品的性能和可靠性。尤其是高端PCB,广泛应用于航空航天、医疗设备、通信设备等领域,对质量的要求近乎苛刻。捷多邦作为PCB行业的领先品牌,深知严格的质量管理体系是确保高端PCB制造成功的关键。1. ​原材料质量控制高端PCB的制造始于原材料的严格筛选。捷多邦采用符合IPC标准的基材,如FR-4、PTFE等,确保材料的电气性能、机械性能和耐热性满足高端应用需求。通过严格的入库检验,包括铜箔附着力、表面平整度等测试。2. ​
    捷多邦 2025-03-19 10:13 77浏览
  • ​ 在智能设备普及的今天,语音识别已成为人机交互的核心入口。然而,环境噪声、口音差异、硬件设计限制等因素常导致识别率下降,影响用户体验。广州唯创电子凭借25年技术积累,推出 WTK6900系列语音识别芯片,通过“芯片性能+算法优化+场景适配”三位一体的解决方案,将标准方案识别率提升至 97%,为行业树立技术标杆。一、WTK6900系列:破解语音识别难题的核心利器1. 高性能芯片架构,奠定识别基础WTK6900系列采用 32位高性能处理器 与 深度神经网络(DNN)算法,支持实时语音信号
    广州唯创电子 2025-03-19 09:11 30浏览
  • 全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,推出两款全新传感器模块,再次彰显其在计算机断层扫描(CT)技术领域的深耕发展。这两款模块作为先进诊断成像技术的核心组件,将为肿瘤学、心血管疾病治疗等多种临床应用提供更精准的诊疗支持,助力实现疾病的早期诊断。新产品将助力CT市场各细分领域医学影像技术升级。针对高端CT市场,艾迈斯欧司朗特别推出专为光子计数探测器设计的新型系统级封装传感器模块,该模块可显著降低辐射剂量,同时提升诊断价值。艾迈斯欧司朗还推出面向价格敏感型CT市场的新型
    艾迈斯欧司朗 2025-03-18 23:20 45浏览
  • 这是一个很有意思的话题,在职场人士之间争论不休。证书到底有没有用?有人支持,也有人反对。不过,在正式聊这个话题之前,我想先分享一个我亲身经历的真实故事。那时,我和同学们正在读管理学的研究生课程。有一次,我们的教授要求大家穿正装上课。这时,有个同学问了个很有趣的问题:“教授,某某的董事长可以穿得五颜六色,我们这些职场新人为什么非得穿正装?”教授听后,停顿了一下,然后淡定地回了句:“你当然也可以穿得五颜六色,但前提是——先成为某某的董事长那样的人。”这句话点出了一个事实:同一套规则,并不适用于所有人
    优思学院 2025-03-19 12:02 73浏览
  • 在电子领域,高品质线路板是众多电子产品稳定运行的基石。那么,究竟达到怎样的标准,才能被称为高品质线路板呢?​捷多邦小编整理了关于高品质线路板的标准解析​,一起看看吧。 从电气性能角度出发,高品质线路板首当其冲要确保线路导通性良好。这意味着电流能顺畅地在铜箔线路中流动,电阻、电容等关键参数必须严格符合设计要求。无论是在初始运行,还是经过长时间的使​用后,都能维持稳定的电气性能,不出现参数漂移等问题。同时,面对复杂的电磁环境,它要有极强的抗干扰能力,有效减少信号传输时的失真与干扰,保证信号
    捷多邦 2025-03-19 09:33 79浏览
  • 在现代电子行业,PCB(印刷电路板)的质量直接影响到产品的稳定性与性能。作为全球领先的PCB制造商,捷多邦始终将质量放在第一位,致力于为客户提供高可靠性、高精度的PCB产品。为了确保每一块成品PCB都符合最高的质量标准,捷多邦在从设计到生产的每个环节都严格把控,确保质量无可挑剔。1. 精准设计:从需求到规格PCB的质量首先体现在设计阶段。捷多邦的设计团队根据客户需求,使用最新的EDA软件进行电路板布局设计。通过设计规则检查(DRC),确保电路板设计满足行业标准和客户的特殊需求。无论是单面板、双面
    捷多邦 2025-03-19 10:09 63浏览
  • 在电子产品制造中,选择合适的PCB至关重要。虽然廉价PCB节省成本,但长期使用下来,它们可能会带来更多的风险和隐患。作为工程师,我们需要权衡PCB的质量与成本,尤其是在高要求的应用中。论文将以捷多邦为例,分析廉价PCB与高质量PCB的差异。 1.材料与性能廉价PCB通常采用低质量材料,这可能会影响其电气和机械性能。相比之下,捷多邦的高质量PCB采用符合行业标准的优质材料(如FR4、PTFE等),确保更高的热稳定性和抗湿性,提升产品的可靠性。 2.准确性与可靠性廉价的PCB工艺
    捷多邦 2025-03-19 09:36 80浏览
  • 贞光科技作为三星电机MLCC的授权代理商,专注于电子元器件领域,代理产品包括车规电容MLCC和电感等。 现代汽车音视频导航(AVN)系统正迅速发展,集成了导航、多媒体和通信等功能。显示技术的进步和连接性的增强,提升了驾驶体验。在这些系统中,MLCC作为关键元件,确保了高性能IC的稳定供电,发挥着电源稳定、噪声抑制和小型化等重要作用。三星电机提供高可靠性、小型化、高容量的MLCC产品,专为汽车AVN应用设计,满足行业严苛要求。现代驾驶体验正在迅速转型,它不再仅仅是交通工具,而是变成了一个互联、沉浸
    贞光科技 2025-03-18 16:54 32浏览
  • 概念在GNSS测量和地理信息系统(GIS)中,基线(Baseline)是指两个或多个接收机之间的直线距离,通常用于描述RTK(实时动态定位)或其他差分GPS技术中的相对位置关系。基线通常由三个分量表示:东向(East)、北向(North)和垂直向(Up),分别表示两个测点之间的东西方向、南北方向和垂直方向的距离差。RTK(Real-Time Kinematic,实时动态)基线是指在RTK GPS测量技术中,两个测站(通常是一个固定的基准站和一个移动的接收站)之间的向量差。这个向量差包括了两个测站
    德思特测试测量 2025-03-19 11:23 86浏览
  • PCB层数越多质量就越好吗?多层板制造中的质量控制要点随着电子产品对性能和功能要求的不断提高,多层PCB(多层印刷电路板)已经成为众多高端应用领域的标准配置。很多人存在一个误区:层数越多的PCB质量就一定越好。实际上,层数与质量并不是直接的正比关系,正确的设计和精确的质量控制才是决定PCB质量的关键。1. 层数并非质量的唯一标准多层PCB的质量并不仅仅取决于层数的多少,而是与其设计、制造精度和材料的选择密切相关。增加层数的目的通常是为了提高电路密度和实现复杂的布线结构。如果设计不合理或制造不精确
    捷多邦 2025-03-19 10:14 117浏览
  • ​ 一、公司及产品概述作为国内领先的语音芯片研发企业,深耕语音技术领域25年,其产品以高稳定性、低功耗和多场景适应性著称。公司推出的语音识别芯片系列(如WTK6900系列)融合了语音识别、自然语言处理、音频编解码等核心技术,广泛应用于智能家居、工业设备、医疗电子及消费类产品中。二、核心技术特点语音识别与处理技术 厂家语音识别芯片采用先进的信号处理算法(如MFCC特征提取)和机器学习模型(如DNN、HMM),支持多语言、方言及复杂环境下的高精度识别。芯片内置噪声抑制和回声消除功能,即使在
    广州唯创电子 2025-03-19 08:48 42浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦