STM32之GPIO工作模式

一、GPIO工作状态

stm32或者说基本上所有MCU的工作状态都基本可以分为以下几种,输出模式:推挽输出、开漏输出、复用推挽输出和复用开漏输出;输入模式:上拉输入、下拉输入、浮空输入和模拟输入。

1.输出状态

①推挽输出

推挽输出由一对P-MOS和N-MOS组成,当输出控制端输出为高时,上端的PMOS导通,NMOS截止, 电流方向为VDD->PMOS->输出端,对外呈现高电平;当输出控制端输出为低时,上端的PMOS截止,NMOS导通, 电流方向为VSS->NMOS->输出端,对外呈现低电平。这种输出方式不能实现线于。

功能:

推挽模式,让“输出控制”变为了VDD/Vss输出,使得输出电流增大,提高了输出引脚的驱动能力,提高了电路的负载能力和开关的动作速度。

②开漏输出

也就是传说中的OD门,若由三极管组成叫OC门。结构上和推挽输出类似,但除去上端的PMOS,使用时需外加上拉电阻,输出高电平时需要通过该上拉电阻输出。

功能:

1)提高IO驱动能力。MCU的IO口对外驱动的能力很小,若使用开漏输出,此时的驱动电流有外置的VCC提供,可提供带负载能力。

2)电平转换。如MCU只能对外输出3.3v,但由于输出高电平时是通过VCC提供,VCC为5v。此时可以对外输出5v。

3)线于。多个开漏的引脚可以直接并在一起使用,统一接一个合适的上拉电阻,就可以实现“逻辑与”关系,即当所有引脚均输出高电平时,输出才为高电平,若任一引脚输出低电平,则输出低电平。
 

③复用推挽/开漏输出

GPIO引脚除了作为通用输入/输出引脚使用外,还可以作为片上外设( USART、 I2C、 SPI等)专用引脚,即一个引脚可以有多种用途,但同一时刻一个引脚只能使用复用功能中的一个。

当引脚设置为复用功能时,可选择复用推挽输出模式或复用开漏输出模式,在设置为复用开漏输出模式时,需要外接上拉电阻
 

2.输入状态

①上拉输入
如图所示, VDD->开关->上拉电阻->I/O引脚。当开关闭合, 外部I/O无输入信号时,默认输入高电平。
功能:

该模式的典型应用就是外接按键,当没有按键按下时候, MCU的引脚为确定的高电平,当按键按下时候,引脚电平被拉为低电平。
 

 

②下拉输入

如图所示, Vss->开关->下拉电阻->外部I/O引脚。当开关闭合,外部I/O无输入信号时,默认输入低电平。

 

③浮空输入模式

如图所示,两个上/下拉电阻开关均断开,既无上拉也无下拉, I/O引脚直接连接TTL肖特基触发器,此时I/O引脚浮空,读取的电平是不确定的,外部信号是什么电平, MCU引脚就输入什么电平。 MCU复位上电后,默认为浮空输入模式。
 

④模拟输入

两个上/下拉电阻开关均断开,同时TTL肖特基触发器开关也断开,引脚信号直接
连接模拟输入,实现对外部信号的采集。

功能:

通常用于ADC采集。

注意:

可以看到输入端都有一个TTL肖特基触发器,即斯密特触发器,作用是可以消除脉冲干扰。

二、GPIO工作速率

STM32的I/O引脚工作在输出模式下时,需要配置I/O引脚的输出速度。该输出速度不是输出信号的速度,而是I/O口驱动电路的响应速度,可以理解为输出驱动电路的带宽,即一个驱动电路可以不失真地通过信号的最大频率。

举个例子,如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成正弦波

这里很多人理解为GPIO的可以输出的速度或者说翻转速度,这是不对的。

STM32提供三个输出速度: 2MHz、 10MHz、 50MHz。实际开发中需要结合实际情况选择合适的相应速度,以兼顾信号的稳定性和低功耗。通常,当设置为高速时,功耗高、噪声大、电磁干扰强;当设备为低速时,功耗低、噪声小、电磁干扰弱。

通常简单外设,比如LED灯、蜂鸣器灯,建议使用2MHz的输出速度,而复用为I2C、 SPI等通信信号引脚时,建议使用10MHz或50MHz以提高响应速度。
 

三、参考文章

1.【嵌入式】GPIO引脚速度、翻转速度、输出速度区别-云社区-华为云

2. 韦东山老师的STM32_MINI开发手册

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值