关于GPIO配置模式的区别

1.I/O的基本结构

图1.1-I/O结构

1.1肖特基触发器的作用

        在STM32等微控制器的GPIO引脚内部,通常会集成一个肖特基触发器,其核心作用是对输入信号进行整形和噪声抑制,确保数字逻辑的稳定性和可靠性。以下是它的具体功能和应用场景:

1.1.1信号整形(消除噪声与抖动)

  • 问题:外部输入的信号可能因噪声、抖动或缓慢变化(如按键、传感器输出)导致电压波动,直接读取会产生误判。

  • 解决方案:肖特基触发器通过滞回特性(Hysteresis),只有当输入电压超过高阈值(VT+VT+​)或低于低阈值(VT−VT−​)时,输出才会跳变,中间波动被忽略。

1.1.2 提高抗干扰能力

滞回电压(VH=VT+−VT−),例如,STM32的GPIO输入可能设定 VT+​=2.0V、VT−=1.8V,则:

  • 输入电压 > 2.0V → 逻辑1

  • 输入电压 < 1.8V → 逻辑0

  • 1.8V~2.0V之间 → 保持原状态(避免噪声误触发)。

 注意:模拟输入模式(如ADC)会绕过肖特基触发器,直接读取引脚电压。

1.2内部弱上/下拉电阻 

        所有GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可以被激活也可以被断开。

1.3保护二极管

         引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD时,上 方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。

1.4P-MOS管和N-MOS管

2.GPIO模式

图2.1-GPIO的多种模式

        根据数据手册总结一下,也就是说GPIO模式可以分为三类:输出、复用、输入。 

2.1 输入模式

模式特性典型应用
输入浮空引脚电平完全由外部电路决定,无内部上拉/下拉外部信号读取(如UART RX)
输入上拉内部上拉电阻(约40kΩ)默认拉高,外部低电平时生效按键检测(按下接地)
输入下拉内部下拉电阻(约40kΩ)默认拉低,外部高电平时生效按键检测(按下接VCC)

2.2 输出模式

模式特性典型应用
推挽输出可输出高/低电平,驱动能力强(直接拉高或拉低)LED控制、驱动数字器件
开漏输出只能拉低或高阻态,需外接上拉电阻才能输出高电平I2C、电平转换、总线通信

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

2.3 复用功能模式

模式特性典型应用
复用推挽外设控制输出(如SPI MOSI、USART TX),驱动能力同推挽输出外设通信(高速信号)
复用开漏外设控制输出(如I2C SDA),需外接上拉电阻I2C、CAN总线

2.4 模拟模式

模式特性典型应用
模拟输入/输出关闭数字功能,引脚直接连接ADC/DAC传感器信号采集(ADC)

3.GPIO关键参数

3.1 输出驱动能力

  • 推挽输出:可主动输出高/低电平,驱动电流通常达±20mA(具体见芯片手册)。

  • 开漏输出:仅能拉低或高阻态,高电平依赖外部上拉电阻(如I2C的4.7kΩ)。

3.2 速度配置

图3.1-输出速度

STM32 GPIO支持可配置的输出速率(防止信号振铃):

  • 低速(2MHz):用于低干扰场景(如按键)。

  • 中速(10MHz):一般外设(如UART)。

  • 高速(50MHz):高速信号(如SPI、PWM)。

4.常见问题与注意事项

4.1 模式选择错误的影响

  • 输入浮空:若外部信号浮空,可能读到随机电平(需加上拉/下拉)。

  • 开漏输出未接上拉:无法输出高电平(表现为始终低电平)。

4.2 复用推挽与推挽输出的区别

        复用推挽(Alternate Function Push-Pull)推挽输出(General Purpose Push-Pull)是两种常用的输出模式,它们的核心区别在于控制信号的来源应用场景。以下是详细对比:

特性推挽输出(GPIO_MODE_OUTPUT_PP)复用推挽(GPIO_MODE_AF_PP)
控制信号来源直接由CPU写GPIO寄存器控制(如HAL_GPIO_WritePin由外设硬件自动控制(如SPI、USART、TIM)
典型应用普通数字信号输出(LED、继电器等)外设通信(SPI MOSI、USART TX、PWM等)
配置方式无需绑定外设需指定复用功能(如GPIO_AF4_I2C1
灵活性可随时通过代码改变电平电平由外设自动生成,CPU不可直接干预

4.3 电平兼容性

  • 3.3V容忍:STM32 GPIO一般为3.3V电平,与5V器件通信需电平转换(如开漏模式+上拉至5V)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值