上/下拉电阻对GPIO的影响

2023-11-13

                                                    疯雨-版权所有,转载请注明【http://blog.csdn.net/u010346967】

本人菜鸟一枚,有错误的话欢迎指正。

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,这意味着更高的功耗。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上/下拉电阻对GPIO的影响 的相关文章

随机推荐

  • 如何调试VUE代码(VUE调试利器 vue devtools)

    前言 最新想开发一个前后端分离的项目 一直想开始的 拖延了好久终于决定要对它下手了 最早的时候开发的时候使用的还是JSP 那个时候使用的还是EL表达式 后来切换到Spring和SpringMVC之后采用的是HTML JS的all in on
  • python单元测试框架(继承、unittest参数化、断言、测试报告)

    一 继承 继承能解决什么问题 unittest每个模块都要用到前提条件以及清理 如果有上百个模块 我们要改域名和浏览器 就会工作量很大特别麻烦 这时我们可以用继承的思想只用改一次 我们可以将前提和清理提出来单独放到一个文件里 具体代码如下
  • 图论:Dijkstra算法——最详细的分析,图文并茂,一次看懂!

    文章目录 1 Dijkstra算法简介 2 算法实现范例 3 邻接矩阵 4 Dijkstra 算法的 C 描述 5 Dijkstra 算法的 Matlab 描述 6 温故知新 1 Dijkstra算法简介 背景 迪杰斯特拉算法 Dijkst
  • Java中double类型大小比较的五种方法

    文章目录 1 使用BigDecimal 2 使用包装类Double 3 在误差范围内运行相等 4 转换成字符串 5 使用doubleToLongBits 方法 在Java中 int类型数据的大小比较可以使用双等号 double类型则不能使用
  • 设置SSH密钥对的必要性

    SSH介绍 SSH 为 Secure Shell 的缩写 由 IETF 的网络小组 Network Working Group 所制定 SSH 为建立在应用层基础上的安全协议 SSH 是较可靠 专为远程登录会话和其他网络服务提供安全性的协议
  • golang加载双向认证加密的证书key文件

    证书的key是可以加密保存的 我们需要进行解密加载 func MyLoadX509KeyPair certFile keyFile password string tls Certificate error certPEMByte err
  • 开放API接口或URL链接给第三方使用

    使用场景 场景1 应用做到一定程度后 会有一些第三方用户或机构要对接部分的功能进入他们自己的应用 比如 要通过URL的方式提供一个含有加密视频文件的H5页面给第三方使用 实现思路 1 后台管理系统给不同的第三方开权限 分别提供AppID和A
  • 学习率衰减

    在训练深度神经网络时 通常会随着训练的进行降低学习率 这可以通过使用预定义的学习率计划或自适应学习率方法来完成 学习率表 学习率时间表旨在根据预先定义的时间表降低学习率 从而在训练过程中调整学习率 常见的学习率时间表包括基于时间的衰减 逐步
  • AES算法的CBC和ECB模式!——密钥加密

    一 AES算法 AES Advanced Encryption Standard 是一种对称密钥加密算法 AES算法采用分组密码的方式 将明文划分成固定长度的数据块 对每个数据块进行加密 最终得到密文 AES算法的密钥长度可以为128位 1
  • 利用Netty构建自定义协议的通信

    在复杂的网络世界中 各种应用之间通信需要依赖各种各样的协议 比如 HTTP Telnet FTP SMTP等等 在开发过程中 有时候我们需要构建一些适应自己业务的应用层协议 Netty作为一个非常优秀的网络通信框架 可以帮助我们完成自定义协
  • 【Linux + 安装库】Ubuntu18.4.0下安装gmp+ntl+crytpo++库的相关操作

    一 装Ubuntu 1 虚拟机下装好的ubuntu系统安装编译器 首先需要添加源 代码 sudo add apt repository ppa ubuntu toolchain r test 2 添加源之后 安装编译器 gcc安装 sudo
  • Spring Boot 学习研究笔记(十二)Dcoker 中部署SpringBoot jar包

    Linux Centos8 使用 DOCKER 部署JAR包 1 进入项目根目录 cd project 2 创建存放jar包的目录 mkdir springboot test 3 进入 project springboot test 编写D
  • 软件调试之堆和堆检查

    当用户启动一个程序时 系统会将程序文件从外部存储器 硬盘等 加载到内存中 当程序工作时 需要使用内存空间来放置代码和数据 在使用一段内存之前 程序需要以某种方式 API或库函数 发出申请 接受到申请的一方 内存管理器或C运行库 根据申请者的
  • 【Ansible自动化运维实战】使用ansible批量部署开机启动时为字符界面

    Ansible自动化运维实战 使用ansible批量部署开机启动时为字符界面 一 查看当前启动默认的引导目标 二 编辑playbook 三 测试playbook语法 四 运行playbook 五 测试结果 一 查看当前启动默认的引导目标 a
  • 【信息技术】【2018.01】射频功率放大器的行为建模与数字预失真

    本文为奥地利格拉茨技术大学的博士论文 共147页 数字无线发射机中的射频功率放大器 RF PA 是关系到能量消耗和信号质量的关键部件 特别是由于当今宽带多载波调制方法产生的信号峰均比很高 很难构建出能量效率高 满足标准严格线性要求的射频功率
  • 自己动手写basic解释器(一)

    自己动手写basic解释器 刺猬 http blog csdn net littlehedgehog 注 文章basic解释源码摘自梁肇新先生的 编程高手箴言 据他所说这个代码也是网上摘录的 源码解读参考 java编程艺术 java编程艺术
  • 禁止显示状态 错误 LNK1104 无法打开文件“boost_thread-vc142-mt-gd-x64-1_79.lib”

    系列文章目录 文章目录 系列文章目录 前言 一 问题原因 二 解决办法 1 更改vs2019项目配置 2 第二种方法 前言 别人写的工程用vs2019加载 报错如下 一个错误 LNK1104 无法打开文件 boost thread vc14
  • Qt的各版本直接下载地址

    此文章转载自 http blog csdn net piaopiaolanghua article details 53153363 1 http download qt io archive qt 2 http ftp vim org l
  • spark机器学习笔记:设计机器学习系统

    感想 这是一篇机器学习通俗的讲解 我觉得讲得蛮好 特别是我们在设计机器学习系统的时候该怎么做 不是只设计一个机器学习算法就完了 还有很多的事情要做 本文对数据预处理归纳的挺全的 因为从用户获取的数据 不能直接用于机器学习模型的 中间还需要经
  • 上/下拉电阻对GPIO的影响

    疯雨 版权所有 转载请注明 http blog csdn net u010346967 本人菜鸟一枚 有错误的话欢迎指正 1 什么是上 下拉电阻 上拉就是将不确定的信号通过一个电阻嵌位在高电平 电阻同时起限流作用 下拉同理 上拉是对器件注入