从硬件分析推挽输出和开漏输出详细区别

推挽输出:可以输出高,低电平,连接数字器件。 
输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。 
输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。

开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 
输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。 
输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需要外部上拉电路);可以读IO输入电平变化,此模式可以把端口作为双向IO使用。

网上找了些资料,推挽电路: 
这里写图片描述 
上面的三极管是N型三极管,下面的三极管是P型三极管,请留意控制端、输入端和输出端。 
当Vin电压为V+时,上面的N型三极管控制端有电流输入,Q3导通,于是电流从上往下通过,提供电流给负载。

这里写图片描述 
经过上面的N型三极管提供电流给负载(Rload),这就叫「推」。 
当Vin电压为V-时,下面的三极管有电流流出,Q4导通,有电流从上往下流过。

这里写图片描述、 
经过下面的P型三极管提供电流给负载(Rload),这就叫「挽」。 
以上,这就是推挽(push-pull)电路。

这里写图片描述 
经过上面的N型三极管提供电流给负载(Rload),这就叫「推」。 
当Vin电压为V-时,下面的三极管有电流流出,Q4导通,有电流从上往下流过。

这里写图片描述、 
经过下面的P型三极管提供电流给负载(Rload),这就叫「挽」。 
以上,这就是推挽(push-pull)电路。

那么什么是开漏呢?要理解开漏,可以先理解开集。 
 

这里写图片描述 
如图,开集的意思,就是集电极C一端什么都不接,直接作为输出端口。 
如果要用这种电路带一个负载,比如一个LED,必须接一个上拉电阻,就像这样。

这里写图片描述

当Vin没有电流,Q5断开时,LED亮。 
当Vin流入电流,Q5导通时,LED灭。

开漏电路,就是把上图中的三极管换成场效应管(MOSFET)。 
N型场效应管各个端口的名称: 
这里写图片描述

当Vin没有电流,Q5断开时,LED亮。 
当Vin流入电流,Q5导通时,LED灭。

开漏电路,就是把上图中的三极管换成场效应管(MOSFET)。 
N型场效应管各个端口的名称: 
这里写图片描述

当Vin没有电流,Q5断开时,LED亮。 
当Vin流入电流,Q5导通时,LED灭。

开漏电路,就是把上图中的三极管换成场效应管(MOSFET)。 
N型场效应管各个端口的名称: 
这里写图片描述

场效应管是电压控制型元器件,只要对栅极施加电压,DS就会导通。结型场效应管有一个特性就是它的输入阻抗非常大,这意味着:没有电流从控制电路流出,也没有电流进入控制电路。没有电流流入或流出,就不会烧坏控制电路。而双极型晶体管不同,是电流控制性元器件,如果使用开集电路,可能会烧坏控制电路。这大概就是我们总是听到开漏电路而很少听到开集电路的原因吧?因为开集电路被淘汰了。

有人说,开漏单刀单置,推挽单刀双置,这样理解也有一定的道理。

https://www.zhihu.com/question/28512432
--------------------- 
作者:World123xxf 
来源:CSDN 
原文:https://blog.csdn.net/lostand/article/details/70052918?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 73
    点赞
  • 256
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
输出模式 通用推挽输出模式是最常用的输出模式之一,可以将任何数字信号输出到该引脚。具体配置方法如下: 1. 初始化GPIO口 ``` RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 开启GPIOA时钟 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 配置PA0 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出模式 GPIO_Init(GPIOA, &GPIO_InitStructure); ``` 2. 把输出信号赋值给GPIO口 ``` GPIO_SetBits(GPIOA, GPIO_Pin_0); // 输出高电平 GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 输出低电平 ``` 复用推挽输出模式 复用推挽输出模式可以将某些外设的输出信号输出到该引脚,如定时器、UART等。配置方法如下: 1. 初始化GPIO口 ``` RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 开启GPIOA时钟 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // 配置PA9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出模式 GPIO_Init(GPIOA, &GPIO_InitStructure); ``` 2. 配置复用功能 ``` RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); // 开启USART1时钟 USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 115200; // 波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 数据位长度 USART_InitStructure.USART_StopBits = USART_StopBits_1; // 停止位长度 USART_InitStructure.USART_Parity = USART_Parity_No; // 校验位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 硬件流控制 USART_InitStructure.USART_Mode = USART_Mode_Tx; // 发送模式 USART_Init(USART1, &USART_InitStructure); GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); // 复用USART1的TX引脚 ``` 注意:复用功能的配置需要与外设的初始化配合使用。例如上述代码中,需要先初始化USART1,再配置复用功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值