先上一个总览图

众所周知STM32的IO口可配置成输出和输出,其中输入有四种模式,输出也有四种模式,分别如下:
输入:
GPIO_Mode_AIN-----------------模拟输入
GPIO_Mode_IN_FLOATING---------浮空输入
GPIO_Mode_IPD-----------------下拉输入
GPIO_Mode_IPU-----------------上拉输入

输出:
GPIO_Mode_Out_OD---------开漏输出
GPIO_Mode_Out_PP---------推挽输出
GPIO_Mode_AF_OD----------复用开漏输出
GPIO_Mode_AF_PP----------复用推挽输出

下面我就输出中常用的推挽输出和开漏输出做下简单介绍,很多新手朋友对这两种模式也是一知半解
一、推挽输出模式
所谓的推挽输出模式,是根据这两个MOS管的工作方式来命名的。
在该结构中输入高电平时,经过反向后,上方的P-MOS导通,下方的N-MOS关闭,对外输出高电平。
如果想要点亮一个LED,硬件连接如下:
 
而在该结构中输入低电平时,经过反向后,上方的P-MOS关闭,下方的N-MOS管导通,对外输出低电平。
如果想要点亮一个LED,硬件连接如下:
 
当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。
推挽输出的低电平为0伏,高电平为3.3伏。即推挽输出的高电平和内部VDD一致。
注意短路风险:如下图IO_1和IO_2短接了,由于IO_1输出低电平,IO_2输出高电平,相当于VDD和VSS直接短接了,就会短路,这是推挽输出的一个风险,所以需要后面的开漏输出来解决这个问题。

二、开漏输出模式

开漏输出模式时,上方的P-MOS管完全不工作。

若控制输入为0,则P-MOS管关闭,N-MOS管导通,使输出接地。

若控制输入为1 ,则P-MOS管和N-MOS管都关闭,所以引脚既不输出高电平,也不输出低电平,为高阻态。此时想要输出高电平必须外部接上拉电阻。

它具有“线与”特性,也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0伏。

如下图,IO_1、IO_2、IO_3连接在了一起,由于IO_1和IO_3被拉低了,所以即使IO_2内部的NMOS没导通,IO_2也会被拉低。这样解决了推挽输出的短路风险

在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。

开漏输出一般应用在I2C、SMBUS通讯等需要“线与”功能的总线电路中。

总结:

哪些地方用开漏输出:常用的驱动LED、蜂鸣器等

哪些地方用开漏输出:常用的需要上拉的应用如IIC、SPI总线等。
---------------------
作者:王小琪
链接:https://bbs.21ic.com/icview-3277852-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

[技术讨论]STM32 IO口输出之推挽输出和开漏输出对比相关推荐

  1. 单片机推挽输出c语言,单片机IO口科普:推挽输出、开漏输出详解

    原标题:单片机IO口科普:推挽输出.开漏输出详解 在学单片机和选用逻辑器件的时候我们常别人说这款芯片是推挽输出驱动能力强,这个引脚是开漏输出需要加上拉电阻. 是不是有时候感觉一头雾水? 今天就详解一下 ...

  2. 笔记:推挽输出、开漏输出

    推挽输出 推挽输出既可以输出低电平,也可以输出高电平,可以直接驱动功耗不大的数字器件. 当内部输出1电平时,上边的MOS管导通同时下边的MOS管截至,IO口输出高电平. 当内部输出0电平时,上边的MO ...

  3. 推挽输出和开漏输出_关于51单片机IO口的输出模式结构

    单片机种类繁多今天主要谈谈51单片机,在stm32单片机中IO(GPIO)输出模式有很多种.如 模拟输入 .浮空输入.下拉输入.上拉输入.开漏输出.推挽输出等很多种,不同的输入输出有不同的功能,实现不 ...

  4. TTL反相器、OC门、TS门、推挽输出、开漏输出

    TTL反相器 这是一个TTL反相器,这是经过了很多工程师多种设计最终沉淀出来的电路,这个电路是比较成熟的.我们只需要对这个电路进行解析即可,不需要再去研究当初是如何设计出来的. 学过CMOS应该知道, ...

  5. STM32 IO口的8中配置方式解读(推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟)

    转自:http://blog.csdn.net/u010592722/article/details/45746079 STM32  IO口的8中配置方式: (1)GPIO_Mode_AIN 模拟输入 ...

  6. 模拟IIC——关于模拟IIC的IO口的配置选取推挽输出还是开漏输出,以及是否需要更改IO口输入输出模式和是否需要对IO配置上拉

    在使用模拟IIC的时候,观看别人的程序的时候发现了程序之间的一些不一样的地方 ----------------------------------代码1------------------------ ...

  7. 单片机I/O口推挽输出与开漏输出的区别(open-drain与push-pull)

    推挽(push-pull):推挽输出的器件是指输出脚内部集成有一对互补的MOSFET,当Q1导通.Q2截止时输出高电平:而当Q1截止导通.Q2导通时输出低电平.一个导通另一个就截止. 集电极开路:输出 ...

  8. STM32初学篇-推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别

    有关推挽输出.开漏输出.复用开漏输出.复用推挽输出以及上拉输入.下拉输入.浮空输入.模拟输入的区别 最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPI ...

  9. STM32的推挽输出和开漏输出

    文章目录 前言 一.推挽输出 二.开漏输出 三.区别和适应场景 总结 前言 本篇文章将带大家了解STM32的推挽输出和开漏输出,并且学习这两个的区别,学习分别在什么时候使用这两个不同的输出方式. 在 ...

最新文章

  1. 【Docker】 安装 mysql
  2. amd 安装 linux驱动怎么安装教程,请教,怎么在ubuntu里安装amd显卡驱动
  3. 折半查找和二叉排序树的时间性能_leecode刷题----二分搜索与二叉查找(排序)树...
  4. 数据线给电脑联网是什么原理_物联网孵化的产物——条码扫描器
  5. SQL Server中的登录触发器概述
  6. android genymotion模拟器怎么使用以及和google提供的模拟器性能对比
  7. F6-预编译编译安装
  8. ElementUI:vue中使用elementUI时候通过SCSS修改NavMenu 导航栏高度
  9. ASP.NET中使用System.Net.Mail发邮件
  10. arcmap新手教程_ArcGIS入门教程(1)——ArcMap应用基础
  11. 虚幻引擎3的代码讲解
  12. js之Symbol类型
  13. jquery 源码分析系列1
  14. E4A 易安卓一些常见的小问题
  15. 大学毕业生找不到工作的原因何在?
  16. 哈工大关系抽取模型CasRel代码解读
  17. (完整版)英语常用词组大全(2000词以上)
  18. 非系统管理员打开Internet Information Services (IIS)管理器
  19. Rust:Trait 详解
  20. Android 意图(Intent)

热门文章

  1. 【集合论】等价关系 ( 等价关系概念 | 等价关系示例 | 等价关系与闭包 )
  2. RK3399平台开发系列讲解(USB设备驱动)5.37、Gadget Device驱动详解
  3. adxl345取出值怎么算角度_adxl345怎样通过想,x,y,z的输出计算出角度值
  4. [软件工程导论(第六版)]第9章 面向对象方法学引论(课后习题详解)
  5. C++学习(四四三)Android手机支持的opengl特性
  6. Kotlin基础:Use与Let 的区别:
  7. 14、列出所有员工及领导的姓名
  8. TI DSP C:\ti 目录架构
  9. 数理统计10.15 | 指数分布族
  10. 中软国际实习学习第九天