HIGH 和 LOW,是谁推出来的?|引脚电路 01

封面为 AI 辅助概念插画;电路工作过程以正文动画为准。

课程插图

上一系列把 GPIO 当成“能输出高低电平的引脚”。现在打开这个黑盒:为什么同一根引脚,既能接近电源电压,又能接近地?答案藏在输出级中。

本系列不需要开发板。三张 GIF 使用理想开关解释普通 CMOS 推挽输出,非芯片仿真、非硬件实测;时间已放慢,省略寄生参数与实际驱动时序。电源用 VDD 表示,不指定所有芯片都相同的电压。

两条路,只选一条

上侧连接电源,下侧连接地,交替决定输出

把输出级简化成上下两只开关:上侧通向 VDD,下侧通向 GND,中间节点就是引脚。输出 HIGH 时,上侧接通、下侧断开;输出 LOW 时,下侧接通、上侧断开。

“推挽”强调输出能主动向两个方向改变电位。它不是简单地把一个变量贴上 1 或 0 的标签,也不是 HIGH 时有电、LOW 时完全没有电路。LOW 仍然可能接通一条承载电流的路径。

真实晶体管不是零电阻导线,输出也不是无限强的电压源。电流经过内部器件,就可能产生压降和发热。因而“接近电源”比“永远严格等于电源”更准确。

电压不是无条件保证

相同输出状态,在不同负载下出现不同压降

第二张图采用一条纯教学等效关系:HIGH 输出看成理想电源串联输出电阻。负载电流增加,电阻上的压降增加,端口电压下降。模型中的数值只用于看趋势,不能拿来当某块开发板的参数。

查数据手册时,应把 VOH、VOL 与测试电流一起读。VOH 的保证值,通常是在指定输出电流、电源与温度条件下成立;不能只记住“这是一颗 3.3V 芯片”,就认为任何负载下引脚都有 3.3V。

同样,GPIO 的速度档位常涉及输出边沿能力,并不等于选择了某个固定方波频率。更快的边沿未必更适合长导线,布线、负载和干扰都需要一起考虑。

两个输出不要争同一根线

两个推挽输出相反时,形成电源到地的冲突路径

假如把两个普通推挽输出直接相连,一个要求 HIGH,另一个要求 LOW,就可能形成从前者电源经输出级到后者地的低阻通路。结果不是“自动投票”,而是电平不可靠、电流过大,严重时损坏器件。

图中橙色路径表示危险情况,不是推荐实验。即使程序平时让两个引脚同高同低,上电、复位、下载程序和模式切换时,也可能出现不同状态。因此不能只用正常运行时的一行代码证明连接安全。

共享线路需要选用允许共享的输出结构和协议,或使用明确的输出使能协调驱动者。下一课的开漏,就是解决某类共享问题的一种办法,但它也有条件。

看完再猜

如果一个引脚输出 LOW,能否断言它没有承载电流?不能。要看外部负载接在哪里:若负载另一端接电源,电流可能流入引脚,再经内部下侧器件回地。

本课记住三个问题:当前谁在驱动?电流从哪里来、回哪里去?数据手册是在什么条件下保证这个电压?有了这三个问题,HIGH/LOW 就不再只是程序里的两个单词。

资料:ST GPIO 入门与输出速度、TI HCMOS 设计考虑。本文自行构建的理想开关与压降模型仅用于解释,不代表任一器件实测曲线。

发现更多好玩的开源项目

专注 Arduino、开源硬件、端侧 AI 和值得收藏的开发者工具。

课程插图

长按二维码关注「GitStar」

所有动画为教学原理示意,非芯片仿真、非硬件实测。网页发布:2026-09-22。