[经验] stm32之上/下拉电阻对GPIO的影响

[复制链接]

助理工程师

发表于 2018-4-16 13:23:47   529 查看 0 回复 显示全部楼层 倒序浏览
分享

1.什么是上/下拉电阻

上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用,下拉同理. 上拉是对器件注入电流,下拉是输出电流,弱强只是上拉电阻的阻值不同,没有什么严格区分。这是网上搜索到的官方说法,那么什么叫不确定信号呢?比如说引脚悬空,如果芯片工作在恶劣的环境下(如有电磁干扰)或者刚上电期间电源供电不稳定,引脚的电平值就会产生波动,这就是不确定信号。

2.上/下拉电阻的由来

   那么怎么解决这个引脚电平不确定的问题呢??于是工程师们就想了一个办法,在GPIO端口驱动电路外围加上拉电阻,连到电源,将其限制在高电平状态即为上拉。将上拉电阻接到地端,将电位限制在低电平即为下拉。

3.上/下拉电阻对GPIO口的影响

   上(下)拉电阻在有输入的情况下,并不会导致GPIO的输入电压一直为高(低)电平。当输入信号不确定(即悬空时有电磁干扰),才会将GPIO口的电压值拉高(低)。至于为什么是这样?我想隔离的概念应该能很好的解释。

我们来举个列子:

    在做压电陶瓷驱动电源的一个项目中,控制芯片选的是STM32f103zet6,通过一个选择开关对其实现内外部控制的转换,外部输入是通过一个信号发生器产生方波,显然当选择开关打到外部控制时,GPIO口与外部信号发生器电路相连,选择内部控制时,拨动选择开关,让GPIO引脚悬空。这时候问题来了,引脚悬空电压能否稳定的一直保持高电平(或低电平)呢???这个问题的根据芯片的工作环境来判断。我的做法是,将GPIO口配置为上(下)拉输入。这样引脚悬空时,电平就能保持稳定高(低)电平。

下面做下补充:

对于常见的ARM处理器,它们的GPIO口基本上可以配置为输入模式、输出模式、开漏或推挽模式。

下面讲讲开漏和推挽模式:

STM32 GPIO电路图如下:


GPIO口配置为输出时:开漏输出不接上拉电阻只能输出低电平。

    开漏模式:输出 0 时,N-MOS 被设置为导通,P-MOS 设置为未激活,输出0。

              输出 1 时,N-MOS 设置为高阻, P-MOS 设置为未激活,输出1(此时需要外部上拉电路将电平拉高,否则输出电平不确定);

    推挽模式:输出 0 时,N-MOS 设置为导通,P-MOS 设置为高阻,输出0。

              输出 1 时,N-MOS 设置为高阻,P-MOS 设置为导通,输出1(此时不需要外部上拉电路)。


                                   开漏输出原理图(内部集成了上拉电阻)

常见的GPIO的模式可以配置为open-drain或push-pull,具体实现上,常为通过配置对应的寄存器的某些位来配置为open-drain或是push-pull。当我们通过CPU去设置那些GPIO的配置寄存器的某位(bit)的时候,其GPIO硬件IC内部的实现是,会去打开或关闭对应的top transistor。相应地,如果设置为了open-d模式的话,是需要上拉电阻才能实现,也能够输出高电平的。因此,如果硬件内部(internal)本身包含了对应的上拉电阻的话,此时会去关闭或打开对应的上拉电阻。如果GPIO硬件IC内部没有对应的上拉电阻的话,那么你的硬件电路中,必须自己提供对应的外部(external)的上拉电阻。而push-pull输出的优势是速度快,因为线路(line)是以两种方式驱动的。而带了上拉电阻的线路,即使以最快的速度去提升电压,最快也要一个常量的R×C的时间。其中R是电阻,C是寄生电容(parasitic capacitance),包括了pin脚的电容和板子的电容。但是,push-pull相对的缺点是往往需要消耗更多的电流,即功耗相对大。而open-drain所消耗的电流相对较小,由电阻R所限制,而R不能太小,因为当输出为低电平的时候,需要sink更低的transistor,这意味着更高的功耗。

嵌入式学习交流群:561213221

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

电子展览展会专区

芯片求购|供应发布区