嵌入式学习笔记 - GPIO 推挽输出(包括复用推挽输出),开漏输出(包括复用开漏输出),输入模式,复用输出模式
控制逻辑:当IN输出低电平时,P-MOS导通,N-MOS截止,IO输出VDD高电平,反之当IN输出低电平时,P-MOS截止,N-MOS导通,IO输出VSS低电平,无需外接上拉电阻或者下拉电阻(关于MOS管的工作原理请查看另一篇笔记)IO状态:当配置为此模式时,IO只有两种状态,高电平状态或者低电平状态。适用场景:用于电平转换的场合,以及通信线路,比如I2C,SPI的数据传输通信线路,这种线路通常要
MCU的GPIO 通常可以配置为输入或者输出使用,配置为输出模式时,又可以分为推挽输出或者开漏输出。

一 推挽输出
以下为推挽输出示意图:

控制逻辑:当IN输出低电平时,P-MOS导通,N-MOS截止,IO输出VDD高电平,反之当IN输出高电平时,P-MOS截止,N-MOS导通,IO输出VSS低电平,无需外接上拉电阻或者下拉电阻(关于MOS管的工作原理请查看另一篇笔记)
IO状态:当配置为此模式时,IO只有两种状态,高电平状态或者低电平状态。高电平用于输出电流,又叫拉电流,低电平用于灌入电流又叫灌电流,STM32拉电流能力规格书上标注单io8ma,总共不超过150ma,灌电流能力要强一些。
适用场景:适用于需要高低电平切换的场合,例如LED,蜂鸣器的控制,也适用于高低电平快速切换的场合比如PWM的输出等。
二 开漏输出
开漏输出示意图:

开漏指的是场效应管的“漏极”,开漏输出就是把场效应管的漏极直接引出来作为输出引脚。
控制逻辑:当mos管导通时,IO输出为低电平,当mos管截止时,iO输出为外电路施加电平,这样也起到了电平匹配的作用。
IO状态:当配置为此模式时,IO有两种状态,低电平状态,或者高阻态,高阻态下IO的状态取决于外接电平。
适用场景:用于电平转换的场合,以及通信线路,比如I2C,SPI的数据传输通信线路,这种线路通常要求实现线与状态,即其中一个IO输出低电平,则整条线路就会被拉低,MCU通过这种方式判断总线的状态。如下图:

注:如果用推挽的方式实现这种线与,可能造成短路烧掉三极管。
以下两个片段解释来自百度Ai,与自己理解的基本一致:
不能通过推挽方式实现线与的主要原因是推挽输出结构在多个输出并联时会导致电流冲突和器件损坏。推挽输出结构通常包含一个上拉晶体管和一个下拉晶体管,当两个推挽输出并联时,如果一个输出为高电平,另一个输出为低电平,电流会直接从高电平的VCC通过上拉晶体管流经低电平的输出,导致短路,产生大电流,可能损坏器件12。此外,推挽输出的逻辑状态不稳定,无法正确实现线与功能1。
相比之下,集电极开路(OC)门和开漏输出的CMOS门可以实现线与功能。OC门的输出晶体管集电极开路,需要外接上拉电阻,多个OC门并联时,任一输出为低电平会拉低总线,从而实现线与功能3。开漏输出的CMOS门在类似OC门的情况下也可以支持线与,但其电平驱动能力取决于外部上拉电阻4。
三 输入模式
如下图所示

控制逻辑:如图上半部分,上下两个开关均为断开状态
IO状态:当配置为此模式时,IO只有一个状态,不接外接电路时为高阻态,接入外部电路时io的状态取决于外接电路的状态
适用场景:配置IO为高阻态,可以避免影响外部电路的状态,同时起到保护IO口的作用
四 复用输出模式


复用模式输出连接的是MCU的内部外设,例如PWM、USART、IIC。具体用复用开漏输出还是复用推挽输出,这个就要根据外设需求来设置,例如IIC在使用时需要用到线与特性,就必须在程序里配置IO引脚为复用开漏输出;像UART或者PWM功能,需要IO口高速变化确定的高低电平,则必须配置为复用推挽输出。
部分内容与图片取自整理笔记——推挽输出、开漏输出-CSDN博客
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)