GPIO常常可以设置为输出和输入;在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull);

  这里先熟悉下什么是mos管:MOS管,即绝缘性场效应管。MOS英文全称为Metal-Oxide-Semiconductor即金属-氧化物-半导体,常用做开关元件;G:gate 栅极,S:source 源极;D:drain 漏极;

  工作原理:NMOS的特性,Vgs(栅极电压)大于一定的值就会导通,适合用于源极接地时的情况(低端驱动),只要栅极电压达到一定电压(如4V或10V, 其他电压,看手册)就可以了。

  PMOS的特性,Vgs(栅极电压)小于一定的值就会导通,适合用于源极接VCC时的情况(高端驱动)。但是,虽然PMOS可以很方便地用作高端驱动,但由于导通电阻大,价格贵,替换种类少等原因,在高端驱动中,通常还是使用NMOS。

Push-Pull推挽输出

  输出的器件是指输出脚内部集成有一对互补的MOSFET,当Q1导通、Q2截止时输出高电平;而当Q1截止导通、Q2导通时输出低电平。Push-Pull输出,实际上内部是用了两个晶体管(transistor),此处分别称为Top-Transistor和Bottom-Transistor。通过开关对应的晶体管,输出对应的电平。Top-Transistor打开(Bottom-Transistor关闭),输出为高电平;Bottom-Transistor打开(Top-Transistor关闭),输出低电平。除非Push-pull需要支持额外的高阻抗状态,否则不需要额外的上拉电阻。

特点:

  1. Push-pull即能够漏电流(sink current),又可以集电流(source current);

  2. push-pull的高低电平由IC的电源决定,不能简单的做逻辑操作;

Open-Drain开漏输出

  开漏电路就是指以MOSFET的漏极为输出的电路。指内部输出和地之间有个N沟道的MOSFET(Q1),这些器件可以用于电平转换的应用。输出电压由Vcc决定。Vcc可以大于输入高电平电压VCC1(call UP-Translate)也可以低于输入高电平电压VCC(call Down-Translate);

特点:

  1. Open-drain只能够漏电流(sink current),如果想要集电流(source current),则需要加一个上拉电阻。

  2. 可以将多个开漏输出的Pin脚,连接到一条线上,形成“与逻辑”关系,即“线与”功能,任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理;

  3. 利用 外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很小的栅极驱动电流。

  4. 可以利用改变上拉电源的电压,改变传输电平,如图, IC的逻辑电平由电源Vcc1决定,而输出高电平则由Vcc2决定。这样我们就可以用低电平逻辑控制输出高电平逻辑了;

  5. 标准的开漏脚一般只有输出的能力。添加其它的判断电路,才能具备双向输入、输出的能力。

  缺点:开漏Pin不连接外部的上拉电阻,则只能输出低电平;

总结:

  常见的GPIO的模式可以配置为open-drain或push-pull,具体实现上,常为通过配置对应的寄存器的某些位来配置为open-drain或是push-pull。当我们通过CPU去设置那些GPIO的配置寄存器的某位的时候,其GPIO硬件IC内部的实现是,会去打开或关闭对应的top transistor。相应地,如果设置为了Open-D模式的话,是需要上拉电阻才能实现,也能够输出高电平的。因此,如果硬件内部(internal)本身包含了对应的上拉电阻的话,此时会去关闭或打开对应的上拉电阻。如果GPIO硬件IC内部没有对应的上拉电阻的话,那么你的硬件电路中,必须自己提供对应的外部(external)的上拉电阻。而push-pull输出的优势是速度快,因为线路是以两种方式驱动的。而带了上拉电阻的线路,即使以最快的速度去提升电压,最快也要一个常量的R×C的时间。其中R是电阻,C是寄生电容(parasitic capacitance),包括了pin脚的电容和板子的电容。但是,push-pull相对的缺点是往往需要消耗更多的电流,即功耗相对大。而open-drain所消耗的电流相对较小,由电阻R所限制,而R不能太小,因为当输出为低电平的时候,需要sink更低的transistor,这意味着更高的功耗。而open-drain的好处之一是,允许你short多个open-drain的电路,共用一个上拉电阻,此种做法称为wired-OR连接,此时可以通过拉低任何一个IO的pin脚使得输出为低电平。为了输出高电平,则所有的都输出高电平。此种逻辑,就是“线与”的功能,可以不需要额外的门电路来实现此部分逻辑。

open drain和push pull相关推荐

  1. 理解bootstrap的列偏移offset 和 推拉push/pull的区别?

    参考: http://www.cnblogs.com/jnslove/p/5430481.html & https://blog.csdn.net/hly_coder/article/deta ...

  2. git push/pull时总需要输入用户名密码的解决方案

    在提交项目代码或者拉代码的时候,git会让你输入用户名密码,解决方案:(我们公司用的是gitlab) 执行git config --global credential.helper store命令 然 ...

  3. Android adb “push pull”中文支持解决方案

    Android adb "push pull"中文支持解决方案 在windows底下文件(夹)命名所采用的是GBK编码,而在Android中采用的UTF-8编码,所有使用adb 的 ...

  4. MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB - 4

    MongoDB中类似这样的关键字有很多, $lt $gt $lte $gte 等等,这么多我们也不方便记,这里我们说说几个比较常见的 一.查询中常见的 等于 大于 小于 大于等于 小于等于 等于 : ...

  5. Android设备在PC端上通过adb push/pull时需要验证的方案解决(push/pull之前需要先通过某些方式验证,之后才能push/pull)

    前几天领导吩咐我做个功能,就是用户Android设备连接到PC端后,PC端进行adb  push/pull的时候需要先认证操作,认证通过后才能push/pull,这个功能我特么一听,当场就-不会,但是 ...

  6. [转]微博后台架构浅析——读扩散pull、写扩散push、混合模式(push+pull)——相关cache(redis,memcache)...

    原文地址:http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552013430114959121/ 之前在网上看到关于Twitter.Si ...

  7. 用adb push/pull init.rc的方法

    通常情况下,我们用常规的adb remount,然后adb push/pull,提示init.rc是Read Only的,我们chmod 777 ./init.rc文件也不行. 如果我们adb rem ...

  8. RocketMQ 消息订阅Subscribe—— Push Pull 模式

    2019独角兽企业重金招聘Python工程师标准>>> RocketMQ 消息订阅Subscribe-- Push & Pull 模式 RocketMQ消息订阅的两种模式 R ...

  9. 09_EGIT插件的安装,Eclipse中克隆(clone),commit,push,pull操作演示

     1 下载EGIT,下载地址:http://www.eclipse.org/egit/download/ 最终的下载地址: http://www.eclipse.org/downloads/dow ...

  10. RabbitMQ之Consumer消费模式(Push Pull)

    概述 消息中间件有很多种,进程也会拿几个来对比对比,其中一种对比项就是消费模式.消息的消费模式分Push.Pull两种,或者两者兼具.RabbitMQ的消费模式就是兼具Push和Pull. 本文通过d ...

最新文章

  1. python是不是特别垃圾-Python 这语言真是混乱和原始
  2. 030_CSS外边距合并
  3. python 32位和64位的区别在哪
  4. Data intensive Application (1)
  5. 机器视觉牛人及其相关领域分类科普
  6. XMLHttpRequest的方法
  7. 北大飞跃手册_【通知】关于转发吉林大学大学生飞跃社团2020年吉林大学飞跃手册预发布会即将召开!...
  8. 偏微分方程数值解—ADI格式求解二维抛物型方程
  9. Android APK 反编译
  10. php拍照功能,Javascript+PHP兑现在线拍照功能
  11. 2022 DSCTF首届数字空间安全攻防大赛
  12. python除法运算定律有哪些_运算定律有哪些
  13. U盘安装完kali后内存变小的言diao(无图)博客
  14. 小区市话配套和宽带接入系统研究报告
  15. 【微信公众号】个人订阅号开发模式下自定义菜单
  16. 计算机显示适配器禁用了电脑黑屏,Win10电脑禁用集成显卡后黑屏如何解决_Win10系统禁用集成显卡后黑屏解决方案...
  17. 用户体验五要素_【产品经理】如何理解“用户体验要素”5层模型?
  18. 目标导向的交互设计:About face 3 -- The essentials of interaction design 读书分享
  19. 数据分析方法——判别分析
  20. class文件魔数CAFEBABE的由来

热门文章

  1. 这些题你hold住吗?
  2. 如何制作拼图?教你三步快速拼接图片
  3. 爱了爱了!从草根到百万年薪程序员的十年风雨之路,小白也能看明白
  4. pandas报错:columns overlap but no suffix specified
  5. Linux虚拟机快速搭建RabbitMQ(解压版)完整流程(简单明了、不亲测能写这么多)
  6. android百度地图禁止转动和俯视,百度地图之UI控制
  7. linux终端反引号怎么使用,Linux 反引号 的作用
  8. 医学计算机思维培养方式的研究,计算机教学中的科研思维培养
  9. Ubuntu18.04 安装花生壳并使用
  10. 【100+ python基础入门-32】元组元素的增删改查操作方法总结