MCU中GPIO口的驱动方式

MCU中GPIO口的驱动方式

导读: MCU芯片中GPIO口的驱动方式大的可分为输出和输入两类,小的分可以分为8种。

一、四种输入方式

①上拉输入: 上拉输入抗干扰能力强,特别适合接地信号的输入(比如低电平有效的按键信号输入)。其工作原理如图1所示。

**图1、上拉输入模式**

  • I/O 端口与TTL 施密特触发器之前接入了一个30K~50K 欧姆的上拉电阻,当I/O 端口悬空时,此时MCU 也能读到稳定的高电平状态,提高了噪声容限。

②下拉输入: 下拉输入模式适合有效信号为高电平值的信号接入(比如高电平有效的按键信号输入),通过分压电阻来滤除信号毛刺,提高电平稳定性,其内部工作流程如图2 所示。

**图2、下拉输入模式**

③浮空输入: 浮空输入的最大特点就是MCU 读到的引脚状态完全跟随外部IO 口的电平变化,一般用于按键输入,抗干扰性能不如上拉和下拉方式,如果按键状态取高低电平的话建议采用上下拉的方式,浮空输入用的比较少,浮空输入的工作流程如图3所示。

图3、浮空输入.PNG

  • 红色指示箭头经过的黄色电路可以看出,信号直接由外部I/O 端口流到TTL 施密特触发器,整形后进入输入数据寄存器,然后由MCU 读取数据寄存器的电平状态

④模拟输入: 模拟输入方式,顾名思义,就是将I/O 端口上的信号作为模拟信号直接输入到STM32 内部的ADC上,进行采样转换。其内部工作流程如图4 所示。

**图4、模拟输入模式**

二、四种输出方式

①开漏输出: 开漏输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对较强(一般20ma 以内)。另外,开漏输出模式下的I/O 端口还可以实现双向通信口的功能,通过图5 所示的内部原理图就能明显看出来。
**图5、开漏输出模式**

  • 从上图可以看出,开漏输出之所以能够实现双向通信的原因在于:当MCU 写1,即“输出控制电路”输出高电平时,N-MOS 管关断,此时I/O 的电平状态由外部的上拉电阻决定;同时,输入端的“TTL施密特触发器”开启,因此,MCU 可以随时读取到外部I/O 引脚上的电平状态。当MCU 写0,此时,N-MOS 管开启, I/O 口接入内部Vss 地端,即外部引脚被拉至低电平。

下面总结一下开漏输出的优点与不足:

优点:
  • 驱动能力: 利用外部电路的驱动能力,可以降低STM32 芯片内部IC 电路的驱动复杂度,这是由于开漏输出可以反向吸收外部流过负载的大电流。
  • 电平匹配: 用来匹配外部不同的电平传输,只需改变外部上拉电源的电压,就可以输出用户自定义的电平值(例如5V、12V、24V)。
  • 线与功能: 容易实现多个I/O 口的“线与”功能,只要将这些I/O 口连接在一起,加上上拉电阻即可。典型的应用就是I2C、SMBus 等总线可据此原理判断总线是否被占用。
不足:
  • 当选择的外部上拉电阻的阻值较小时,信号上升沿输出时延小,但相应的功耗会增大;反之阻值较大,功耗降低,但上升沿输出延时增加。对于传输高频信号来说,用户应该结合具体应用进行一下权衡。

②开漏复用输出: 开漏复用输出与开漏输出的不同点在于:“输入控制电路”的输入端接的是STM32 芯片内部的特定功能外设,例如内部SPI 模块输出的MISO、MOSI、SCK 信号引脚。如图6所示。

**图6、开漏复用模式**

  • 一般情况下,当使用片上特定资源与外部器件进行通信时,需要将与该片上外设相关的引脚设置成开漏复用输出模式。

③推挽输出: 推挽输出模式下,I/O 口可以输出高、低电平。本质上内部采用的是推挽结构,就是两个三极管分别受两互补信号的控制,同一时刻,只有一个三极管导通,另外一个截止。输出的高低电平值由IC 电路的电源决定。其内部工作流程如图7所示。

**图7、推挽输出**

  • 图7中的P-MOS 和N-MOS 是两只参数完全对称的三极管,每次只有一个功率管导通,因此,导通损耗小,效率高。同时,输出端不仅可以向负载灌入电流,还可以从负载抽取电流,故又名“推拉式结构”。这种工作方式的最大优势在于:既能提高I/O 口带负载的能力,又能提高开关速度。

③推挽复用输出: 推挽复用输出与推挽输出的差别在于“输出控制电路”的输入端连接的是STM32 芯片内部的外设电路,例如STM32 内部I2C 电路的SCL、SDA 信号引脚。其内部工作流程如图8所示。

**图8、推挽复用输出**

三、推挽和开漏输出的常规电路图

**推挽和开漏输出的常规电路图**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值