说起来,上拉和下拉电阻大概是电路设计里最基础的东西了。谁不知道加个10k电阻把引脚拉高或者拉低呢?但有意思的是,恰恰是这些看起来简单的电阻,让不少工程师栽了跟头。我这些年review过的原理图,少说也有几百份了,发现有些错误反复出现,今天就拿出来聊聊。
1、阻值选得随心所欲很多人选上拉电阻就是10k、4.7k随手一填,理由是“大家都这么用”。其实这事儿没那么随便。阻值太大了,高电平就抬不起来,尤其当负载电流稍大一点的时候;阻值太小了呢,功耗蹭蹭往上涨,还可能把驱动能力不够的GPIO口给烧了。

按我的经验:I2C这种开漏结构的总线,上拉一般用4.7kΩ就挺合适;普通GPIO输入口用10kΩ没问题;但要是驱动LED这种需要灌电流的场合,1kΩ甚至更小的阻值才靠谱。
说起来,之前碰到个项目,待机功耗怎么都降不下来。后来一查,单片机的输入引脚用了10kΩ上拉,而实际电路里那个引脚99%的时间都是被外设主动拉低的——10kΩ上拉就等于在那边白白漏电,功耗全耗在这上面了。改成1MΩ之后,待机电流直接从2mA掉到了20μA。
2、根本不算功耗这点在低功耗产品里特别致命。3.3V供电,用10kΩ上拉到电源轨,电流就是0.33mA。听起来不大是吧?但如果你的产品有50个这样的上拉同时工作,待机电流就是16.5mA。对于一个要靠纽扣电池撑一两年的设备来说,这简直是灾难。
计算公式很简单:P = V²/R 或者 I = V/R。在电池供电的产品里,每个上拉电阻都是要精打细算的。有时候宁可让IO口保持输出高电平状态,也别用上拉电阻来维持电平——前者不消耗额外功耗,后者24小时都在吃电。
3、信号完整性抛到脑后到了高速信号这边,上拉电阻的选型就更讲究了。很多人还停留在“就是个上拉”的认知里,完全没考虑寄生电容的影响。
实际上,一个上拉电阻和后面的寄生电容会形成一个RC滤波器。RC时间常数τ = R×C,直接决定了信号的上升沿和下降沿速度。阻值越大,边沿越缓;阻值太小,又会导致过冲和振铃。

实际案例:有同事做个SPI Flash的通信板子,信号频率也就几十MHz,应该挺轻松的。结果数据老出错,波形一看上升沿慢得跟爬山似的。问题就出在数据线上加了个10kΩ上拉,加上板子上几十pF的寄生电容,RC常数轻松超过100ns,上升沿根本来不及建立。后来换成470Ω,上升沿立刻干净利落。
我个人的习惯是,对于MHz级别的信号,上拉电阻尽量控制在330Ω到1kΩ之间。具体多少,可以用示波器实际量一下边沿,或者按照目标上升时间反推——上升时间通常取RC常数的2.2倍左右。
4、开漏总线随便怼I2C、SWD这类开漏结构的总线,上拉电阻的选择更要慎重。因为总线电容会随着设备数量和走线长度增加而增大,电容一大,如果不调整上拉阻值,信号边沿就会变得惨不忍睹。
标准I2C规范里有个公式,要求上升沿时间不能超过某个值。实际设计中,我会先用示波器抓一下波形,看看上升沿是否符合要求。如果边沿不够陡,第一反应就是降低上拉阻值,而不是去改代码或者换芯片。
记住:总线上的上拉电阻不是越小越好。太小了会导致低电平的时候灌入电流过大,增加功耗和芯片负担。一般4.7kΩ是个起点,如果边沿不够陡,可以降到2.2kΩ、1kΩ,特殊情况甚至可以用330Ω——但这时候得确认主控芯片的GPIO能否承受这个电流。
5、上下拉和方向分不清还有些时候,工程师把上下拉电阻加在了输出引脚上,这就比较尴尬了。芯片输出高电平的时候,你再加个上拉,等于两个电源在打架;芯片输出低电平的时候加下拉,也是同样的问题。
上下拉电阻应该加在输入引脚上,用来给不确定状态的引脚一个确定的电平。如果你的引脚配置成输出,那就没必要额外加上下拉了——除非你有特殊用途,比如用上拉电阻来限制高电平输出的幅度,或者配合开漏输出实现线与逻辑。
6、复位引脚随便拉芯片的复位引脚一般都需要上拉或者下拉,这个电阻的选型可不是随便来的。阻值太大,复位引脚容易受到干扰,可能导致芯片莫名其妙复位;阻值太小,在复位期间会增加功耗,有些芯片的复位引脚内部有下拉结构,外接上拉太大电流也容易出问题。

建议:复位引脚的上拉电阻一般用10kΩ就够了,这是经过芯片厂商验证的数值。如果复位引脚附近有长走线或者容易受到干扰,适当降低到4.7kΩ甚至1kΩ会更稳妥。实在拿不准的时候,翻一下芯片的数据手册,上面一般都会给出推荐值。
7、没考虑上电时序有些产品要求多个芯片协同工作,上电顺序很关键。这时候上下拉电阻的阻值就会影响上电时序。如果上拉电阻太大,某些芯片的引脚在电源还没稳定的时候就处于高阻态,可能导致总线冲突或者逻辑错误。
我之前做的一个项目,主控和RF模块之间的控制信号需要严格的上电顺序。最初用的是100kΩ上拉,结果RF模块经常无法正常初始化。后来查了半天,发现是上拉太慢,控制信号建立时间超过了RF模块的响应窗口。换成了10kΩ之后问题解决。
怎么选才对说了这么多误区,其实选上拉下拉电阻就那么几个原则:
第一,算功耗。尤其是电池供电的产品,每个毫安都要掂量着来。先按最大电流算一遍,看看能不能接受。
第二,看负载。驱动能力够不够,边沿够不够快,用示波器量一量比啥都管用。
第三,想清楚是输入还是输出。输入口加上下拉是保险,输出口就别画蛇添足了。
第四,查手册。芯片原厂给出的推荐值不是随便写的,那是经过测试验证的。
实用小贴士:准备一个阻值表:330Ω、470Ω、1kΩ、4.7kΩ、10kΩ、47kΩ、100kΩ、1MΩ。不同阻值对应不同场景:高速信号用小阻值、低功耗用大阻值、普通GPIO用中阻值。记住了这个套路,遇到问题心里就有底了。
其实上拉下拉电阻设计这件事,说难也不难,说简单也不简单。关键是要明白自己在做什么、为什么选这个阻值,而不是机械地照搬别人的设计或者凭感觉来。设计电路的时候多问自己一句“这个电阻放这里,电流是多少,功耗是多少,边沿够不够快”,就能避开大部分坑了。
好了,就聊这么多吧。还有什么想了解的,评论区见。
关于凡亿教育
凡亿教育,是国内领先的电子设计硬件教育培训平台,以让电子设计更简单为使命。深耕电子硬件教育培训十余年,开设硬件开发、高速PCB设计、嵌入式系统、射频EMC、电路仿真等实战课程,涵盖AD、Allegro、PADS等主流工具。累计培养120万+工程师,出版30余本专业教材,自主研发凡亿课堂年服务学员50万+。采用双师2V1教学模式,培训效率极高,学员就业率98%,九成实现涨薪。作为国家高新技术企业、专精特新企业,凡亿教育致力于打造电子工程师梦工厂,帮助每一位电子人快速成长、顺利就业。

扫码关注
















































