【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/167403

相关文章

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

python中getsizeof和asizeof的区别小结

《python中getsizeof和asizeof的区别小结》本文详细的介绍了getsizeof和asizeof的区别,这两个函数都用于获取对象的内存占用大小,它们来自不同的库,下面就来详细的介绍一下... 目录sys.getsizeof (python 内置)pympler.asizeof.asizeof

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)二、数据分片