首页 > 其他分享 >推挽输出、开漏输出

推挽输出、开漏输出

时间:2024-09-06 19:36:47浏览次数:1  
标签:输出 推挽 低电平 开漏 IO MCU

推挽输出、开漏输出

在使用MCU时,常看到配置IO口为推挽输出、开漏输出,以STM32为例,IO口有以下几种模式,单片机的内部电路简化图如下:

  1. 推挽输出

  2. 开漏输出

  3. 复用推挽输出

  4. 复用开漏输出

推挽输出

推挽电路的示意图:

当IN输入低电平时,P-MOS导通,N-MOS截止,此时OUT输出的电压是VDD高电平

当IN输入高电平时,N-MOS导通,P-MOS截止,此时OUT输出的电压是VSS低电平

用推挽输出模式,可以得到一个明确的高电平或者低电平,可以实现高低电平的快速切换。在实际使用时,经常用IO口的高低电平去驱动一个LED或者是蜂鸣器,使用的就是MCU的推挽输出模式。

推挽输出驱动LED时,LED接地,此时电流的方向是从MCU往外输出,这个电流称为拉电流

反之,推挽输出驱动LED时,LED接电源,此时电流的方向是从外往MCU输入,这个电流成为灌电流

不管是灌电流还是拉电流,都是针对IO口作为输出模式而言的,它们是衡量电路驱动能力的重要参数,数据手册上可以看到这两个参数,在实际设计电路时使用的上拉电阻或者是下拉电阻要根据这两个参数选择阻值,从而匹配电路的输出能力

再以实际的STM32为例,推挽输出模式。

如果MCU的IO口要输出高电平,则P-mos导通,N-mos截止,此时IO引脚上的电压就是VDD高电平。

如果MCU的IO口要输出低电平,则N-mos导通,P-mos截止,此时IO引脚可以看做直接接了GND,所以是低电平。

开漏输出

开漏电路的示意图:

开漏指的是场效应管的“漏极”,开漏输出就是把场效应管的漏极直接引出来作为输出引脚

开漏输出最重要的作用是:电平匹配,在设计电路时不论是单片机还是外设芯片或是负载,每个个体的逻辑电平可能是不一样的,这种情况时就需要作电平的匹配,就用到了开漏输出模式。

开漏输出模式,因为场效应管的漏极直接引出,是需要加一个外置电源的,我们可以通过外接电源的方式得到想要的电平。因为外接电源的方式,从MCU的角度来说,减轻了MCU的负担

例如在使用MCU自带的IIC模块时,就要求配置想要的管脚为开漏输出模式多个开漏输出被接在了同一个线上,下图中如果其中的某个引脚的漏极为低电平,则整个总线上都是低电平,这是“与逻辑”,所以被称为“线与”。因为IIC总线可以接很多个设备MCU就是通过这种方式判断当前总线的状态


再以STM32为例:

当N-MOS与P-MOS都截止时,此时的引脚就相当于连接了一个无穷大的电阻,所有IO引脚对外呈现的是高阻态,当MCU供电为3.3V开漏输出引脚上接外部5V电源时,因为N-MOS的阻值无穷大,所以此时IO引脚上的电压就接近于5V电压

开漏的线与特性:当多个开漏输出链接到一起,当它们全部都输出高电平时,总线上才是高电平,但凡有一个开漏输出引脚上是低电平,总线就会被拉低。

复用输出模式

复用模式输出连接的是MCU的内部外设,例如PWM、USART、IIC。具体用复用开漏输出还是复用推挽输出,这个就要根据外设需求来设置,例如IIC在使用时需要用到线与特性,就必须在程序里配置IO引脚为复用开漏输出;像UART或者PWM功能,需要IO口高速变化确定的高低电平,则必须配置为复用推挽输出。

标签:输出,推挽,低电平,开漏,IO,MCU
From: https://www.cnblogs.com/bujidao1128/p/18400874

相关文章

  • java for循环倒序输出
    在Java中,如果你想使用for循环来实现倒序输出(比如倒序输出一个数组或集合中的元素,或者仅仅是从一个数字倒序输出到另一个数字),有几种方法可以实现。下面是一些常见的示例:示例1:倒序输出数组中的元素假设你有一个整数数组,并希望使用for循环来倒序输出数组中的每个元素。int[]numbers......
  • 接HDMI同时输出喇叭spker声音
    OS:Android13背景:设备接HDMI,声音通道会优先从HDMI输出,喇叭是是没有声音的 修改如下:1.frameworks/basediff--gita/services/core/java/com/android/server/WiredAccessoryManager.javab/services/core/java/com/android/server/WiredAccessoryManager.javaindex6162ad......
  • 例2.12 分别编写求n!和输出斐波那契数列的函数,并用两个函数进行测试
    例2.12分别编写求n!和输出斐波那契数列的函数,并用两个函数进行测试2.12.1deffactorial(n):r=1whilen>1:r*=nn-=1returnrdeffib(n):a,b=1,1whilea<n:print(a,end="")a,b=b,a+bprint('%d!=%d'%(......
  • 在Python中如何输出变量的值?
    在Python中,变量是一个存储值的保留内存位置,通过变量名可以在整个代码中引用这个值,变量的命名通常使用字母+数字的形式,那么如何使用Python输出变量的值?我们一起来看看吧。在Python中,输出变量的值有两种常见方法:1、print()函数print()函数用于在控制台中输出信息。......
  • 回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出
    回归预测|MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出目录回归预测|MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出预测效果基本介绍模型介绍PSO模型LSTM模型PSO-LSTM模型程序设计参考资料致谢预测效......
  • 新手c语言讲解及题目分享(十八)--基本输入输出函数专项练习
    本文主要讲解c语言的基础部分,基本的输入与输出,通过手动的输入从而得到自己想要的预期值。参考书目和推荐学习书目:通过网盘分享的文件:C语言程序设计电子教材(1).pdf链接:https://pan.baidu.com/s/1JFqSaCKZ0A2Lr944e72NUA?pwd=p648提取码:p648目录前言一.格式输出......
  • 高级编程--第四章 输入和输出处理
    1、目标了解输入输出的概念使用FIle类操作文件或目录理解流的概念及分类会使用字节流读写文本文件会使用字符流读写文本文件会使用字节流读写二进制文件使用序列化和反序列化保持和恢复对象信息2、javaI/O2.1文件什么是文件?相关记录或放在一起的数据的集合文件......
  • 【SQL Server】将EXEC的变量结果赋值输出
    动态传入表名和表的某些属性,然后将标的属性赋值到参数中,以便后续使用。首先一张表(表和字段设计略),使用动态的语句如下:1DECLARE@tablenameVARCHAR(255)='BomNo'2,@idINT=13,@sqlNVARCHAR(MAX);4SET@sql='SELECTfnumber,sonFnumberFROMBomNoWHEREi......
  • 图形学学习(二):Shader输入输出及自制Shader类
    在LearnOpengl学了Shader的输入输出和自制Shader类,输入输出还是好理解的,自制Shader类的讲解我感觉还是用代码更直观一些(个人感觉),这两天看了一下秋招的面试面经,想了想明年找工作的问题,刺激,十分感慨,优秀的人还是太多了,不过最重要的还是得做好自己!!!Shader的输入输出总结有两种......
  • 两节干电池升压3.3V和5V芯片,常输出和EN控制完全关断
    一般5号/7号干电池的单节电压标称是1.5V,实际使用中,干电池耗电完电压是1V-0.9V(不同厂家有轻微不同),干电池满电电压是1.6V,所以两节干电池的供电电压是1.8V-3.2V之间,并不是一直恒定的3V(标称1.5Vx2),在应用中,很多需求要两节干电池保持恒定的输出电压,才能很好工作,这时候我们就需要两节干电......