GPIO推挽输出和开漏输出详解

合集下载

详细解说开漏输出和推挽输出

详细解说开漏输出和推挽输出

详细解说开漏输出和推挽输出1,开漏输出(Open-Drain)首先讲一下集电极开路输出(Open-Collector),单片机I/O常用的输出方式的开漏输出(Open-Drain),漏极开路电路概念中提到的“漏”是指MOSFET的漏极。

同理,集电极开路电路中的“集”就是指三极管的集电极。

在数字电路中,分别简称OD门和OC门。

典型的集电极开路电路如图所示。

电路中右侧的三极管集电极什么都不接,所以叫做集电极开路,左侧的三极管用于反相作用,即左侧输入“0”时左侧三极管截止,VCC通过电阻加到右侧三极管基极,右侧三极管导通,右侧输出端连接到地,输出“0”。

从图中电路可以看出集电极开路是无法输出高电平的,如果要想输出高电平可以在输出端加上上拉电阻。

因此集电极开路输出可以用做电平转换,通过上拉电阻上拉至不同的电压,来实现不同的电平转换。

用做驱动器,由于OC门电路的输出管的集电极悬空,使用时需外接一个上拉电阻Rp到电源VCC。

OC门使用上拉电阻以输出高电平,此外为了加大输出引脚的驱动能力,上拉电阻阻值的选择原则:从降低功耗及芯片的灌电流能力考虑应当足够大;从确保足够的驱动电流考虑应当足够小。

将OC门输出连在一起时,再通过一个电阻接外电源,可以实现“线与”逻辑关系。

只要电阻的阻值和外电源电压的数值选择得当,就能做到既保证输出的高、低电平符合要求,而且输出三极管的负载电流又不至于过大。

集电极开路输出除了可以实现多门的线与逻辑关系外,通过使用大功率的三极管还可用于直接驱动较大电流的负载,如继电器、脉冲变压器、指示灯等。

由于现在MOS管用普遍,而且性能要比晶体管要好,所以很多开漏输出电路,和后面要讲的推挽输出电路都用MOS管实现。

再来就是开漏输出电路,和集电极开路一样,顾名思义,开漏电路就是指从MOSFET的漏极输出的电路。

典型的用法是在漏极外部的电路添加上拉电阻到电源如图所示。

完整的开漏电路应由开漏器件和开漏上拉电阻组成。

STM32推挽输出、开漏输出、上拉输入详解

STM32推挽输出、开漏输出、上拉输入详解

可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。

高低电平由IC的电源决定。

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。

输出既可以向负载灌电流,也可以从负载抽取电流。

推拉式输出级既提高电路的负载能力,又提高开关速度。

当一个三级管开通的时候另一个关断,根据B端来确定,这是一个比较器当a>b时B 输出为0;当a<b时B输出为1当B为1时上边三极管导通,下边关闭;当B为0时下边三极管导通,上边关闭。

此为推挽当B为1时,这个管子导通,OUT接地,输出为0;当B为0时管子不导通,OUT接VCC输出为1.开漏输出:一般只能输出低电平,输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).开漏形式的电路有以下几个特点:∙利用外部电路的驱动能力,减少IC(集成电路,也称芯片)内部的驱动。

当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。

IC内部仅需很小的栅极驱动电流。

∙一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。

比如加上上拉电阻就可以提供TTL/CMOS电平输出等。

(上拉电阻的阻值决定了逻辑电平转换的沿的速度。

阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。

)∙OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。

因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。

GPIO的八种模式的详细讲解

GPIO的八种模式的详细讲解

GPIO的⼋种模式的详细讲解输⼊模式-输⼊浮空(GPIO_Mode_IN_FLOATING)-输⼊上拉(GPIO_Mode_IPU)-输⼊下拉(GPIO_Mode_IPD)-模拟输⼊(GPIO_Mode_AIN)输出模式-开漏输出(GPIO_Mode_Out_OD)-开漏复⽤功能(GPIO_Mode_AF_OD)-推挽式输出(GPIO_Mode_Out_PP)-推挽式复⽤功能(GPIO_Mode_AF_PP)输⼊浮空:浮空就是逻辑器件与引脚即不接⾼电平,也不接低电平。

由于逻辑器件的内部结构,当它输⼊引脚悬空时,相当于该引脚接了⾼电平。

⼀般实际运⽤时,引脚不建议悬空,易受⼲扰。

通俗讲就是浮空就是浮在空中,就相当于此端⼝在默认情况下什么都不接,呈⾼阻态,这种设置在数据传输时⽤的⽐较多。

浮空最⼤的特点就是电压的不确定性,它可能是0V,页可能是VCC,还可能是介于两者之间的某个值(最有可能)浮空⼀般⽤来做ADC输⼊⽤,这样可以减少上下拉电阻对结果的影响输⼊上拉模式:上拉就是把点位拉⾼,⽐如拉到Vcc。

上拉就是将不确定的信号通过⼀个电阻嵌位在⾼电平。

电阻同时起到限流的作⽤。

弱强只是上拉电阻的阻值不同,没有什么严格区分输⼊下拉:就是把电压拉低,拉到GND。

与上拉原理相似模拟输⼊:模拟输⼊是指传统⽅式的输⼊,数字输⼊是输⼊PCM数字信号,即0,1的⼆进制数字信号,通过数模转换,转换成模拟信号,经前级放⼤进⼊功率放⼤器,功率放⼤器还是模拟的开漏输出:输出端相当于三极管的集电极,要得到⾼电平状态需要上拉电阻才⾏,适合于做电流型的驱动,其吸收电流的能⼒相对强(⼀般20mA以内)开漏形式的电路有以下⼏个特点:1. 利⽤外部电路的驱动能⼒,减少IC内部的驱动。

当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。

IC内部仅需很下的栅极驱动电流。

2. ⼀般来说,开漏是⽤来连接不同电平的器件,匹配电平⽤的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出⾼电平的功能,则需要接上拉电阻,很好的⼀个优点是通过改变上拉电源的电压,便可以改变传输电平。

GPIO模式配置与详解

GPIO模式配置与详解

GPIO模式配置与详解⼀、GPIO配置(1)GPIO_Mode_AIN 模拟输⼊(2)GPIO_Mode_IN_FLOATING 浮空输⼊(3)GPIO_Mode_IPD 下拉输⼊(4)GPIO_Mode_IPU 上拉输⼊(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复⽤开漏输出(8)GPIO_Mode_AF_PP 复⽤推挽输出GPIO_Speed_10MHz 最⾼输出速率10MHzGPIO_Speed_2MHz 最⾼输出速率2MHzGPIO_Speed_50MHz 最⾼输出速率50MHz1.1 I/O⼝的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O⼝驱动电路的响应速度⽽不是输出信号的速度,输出信号的速度与程序有关(芯⽚内部在I/O⼝的输出部分安排了多个响应速度不同的输出驱动电路,⽤户可以根据⾃⼰的需要选择合适的驱动电路)。

通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的⽬的。

⾼频的驱动电路,噪声也⾼,当不需要⾼的输出频率时,请选⽤低频驱动电路,这样⾮常有利于提⾼系统的EMI性能。

当然如果要输出较⾼频率的信号,但却选⽤了较低频率的驱动模块,很可能会得到失真的输出信号。

关键是GPIO的引脚速度跟应⽤匹配(推荐10倍以上?)。

⽐如:1.1.1 对于串⼝,假如最⼤波特率只需115.2k,那么⽤2M的GPIO的引脚速度就够了,既省电也噪声⼩。

1.1.2 对于I2C接⼝,假如使⽤400k波特率,若想把余量留⼤些,那么⽤2M的GPIO的引脚速度或许不够,这时可以选⽤10M的GPIO引脚速度。

1.1.3 对于SPI接⼝,假如使⽤18M或9M波特率,⽤10M的GPIO的引脚速度显然不够了,需要选⽤50M的GPIO的引脚速度。

1.2 GPIO⼝设为输⼊时,输出驱动电路与端⼝是断开,所以输出速度配置⽆意义。

GPIO的各种模式

GPIO的各种模式

GPIO的各种模式GPIO管脚可以被配置为多种工作模式,其中有3种比较常用:高阻输进、推挽输出、开漏输出1.高阻输进(Input)图1.1 GPIO高阻输进模式结构示意图为减少信息传输线的数目,大多数计算机中的信息传输线采用总线形式,即凡要传输的同类信息都在同一组传输线,且信息是分时传送的。

在计算机中一般有三组总线,即数据总线、地址总线和控制总线。

为防止信息相互干扰,要求凡挂到总线上的寄存器或存储器等,它的输进输出端不仅能呈现0、1两个信息状态,而且还应能呈现第三个状态----高阻抗状态,即此时似乎它们的输出被开关断开,对总线状态不起作用,此时总线可由其他器件占用。

三态缓冲器即可实现上述功能,它除具有输进输出端之外,还有一控制端。

如图1.1所示,为GPIO管脚在高阻输进模式下的等效结构示意图。

这是一个管脚的情况,其它管脚的结构也是同样的。

输进模式的结构比较简单,就是一个带有施密特触发输进(Schmitt-triggered input)的三态缓冲器(U1),并具有很高的输进等效阻抗。

施密特触发输进的作用是能将缓慢变化的或者是畸变的输进脉冲信号整形成比较理想的矩形脉冲信号。

执行GPIO管脚读操纵时,在读脉冲(Read PULSE)的作用下会把管脚(Pin)确当前电平状态读到内部总线上(Internal Bus)。

在不执行读操纵时,外部管脚与内部总线之间是隔离的。

2.推挽输出(Output)图1.2 GPIO推挽输出模式结构示意图推挽输出原理:在功率放大器电路中大量采用推挽放大器电路,这种电路中用两只三极管构成一级放大器电路,两只三极管分别放大输进信号的正半周和负半周,即用一只三极管放大信号的正半周,用另一只三极管放大信号的负半周,两只三极管输出的半周信号在放大器负载上合并后得到一个完整周期的输出信号。

推挽放大器电路中,一只三极管工作在导通、放大状态时,另一只三极管处于截止状态,当输进信号变化到另一个半周后,原先导通、放大的三极管进进截止,而原先截止的三极管进进导通、放大状态,两只三极管在不断地交替导通放大和截止变化,所以称为推挽放大器()。

单片机IO口推挽与开漏输出详解

单片机IO口推挽与开漏输出详解

单片机I/O口推挽与开漏输出详解推挽输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).我们先来说说集电极开路输出的结构。

集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。

对于图1,当左端的输入为“0”时,前面的三极管截止(即集电极C跟发射极E之间相当于断开),所以5V电源通过1K电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开)。

我们将图1简化成图2的样子。

图2中的开关受软件控制,“1”时断开,“0”时闭合。

很明显可以看出,当开关闭合时,输出直接接地,所以输出电平为0。

而当开关断开时,则输出端悬空了,即高阻态。

这时电平状态未知,如果后面一个电阻负载(即使很轻的负载)到地,那么输出端的电平就被这个负载拉到低电平了,所以这个电路是不能输出高电平的。

再看图三。

图三中那个1K的电阻即是上拉电阻。

如果开关闭合,则有电流从1K电阻及开关上流过,但由于开关闭其它三个口带内部上拉),当我们要使用输入功能时,只要将输出口设置为1即可,这样就相当于那个开关断开,而对于P0口来说,就是高阻态了。

对于漏极开路(OD)输出,跟集电极开路输出是十分类似的。

将上面的三极管换成场效应管即可。

这样集电极就变成了漏极,OC就变成了OD,原理分析是一样的。

另一种输出结构是推挽输出。

推挽输出的结构就是把上面的上拉电阻也换成一个开关,当要输出高电平时,上面的开关通,下面的开关断;而要输出低电平时,则刚好相反。

比起OC或者OD来说,这样的推挽结构高、低电平驱动能力都很强。

GPIO输入输出各种模式详解

GPIO输入输出各种模式详解

GPIO输入输出各种模式详解GPIO(General Purpose Input/Output)是通用输入输出口,用于连接外部设备和单片机。

在单片机中,GPIO可以配置为输入或输出模式,同时还有三种特殊的模式:推挽模式、开漏模式和准双向端口模式。

下面将从原理、使用场景和配置方法三个方面详细介绍这三种模式。

推挽模式(Push-Pull Mode)是GPIO输出的常见模式,也是默认的输出模式。

当GPIO输出引脚处于高电平状态时,推挽模式会提供高电平输出(通常为Vcc电源电平),而当GPIO输出引脚处于低电平状态时,推挽模式会提供低电平输出(通常接地)。

推挽模式的优势在于输出电流大,能够提供较强的驱动能力,适用于直接驱动大功率负载的场景。

例如,通过GPIO控制LED灯等外设时,推挽模式可以稳定提供给LED所需的驱动电流,保证LED的正常工作。

开漏模式(Open-Drain Mode)是GPIO输出的另一种模式。

当GPIO输出引脚处于高电平状态时,开漏模式会将输出引脚拉到高阻态,而当GPIO输出引脚处于低电平状态时,开漏模式会将输出引脚拉到地。

开漏模式需要通过一个外接上拉电阻将输出引脚连接到Vcc电源电平上。

开漏模式的优势在于输出可以与其他器件共享同一个总线,通过总线上的上拉电阻或其他器件的驱动电源提供高电平。

开漏模式适用于多个GPIO输出的引脚需要共享一个总线的场景,例如,使用I2C总线协议时,多个GPIO引脚可以共享SDA(数据线)和SCL(时钟线)。

准双向端口(Quasi-Bidirectional Port)是GPIO输入输出的特殊模式,常见于外设总线接口中。

准双向端口可以既作为输入又作为输出,且在不同的时间片段进行输入输出操作。

准双向端口的原理是通过一个三态门和一个外接上拉电阻实现的。

当GPIO处于输出模式时,三态门使得GPIO输出到外设;而当GPIO处于输入模式时,三态门处于高阻态,外设可以将信号输入到GPIO中。

推挽、开漏、强上拉、弱上拉、强下拉、弱下拉输出之间的区别

推挽、开漏、强上拉、弱上拉、强下拉、弱下拉输出之间的区别

推挽、开漏、强上拉、弱上拉、强下拉、弱下拉输出推挽输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).上拉电阻:1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于CO-MS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。

2、OC(集电极开路)门电路必须加上拉电阻,才能使用。

3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。

4、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。

5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。

6、提高总线的抗电磁干扰能力。

管脚悬空就比较容易接受外界的电磁干扰。

7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。

上拉电阻阻值的选择原则包括:1、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。

2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。

3、对于高速电路,过大的上拉电阻可能边沿变平缓。

综合考虑以上三点,通常在1k到10k之间选取。

对下拉电阻也有类似道理对上拉电阻和下拉电阻的选择应结合开关管特性和下级电路的输入特性进行设定,主要需要考虑以下几个因素:1. 驱动能力与功耗的平衡。

以上拉电阻为例,一般地说,上拉电阻越小,驱动能力越强,但功耗越大,设计时应注意两者之间的均衡。

2.下级电路的驱动需求。

同样以上拉电阻为例,当输出高电平时,开关管断开,上拉电阻应适当选择以能够向下级电路提供足够的电流。

3.高低电平的设定。

不同电路的高低电平的门槛电平会有不同,电阻应适当设定以确保能输出正确的电平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常见的GPIO的模式可以配置为open-drain或push-pull,具体实现上,常为通过配置对应的寄存器的某些位来配置为open-drain或是push-pull。当我们通过CPU去设置那些GPIO的配置寄存器的某位(bit)的时候,其GPIO硬件IC内部的实现是,会去打开或关闭对应的top transistor。相应地,如果设置为了open-d模式的话,是需要上拉电阻才能实现,也能够输出高电平的。因此,如果硬件内部(internal)本身包含了对应的上拉电阻的话,此时会去关闭或打开对应的上拉电阻。如果GPIO硬件IC内部没有对应的上拉电阻的话,那么你的硬件电路中,必须自己提供对应的外部(external)的上拉电阻。而push-pull输出的优势是速度快,因为线路(line)是以两种方式驱动的。而带了上拉电阻的线路,即使以最快的速度去提升电压,最快也要一个常量的R×C的时间。其中R是电阻,C是寄生电容(parasitic capacitance),包括了pin脚的电容和板子的电容。但是,push-pull相对的缺点是往往需要消耗更多的电流,即功耗相对大。而open-drain所消耗的电流相对较小,由电阻R所限制,而R不能太小,因为当输出为低电平的时候,需要sink更低的transistor,这意味着更高的功耗。(此段原文:because the lower transistor has to sink that current when the output is low; that means higher power consumption.)而open-drain的好处之一是,允许你cshort(?)多个open-drain的电路,公用一个上拉电阻,此种做法称为wired-OR连接,此时可以通过拉低任何一个IO的pin脚使得输出为低电平。为了输出高电平,则所有的都输出高电平。此种逻辑,就是“线与”的功能,可以不需要额外的门(gate)电路来实现此部分逻辑。
(2)可以将多个开漏输出的Pin脚,连接到一条线上,形成“与逻辑”关系,即“线与”功能,任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理。(3)利用 外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。(4)可以利用改变上拉电源的电压,改变传输电平:图表5 open-drain输出电平的原理
Open-drain输出,则是比push-pull少了个top transistor,只有那个bottom transistor。(就像push-pull中的那样)当bottom transistor关闭,则输出为高电平。此处没法输出高电平,想要输出高电平,必须外部再接一个上拉电阻(pull-upresistor)。Open-drain只能够漏电流(sink current),如果想要集电流(source current),则需要加一个上拉电阻。
对于GPIO的模式的设置,在不考虑是否需要额外的上拉电阻的情况下,是设置为open-drain还是push-pull,说到底,还是个权衡的问题:
如果你想要电平转换速度快的话,那么就选push-pull,但是缺点是功耗相对会大些。
如果你想要功耗低,且同时具有“线与”的功能,那么就用open-drain的模式。(同时注意GPIO硬件模块内部是否有上拉电阻,如果没有,需要硬件电路上
原理图
图表2 push-pull原理图
图表3 open-drain原理图
图表4 open-drain“线与”功能
优点
(1)可以吸电流,也可以贯电流;(2)和开漏输出相比,push-pull的高低电平由IC的电源低定,不能简单的做逻辑操作等。
Байду номын сангаас(1)
对于各种电压节点间的电平转换非常有用,可以用于各种电压节点的Up-translate和down-translate转换
IC的逻辑电平由电源Vcc1决定,而输出高电平则由Vcc2决定。这样我们就可以用低电平逻辑控制输出高电平逻辑了。
缺点
一条总线上只能有一个push-pull输出的器件;
开漏Pin不连接外部的上拉电阻,则只能输出低电平。当输出电平为低时,N沟道三极管是导通的,这样在Vcc'和GND之间有一个持续的电流流过上拉电阻R和三极管Q1。这会影响整个系统的功耗。采用较大值的上拉电阻可以减小电流。但是,但是大的阻值会使输出信号的上升时间变慢。即上拉电阻R pull-up的阻值 决定了逻辑电平转换的沿的速度
某老外的更加透彻的解释
Push-pull输出,实际上内部是用了两个晶体管(transistor),此处分别称为top transistor和bottom transistor。通过开关对应的晶体管,输出对应的电平。top transistor打开(bottom transistor关闭),输出为高电平;bottom transistor打开(top transistor关闭),输出低电平。Push-pull即能够漏电流(sink current),又可以集电流(source current)。其也许有,也许没有另外一个状态:高阻抗(high impedance)状态。除非Push-pull需要支持额外的高阻抗状态,否则不需要额外的上拉电阻。
图表1 Push-Pull对比Open-Drain
Push-Pull推挽输出
Open-Drain开漏输出
原理
输出的器件是指输出脚内部集成有一对互补的MOSFET,当Q1导通、Q2截止时输出高电平;而当Q1截止导通、Q2导通时输出低电平
开漏电路就是指以MOSFET的漏极为输出的电路。指内部输出和地之间有个N沟道的MOSFET(Q1),这些器件可以用于电平转换的应用。输出电压由Vcc'决定。Vcc'可以大于输入高电平电压VCC(up-translate)也可以低于输入高电平电压VCC(down-translate)。
添加额外的上拉电阻)
正所谓,转换速度与功耗,是鱼与熊掌,二则不可兼得焉。
。阻值越大,速度越低功耗越小。反之亦然。
特点
在CMOS电路里面应该叫CMOS输出更合适,因为在CMOS里面的push-pull输出能力不可能做得双极那么大。输出能力看IC内部输出极N管P管的面积。push-pull是现在CMOS电路里面用得最多的输出级设计方式。
【open-drain和push-pull的总结】
相关文档
最新文档