场景:
大家在开发stm32的时候,不管是标准库开发还是hal库开发,最基础的就是芯片引脚的某某设置,为什么这么设置?这样设置的好处是什么?
问题描述 — 开漏输出和推挽输出的用处和区别
-
什么是开漏输出?
答:开漏输出(Open-Drain Output)是指输出引脚可以连接到负载(通常是电阻和/或其他器件),但无法提供高电平(高电压)信号。
开漏输出只能提供低电平(低电压)信号,当输出为低电平时,输出引脚与地相连,形成一个开路;当输出为高电平时,输出引脚与负载断开,形成一个开路。因此,要在开漏输出上获取高电平信号,需要通过外部上拉电阻将输出引脚连接到电源电压。
-
什么是推挽输出?
答:推挽输出(Push-Pull Output)是指输出引脚可以提供高电平和低电平信号。推挽输出可以驱动输出引脚的电平从电源电压端(高电平)到地(低电平)进行切换。
在推挽输出中,输出引脚通过晶体管或集成电路内部的开关元件,可以将电流传递到负载或将电流从负载中断开。这种输出方式可以提供更大的输出电流能力,通常用于驱动较大的负载或需要提供双向电平切换的应用。
开漏输出只能提供低电平信号,需要外部上拉电阻来获取高电平信号;而推挽输出可以提供高电平和低电平信号,可以直接驱动负载。
优缺点:
开漏输出的优点包括:
允许多个输出引脚连接到同一个总线上,形成开漏总线。这种配置下,多个设备可以共享总线并以开漏方式输出信号,通过外部上拉电阻实现总线的高电平状态,而每个设备可以通过开漏输出引脚控制总线的低电平状态。这样可以实现多个设备之间的数据传输和协作。
可以实现电平转换。开漏输出可以与不同电压的设备或电路连接,只需通过适当的上拉电阻即可将输出引脚的信号电平转换为目标电压水平。
具有较高的抗干扰能力。由于开漏输出在输出低电平时形成一个开路,因此对于外部噪声和干扰信号具有较好的抑制能力。
推挽输出的优点包括:
可以提供高电平和低电平信号。推挽输出可以直接驱动负载,无需外部上拉电阻。这使得推挽输出更加方便和灵活,特别适用于需要直接控制负载的应用。
具有较高的输出驱动能力。推挽输出可以提供较大的输出电流,能够驱动较大的负载,如电机、继电器等需要较高电流的设备。
可以提供更高的输出速度。由于推挽输出具有主动驱动能力,可以快速切换输出电平,适用于需要高速信号传输或需要快速响应的应用。
然而,推挽输出也存在一些缺点:
推挽输出不能直接形成开漏总线,因为无法提供开漏模式的输出。如果需要实现开漏总线的功能,需要使用其他器件或电路来实现。
在一些特殊的应用场景中,推挽输出可能会产生较多的功耗,因为在切换输出电平时会有瞬间的电流流动,导致功耗增加。
应用场景:
开漏输出的应用场景包括:
总线通信:开漏输出可以用于实现多个设备之间的通信总线,例如I2C和SPI等串行通信协议。多个设备可以通过开漏输出引脚共享总线,并通过外部上拉电阻实现总线的高电平状态。
开关控制:开漏输出可以用于控制开关或触发器等外部器件。通过开漏输出引脚的开路和闭路状态,可以控制外部电路中的开关状态。
多路选择:开漏输出可以用于多路选择器的控制信号。通过多个开漏输出引脚,可以选择连接到特定输入的信号源。
电平转换:开漏输出可以用于不同电压之间的电平转换。通过适当的上拉电阻,可以将开漏输出引脚的信号电平转换为目标电压水平。
推挽输出的应用场景包括:
数字信号驱动:推挽输出可以用于驱动数字信号的负载,例如LED灯、继电器、电机等。推挽输出可以提供足够的输出电流来驱动这些负载。
并行总线:推挽输出可以用于并行总线的实现,例如数据总线和地址总线。多个推挽输出引脚可以同时提供高电平和低电平信号,实现并行数据传输。
脉冲信号:推挽输出可以用于生成脉冲信号,例如时钟信号、触发信号等。推挽输出可以快速切换输出电平,实现精确的时间控制。
驱动高负载:推挽输出具有较高的输出电流能力,适用于需要驱动较大负载的应用,如电机驱动、功率放大器等。
需要根据具体的电路设计要求和应用需求来选择适当的输出模式,开漏输出和推挽输出在不同的应用场景中发挥着重要的作用。
GPIO八种模式:
具体的还需大家自行探索,去实际的体验一下,各个方式的区别和好处。