stm32_1.GPIO的几种模式


GPIO配置模式

输入方式
浮空输入 GPIO_Mode_IN_FLOATING
上拉GPIO_Mode_IPU
下拉GPIO_Mode_IPD
模拟输入 GPIO_Mode_AIN
输出方式
开漏输出GPIO_Mode_AF_OD
开漏复用GPIO_Mode_AF_OD
推挽式输出GPIO_Mode_Out_PP
推挽式复用功能GPIO_Mode_AF_PP

模式详解

GPIO基本结构
GPIO基本结构包括输入输出寄存器、ESD静电保护二极管,和输入输出控制电路与驱动器。请注意图中右边IO口接的二极管,这是保护二极管的上拉电位,对于具有模拟输入的管脚,这里上拉到内部的3.3V电位,所以具有模拟输入的管脚不是5V容忍管脚;而其它的5V容忍管脚,这个保护二极管上拉到一个内部的5V电位,从而保证外部电路的5V信号不会受此保护二极管的影响。
GPIO端口的保护二极管可以接3.3V或5V(标FT的管脚)两种直流电压,这使得IO端口可配置成兼容3.3V或5V两种电压信号。

浮空输入 GPIO_Mode_IN_FLOATING

浮空输入
首先看看浮空输入模式,在这张图上,阴影的部分处于不工作状态,尤其是下半部分的输出电路,实际上是与端口处于隔离状态。
黄色的高亮部分显示了数据传输通道,外部的电平信号通过左边编号1的I/O端口进入STM32,经过编号2的施密特触发器的整形送入编号3的“输入数据寄存器”,在“输入数据寄存器”的另一端(编号4),CPU可以随时读出I/O端口的电平状态。

上拉GPIO_Mode_IPU

输入上拉模式
这是输入上拉模式的配置,与前面的浮空输入模式相比,仅仅是在数据通道上部,接入了一个上拉电阻,根据STM32的数据手册,这个上拉电阻阻值介于30K~50K欧姆。
同样,CPU可以随时在“输入数据寄存器”的另一端,读出I/O端口的电平状态。

下拉GPIO_Mode_IPD

输入下拉模式
对于输入下拉模式的配置,数据通道的下部,接入了一个下拉电阻,根据STM32的数据手册,这个下拉电阻阻值也是介于30K~50K欧姆。

模拟输入 GPIO_Mode_AIN

模拟输入
模拟输入通道的配置则更加简单,信号从左边编号1的端口进入,从右边编号2的一端直接进入ADC模块。
这里看到所有的上拉、下拉电阻和施密特触发器,均处于断开状态,因此“输入数据寄存器”将不能反映端口上的电平状态,也就是说,模拟输入配置下,CPU不能在“输入数据寄存器”上读到有效的数据。

开漏输出GPIO_Mode_Out_OD

开漏输出
这是开漏输出模式的配置,当CPU在左边的编号1端通过位设置/清除寄存器,或输出数据寄存器写入数据后,该数据位将通过编号2的输出控制电路传送到编号4的I/O端口,如果CPU写入的是逻辑“1”,则编号3的N-MOS管将处于关闭状态,此时I/O端口的电平将由外部的上拉电阻决定,如果CPU写入的是逻辑“0”,则编号3的N-MOS管将处于开启状态,此时I/O端口的电平被编号3的N-MOS管拉到了VSS的零电位。
在图的上半部,施密特触发器处于开启状态,这意味着CPU可以在“输入数据寄存器”的另一端,随时监控I/O端口的状态;通过这个特性,还实现了虚拟的I/O端口双向通信:只要CPU输出逻辑“1”,由于编号3的N-MOS管处于关闭状态,I/O端口的电平将完全由外部电路决定,因此,CPU可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1”。
开漏形式的电路有以下几个特点:
1、 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很小的栅极驱动电流。
2、 一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)
3、 OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。
4、可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。

开漏复用GPIO_Mode_AF_OD

开漏复用
开漏复用输出模式与开漏输出模式的配置基本相同,不同的是编号2的输出控制电路的输入,与复用功能的输出端相连,此时输出数据寄存器被从输出通道断开了。

同样,CPU可以从“输入数据寄存器”读到外部电路的信号。

推挽式输出GPIO_Mode_Out_PP

推挽式输出
在开漏输出模式的基础上,推挽输出模式仅仅是在编号2的输出控制电路之后,增加了一个P-MOS管。
当输出逻辑“1”时,编号3处的P-MOS管导通,而下方的N-MOS管截止,达到输出高电平的目的。
当输出逻辑“0”时,编号3处的P-MOS管截止,而下方的N-MOS管导通,达到输出低电平的目的。
在这个模式下,CPU仍然可以从“输入数据寄存器”读到外部电路的信号。
推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

推挽式复用功能GPIO_Mode_AF_PP

推挽式复用功能
最后是推挽复用输出模式,同样的道理,编号2的输出控制电路的输入,与复用功能的输出端相连,此时输出数据寄存器被从输出通道断开了。
其它部分与前述模式一致,包括对“输入数据寄存器”的读取。

如果GPIO端口外界LED灯,则通常配置成推挽输出;如果接按键,则配置成上拉输入;如果接AD,则配置成模拟输入。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值