【stm32芯片设置解惑】:stm32F103系列的开漏输出和推挽输出的区别

本文主要是介绍【stm32芯片设置解惑】:stm32F103系列的开漏输出和推挽输出的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

场景:

        大家在开发stm32的时候,不管是标准库开发还是hal库开发,最基础的就是芯片引脚的某某设置,为什么这么设置?这样设置的好处是什么?


问题描述 — 开漏输出和推挽输出的用处和区别

  1. 什么是开漏输出?

        答:开漏输出(Open-Drain Output)是指输出引脚可以连接到负载(通常是电阻和/或其他器件),但无法提供高电平(高电压)信号。

        开漏输出只能提供低电平(低电压)信号,当输出为低电平时,输出引脚与地相连,形成一个开路;当输出为高电平时,输出引脚与负载断开,形成一个开路。因此,要在开漏输出上获取高电平信号,需要通过外部上拉电阻将输出引脚连接到电源电压。

  1. 什么是推挽输出?

        答:推挽输出(Push-Pull Output)是指输出引脚可以提供高电平和低电平信号。推挽输出可以驱动输出引脚的电平从电源电压端(高电平)到地(低电平)进行切换。

        在推挽输出中,输出引脚通过晶体管或集成电路内部的开关元件,可以将电流传递到负载或将电流从负载中断开。这种输出方式可以提供更大的输出电流能力,通常用于驱动较大的负载或需要提供双向电平切换的应用。

        开漏输出只能提供低电平信号,需要外部上拉电阻来获取高电平信号;而推挽输出可以提供高电平和低电平信号,可以直接驱动负载。

优缺点:

开漏输出的优点包括:

  1. 允许多个输出引脚连接到同一个总线上,形成开漏总线。这种配置下,多个设备可以共享总线并以开漏方式输出信号,通过外部上拉电阻实现总线的高电平状态,而每个设备可以通过开漏输出引脚控制总线的低电平状态。这样可以实现多个设备之间的数据传输和协作。

  2. 可以实现电平转换。开漏输出可以与不同电压的设备或电路连接,只需通过适当的上拉电阻即可将输出引脚的信号电平转换为目标电压水平。

  3. 具有较高的抗干扰能力。由于开漏输出在输出低电平时形成一个开路,因此对于外部噪声和干扰信号具有较好的抑制能力。

推挽输出的优点包括:

  1. 可以提供高电平和低电平信号。推挽输出可以直接驱动负载,无需外部上拉电阻。这使得推挽输出更加方便和灵活,特别适用于需要直接控制负载的应用。

  2. 具有较高的输出驱动能力。推挽输出可以提供较大的输出电流,能够驱动较大的负载,如电机、继电器等需要较高电流的设备。

  3. 可以提供更高的输出速度。由于推挽输出具有主动驱动能力,可以快速切换输出电平,适用于需要高速信号传输或需要快速响应的应用。

然而,推挽输出也存在一些缺点:

  1. 推挽输出不能直接形成开漏总线,因为无法提供开漏模式的输出。如果需要实现开漏总线的功能,需要使用其他器件或电路来实现。

  2. 在一些特殊的应用场景中,推挽输出可能会产生较多的功耗,因为在切换输出电平时会有瞬间的电流流动,导致功耗增加。

应用场景:

开漏输出的应用场景包括:

  1. 总线通信:开漏输出可以用于实现多个设备之间的通信总线,例如I2C和SPI等串行通信协议。多个设备可以通过开漏输出引脚共享总线,并通过外部上拉电阻实现总线的高电平状态。

  2. 开关控制:开漏输出可以用于控制开关或触发器等外部器件。通过开漏输出引脚的开路和闭路状态,可以控制外部电路中的开关状态。

  3. 多路选择:开漏输出可以用于多路选择器的控制信号。通过多个开漏输出引脚,可以选择连接到特定输入的信号源。

  4. 电平转换:开漏输出可以用于不同电压之间的电平转换。通过适当的上拉电阻,可以将开漏输出引脚的信号电平转换为目标电压水平。

推挽输出的应用场景包括:

  1. 数字信号驱动:推挽输出可以用于驱动数字信号的负载,例如LED灯、继电器、电机等。推挽输出可以提供足够的输出电流来驱动这些负载。

  2. 并行总线:推挽输出可以用于并行总线的实现,例如数据总线和地址总线。多个推挽输出引脚可以同时提供高电平和低电平信号,实现并行数据传输。

  3. 脉冲信号:推挽输出可以用于生成脉冲信号,例如时钟信号、触发信号等。推挽输出可以快速切换输出电平,实现精确的时间控制。

  4. 驱动高负载:推挽输出具有较高的输出电流能力,适用于需要驱动较大负载的应用,如电机驱动、功率放大器等。

需要根据具体的电路设计要求和应用需求来选择适当的输出模式,开漏输出和推挽输出在不同的应用场景中发挥着重要的作用。


GPIO八种模式:

 

        具体的还需大家自行探索,去实际的体验一下,各个方式的区别和好处。


长风破浪会有时,直挂云帆济沧海

这篇关于【stm32芯片设置解惑】:stm32F103系列的开漏输出和推挽输出的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/176964

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统