STM32F429入门(五):了解GPIO

STM32的GPIO是通用输入输出端口,可实现与外部设备通讯和控制。GPIO包括GPIOA至GPIOI共9组,176个引脚中有大量GPIO。保护二极管和上、下拉电阻用于防止电压异常和设定引脚默认状态。推挽输出可提供高低电平,适合数字器件;开漏输出需外接上拉电阻,常用于I2C等总线。初始化GPIO涉及模式、类型、速度、上下拉及输出内容的配置。
摘要由CSDN通过智能技术生成

(一)GPIO--general purpose input output

是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。型号为 STM32F4IGT6 型号的芯 片有 GPIOA、GPIOB、GPIOC 至 GPIOI 共 9 组 GPIO,芯片一共 176 个引脚,其中 GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。

问题一:GPIO与引脚有什么区别?

  • 引脚可以分为以下的几类:电源、晶振IO、下载IO、BOOT IO、复位IO;这五部分IO组成的系统我们也叫做最小系统。

  • 以下的为GPIO

  • 专用器件接到专用的总线,比如I2C,SPI,SDIO,FSMC,DCMI这些总线的器件需要接到专用的IO

  • 普通的元器件接到GPIO,比如蜂鸣器,LED,按键等元器件用普通的GPIO

  • 如果还有剩下的IO,可根据项目需要引出或者不引出

(二)GPIO功能详解

保护二极管及上、下拉电阻的作用如下:

引脚的两保护个二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于 VDD_FT时,上方的二极管导通,当引脚电压低于 VSS时,下方的二极管导通,防止不正常 电压引入芯片导致芯片烧毁。尽管有这样的保护,并不意味着 STM32 的引脚能直接外接大 功率驱动器件,如直接驱动电机,强制驱动要么电机不转,要么导致芯片烧坏,必须要加 大功率及隔离电路驱动。

上拉、下拉电阻,从它的结构我们可以看出,通过上、下拉对应的开关配置,我们可 以控制引脚默认状态的电压,开启上拉的时候引脚电压为高电平,开启下拉的时候引脚电 压为低电平,这样可以消除引脚不定状态的影响。如引脚外部没有外接器件,或者外部的 器件不干扰该引脚电压时,STM32 的引脚都会有这个默认状态。

也可以设置“既不上拉也不下拉模式”,我们也把这种状态称为浮空模式,配置成这 个模式时,直接用电压表测量其引脚电压为 1 点几伏,这是个不确定值。所以一般来说我 们都会选择给引脚设置“上拉模式”或“下拉模式”使它有默认状态。

STM32 的内部上拉是“弱上拉”,即通过此上拉输出的电流是很弱的,如要求大电流 还是需要外部上拉。 通过“上拉/下拉寄存器 GPIOx_PUPDR 控制引脚的上、下拉以及浮空模式

其中:

00:无上拉或下拉

01:上拉

10:下拉

11:保留

 

 推挽输出:输入是0输出也是0,输入1输出也是1,两个MOS管轮流工作。在该结构中输入 高电平时,上方的 P-MOS 导通,下方的 N-MOS 关闭,对外输出高电平;而在该结构中输 入低电平时,N-MOS 管导通,P-MOS 关闭,对外输出低电平。当引脚高低电平切换时, 两个管子轮流导通,一个负责灌电流,一个负责拉电流,使其负载能力和开关速度都比普 通的方式有很大的提高。推挽输出的低电平为 0 伏,高电平为 3.3 伏。

 开漏输出:可以输出0和高阻态,如果想要使其输出高电平,则需加入上拉电路,所以此时它输出的高电平,完全取决于加入的VDD。而在开漏输出模式时,上方的 P-MOS 管完全不工作。如果我们控制输出为 0,低电平, 则 P-MOS 管关闭,N-MOS 管导通,使输出接地,若控制输出为 1 (它无法直接输出高电平) 时,则 P-MOS 管和 N-MOS 管都关闭,所以引脚既不输出高电平,也不输出低电平,为高阻态。为正常使用时必须接上拉电阻(可用 STM32 的内部上拉,但建议在 STM32 外部再接 一个上拉电阻),它具“线与”特性,也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0 伏。

 

  • 推挽输出模式一般应用在输出电平为 0 和 3.3 伏而且需要高速切换开关状态的场合。 在 STM32 的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。

  • 开漏输出一般应用在 I2C、SMBUS 通讯等需要“线与”功能的总线电路中。除此之外, 还用在电平不匹配的场合,如需要输出 5 伏的高电平(芯片最多输出3.3V),就可以在外部接一个上拉电阻,上拉电源为 5 伏,并且把 GPIO 设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外 输出 5 伏的电平。

  • 设置推挽/开漏,使用寄存器:输出类型寄存器 GPIOx_OTYPER

  • 如果要使输出信号和输入信号反相:(S8050高电平导通,低电平截止)

  • 如果要使输出信号和输入信号同相:

  •  

  • 推挽输出总结:

  • 可以输出高低电平,用于连接数字器件,高电平由VDD决定,低电平由VSS决定。

  • 推挽结构指两个三极管受两路互补的信号控制,总是在一个导通的时候另外一个截止,优点开关效率效率高,电流大,驱动能力强。

  • 输出高电平时,电流输出到负载,叫灌电流,可以理解成推,输出低电平时,负载电流流向芯片,叫拉电流,即挽。

  • 开漏输出总结:

  • 只能输出低电平,丌能输出高电平。

  • 如果需要输出高电平,则需要外接上拉。

  • 开漏输出具有“线与功能”,一个为低,全部为低,多用于I2C和SMBUS总线。

(三)GPIO输出初始化顺序

  1. 确定GPIO是输入、通用输出、复用功能还是模拟输入。(模式寄存器:MODER)

 

 2.如果输出还要确定是推挽输出还是开漏输出(输出类型寄存器 :OTYPER)

 

 

 3.配置输出的速度(输出速度寄存器:OSPEEDR)

 

 4.输出的时候内部的上/下拉电阻要不要开启(上拉/下拉寄存器:PUPDR)

 

 

 

5.具体要输出的内容(置位复位寄存器:BSRR和数据输出寄存器:ODR)

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑烯烃快去学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值