找回密码
 请使用中文注册
搜索附件  
《家电维修》技术论坛 附件中心 电子技术 电子基础 be8fd1d793de70510e09100af14e4ec2.jpg

be8fd1d793de70510e09100af14e4ec2.jpg

 

单片机有哪四种输出模式?工作原理怎样?:
单片机(如STM32) GPIO有四种输出模式:
①推挽输出
②开漏输出
③复用推挽输出
④复用开漏输出

单片机内部功能简图:


四种模式结构及工作原理现分析如下:

一、推挽输出
如图示




结构:输出级由一对互补MOS管组成:上管P-MOS接VDD,下管N-MOS接VSS。

工作原理:
输出数据寄存器(ODR)
写1(代表输出高电平) → 上管P-MOS导通,下管N-MOS截止 → 引脚直接连接到VDD → 输出强高电平。
写0(代表输出低电平 )→ 下管N-MOS导通,上管P-MOS截止 → 引脚连接到VSS → 输出强低电平。


两个MOS管交替导通,输出阻抗极低,可提供较大拉电流或灌电流(典型值±25mA)。

应用:直接驱动LED、蜂鸣器、数码管;输出PWM波控制电机或调光;普通数字信号输出。


注意:绝对禁止两个推挽输出引脚直接相连,否则一个高一个低时会形成VDD到VSS的短路。

二、开漏输出
如图示


结构:输出级仅有一个下管N-MOS,上管P-MOS闲置(或被移除)。引脚直接连接到N-MOS的漏极(Drain),故名开漏。

工作原理:
ODR写1 → 下管N-MOS截止 → 引脚进入高阻态(浮空),无法自行输出高电平,必须依靠外部上拉电阻拉到目标电压(如5V、12V)。

ODR写0 → 下管N-MOS导通 → 引脚被拉到VSS → 输出强低电平。

电平转换特点:
外接不同电压的上拉电阻,即可输出不同逻辑高电平(3.3V系统驱动5V设备)。

“线与”功能:
多个开漏引脚可直接并联。仅当所有引脚都输出高阻(写1)时,总线才被上拉为高;任何一个引脚输出低(写0),总线即为低。这是I2C等多设备共享总线的物理基础。
如图示

应用:
I2C总线(SDA/SCL)、1-Wire总线、需要电平匹配的跨电压通信、多个设备共享中断输出。


注意:
高电平的上升速度取决于上拉电阻阻值和负载电容。电阻过小则低电平时功耗大,电阻过大则上升沿变慢(影响高速通信)。

三、复用推挽输出

结构:
与推挽输出完全相同的MOS管对,区别在于输出数据的来源不同。

工作原理:
ODR寄存器不再控制引脚。输出数据来自芯片内部的外设模块,如USART的发送器、定时器的PWM通道、SPI主机的MOSI。

外设输出1 → 上管导通、下管截止 → 强高电平。

外设输出0 → 下管导通、上管截止 → 强低电平。

关键特点:
继承了推挽的所有优点:强驱动、快速度、高电平由VDD决定。


允许外设自动、高速地控制引脚,CPU无需在每次电平变化时干预。


应用:USART的TX引脚、SPI的SCK/MOSI、PWM输出、定时器触发输出等需要高速、明确高低电平的片上外设。

四、复用开漏输出

结构:
与开漏输出相同(仅有下管N-MOS),数据来源改为内部外设模块。


工作原理:
外设输出1 → 下管N-MOS截止 → 引脚高阻,需外部上拉电阻提供高电平。

外设输出0 → 下管N-MOS导通 → 引脚强低电平。

关键特性:
同样具备电平转换和“线与”能力,但信号节奏由外设硬件控制而非CPU。

典型应用:
I2C总线。I2C协议要求开漏以实现多主设备仲裁(“线与”)。STM32的I2C外设内部会自动控制SDA和SCL引脚,所以必须配置为复用开漏输出。CMOS 16x2 LCD的I2C接口、SMBus等也使用此模式。


常见误区:
USART的TX如果误配为复用开漏,外部又无上拉电阻,则高电平无法输出,导致通信异常。


需要“线与”或电平变换 → 选开漏/复用开漏;需要高速、强驱动、直接驱动负载 → 选推挽/复用推挽。复用模式只是将控制权从CPU交给外设,电气特性与对应的通用模式完全相同。


be8fd1d793de70510e09100af14e4ec2.jpg
         同一主题附件:
    39e290b941c384dbfd604dc8870f133f.jpg
    88cbe4ef53c136976fe69373b7b91ea9.jpg
    be8fd1d793de70510e09100af14e4ec2.jpg
    7f1fc5f920449a5985984e4464fee55c.jpg

QQ|手机版|家电维修论坛 ( 蜀ICP备19011473号 川公网安备51102502000164号 )|网站地图|网站地图

GMT+8, 2026-8-9 03:40 , Processed in 0.067863 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

返回顶部