ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

嵌入式:深刻理解GPIO的上拉输入、下拉输入、浮空输入、模拟输入

嵌入式:深刻理解GPIO的上拉输入、下拉输入、浮空输入、模拟输入 前言文章以STM32F103ZET6芯片为例来介绍建议观看了上一篇文章之后再来看这篇直接看这篇也是可以的。一、输入部分电路单独抽出输入部分MCU内部理解输入电路✨关于输入GPIOx 常用的输入模式一共有四种上拉输入下拉输入浮空输入模拟输入简化电路这里把片上外设去掉进一步简化电路二、上拉与下拉电阻上拉电阻 为特定电路提供缺省高电压相对的还有一个下拉电阻理论和上拉电阻类似总结一句话为特定电路提供缺省低电压唯一需要强调的是输入这里的上拉电阻和下拉电阻属于 MCU 内部GPIO 模块内部自带的和输出开漏那里的外部上拉电阻在位置上不同但是功能是类似的。三、TTL 施密特触发器常识我们现实生活中的信息整体其实就分为两类一类是可以量化的状态有限的信息。如电梯门有没有关好汽车安全带有没有系好共享单车有没有锁好手机有没有调到静音门铃有没有被摁下等等我们把类似这种信息叫做数字信息。另一类是连续可变的随时间变化可以取无穷个值的信息。如洗澡水的冷热手机剩余电量奶茶店背景音乐的音量早高峰地铁的拥挤程度骑自行车的快慢吹风机出风口的风力大小等等我们把这类信息叫做模拟信息。随着人类进入了信息时代各种计算机单片机层出不穷但归根结底这些设备都是为人服务的。为了给你更好的服务计算机 / 单片机就必须获取人 / 世界的信息获取你的位置信息为你提供打车服务获取你的搜索信息给你提供搜索服务获取你的体温、心跳信息给你提供健康检查空调获取房间温度为你自动调节温度等等换句话说计算机 / 单片机必须要能处理数字信息和模拟信息。为了让你的计算机 / 单片机能处理数字信息、模拟信息硬件工程师科学家们发明了各种硬件电路同时也产生了大量的知识为了培养更多的工程师科学家于是所有的高校便开了两门课程《数字电路》和《模拟电路》很明显这两门课是教我们在计算机世界处理人类和世界的两种信息的数字信息和模拟信息所以施密特触发器就是进行信息处理一个硬件单元。TTL 施密特触发器全称是: Transistor‑Transistor Logic Schmitt Trigger晶体管‑晶体管逻辑施密特触发器。它的核心作用是抗噪整形把抖动、毛刺、斜坡等不可靠的输入波形整形成规则的方波。所谓的方波在硬件上是方波在软件上就是 0 / 1本质是数字信息当 MCU 某一个引脚要进行输入的时候因为外部因素的干扰输入信息不一定是规整的输入信息输入的信息可能是如果没有 TTL 施密特触发器那么输入信息就可能在 01 之间反复横跳如果存在 TTL 施密特触发器当这类信息输入到引脚传递到 TTL 施密特触发器输入波形就会被整形成规则的方波这个工作是 TTL 施密特触发器的核心作用。TTL 施密特触发器的硬件电路内部具有整形模块规定出正向阈值电压 VT和负向阈值电压 VT‑从而限定一个迟滞区域要求01 跳变不能在一个临界值上下跳转而是 必须穿越区域才能发生跳转。下面见详细解释正负阈值电压设定迟滞区域确保输入必须越过 VT 才触发高电平低于 VT‑ 才返回低电平防止噪声误触发迟滞区域迟滞区域的作用是通过设定不同的切换阈值防止输入微小波动导致输出频繁跳变从而增强系统的稳定性。迟滞区域的本质理解输入抖动在迟滞区内时输出保持上次状态不变避免误跳变如果在正向阈值电压或者负向阈值电压附近来回跳转呢以正向阈值电压为例在此位置跳转只有两种情况高于正向阈值电压 VT就应该是高电平在迟滞区域以内输入抖动在迟滞区内时输出保持上次状态不变避免误跳变你在正向阈值电压 VT 附近进行跳转那么最近一次状态就一定是高电平喽继续维持高电平不变负向阈值电压附近来回跳转同理⭐结论如果在正向阈值电压或者负向阈值附近来回跳转维持最近状态不变。这样就有效剔除了输入信息突变输入信息中包含毛刺的问题当然这里所有的工作全部都是在 TTL 施密特触发器内部自动完成的使用者可以不关心。四、上拉输入 (Pull‑up Input)1. 上拉输入是什么上拉输入就是 MCU 内部配置了上拉电阻所谓配置上拉电阻本质就是闭合上拉电阻开关断开下拉电阻开关开关在 MCU 内部可以通过 MCU 提供的配置寄存器选择闭合还是断开某一个开关后续讨论就去掉下拉部分了。2. 上拉输入的过程2.1输入高电平当引脚输入高电平GPIO 就收到高电平输入数据寄存器内部就读入 12.2 输入低电平当引脚输入低电平GPIO 就收到低电平输入数据寄存器内部就读入 0❓上拉输入的时候输入低电平上拉电阻不会把电平拉高吗不会本质就是谁更 强 的问题详见下文两个根本问题2.3 输入引脚悬空当引脚没有接入任何设备即和外部断开在上拉电阻的拉动下输入数据寄存器默认读到的就是 1所以上拉模式本质是提供了输入数据的缺省值为什么上拉输入中需要上拉电阻因为有了上拉输入就可以让芯片在无外接输入时输入数据寄存器默认读到 1输入数据默认就是高电平1。五、下拉输入 (Pull-down Input)1. 下拉输入是什么下拉输入就是 MCU 内部配置了下拉电阻所谓配置下拉电阻本质就是闭合下拉电阻开关断开上拉电阻开关开关在 MCU 内部可以通过 MCU 提供的配置寄存器选择闭合还是断开某一个开关后续讨论就去掉上拉部分了。2. 下拉输入的过程2.1 输入高电平当引脚输入高电平GPIO 就收到高电平输入数据寄存器内部就读入 1❓下拉输入的时候输入高电平下拉电阻不会把电平拉低吗不会其实本质就是谁更 强 的问题详见下文两个根本问题2.2 输入低电平当引脚输入低电平 GPIO 就收到低电平输入数据寄存器内部就读入 02.3 输入引脚悬空当引脚没有接入任何设备即和外部断开在下拉电阻的拉动下输入数据寄存器默认读到的就是 0所以下拉模式本质是提供了输入数据的缺省值因为有了输入缺省值所以下拉输入模式下无论输入引脚是什么情况输入数据寄存器内部的数据是确定的✨ 为什么下拉输入中需要下拉电阻提供输入确定性让缺省输入是低电平0六、两个根本问题无论是上拉还是下拉我们有两个问题其实并没有清楚回答上拉输入的时候输入低电平上拉电阻不会把电平拉高吗下拉输入的时候输入高电平下拉电阻不会把电平拉低吗这两个问题其实原理上是同一种问题。要理解这点需要知道两点无论是上拉电阻还是下拉电阻阻值在单片机内部都属于高阻值器件阻值一般都高达 30kΩ~50kΩ欧姆定律 V I * R在计算电压角度计算的是对应设备在整个电路中承担的电压差即经过该设备电压会下降多少解决问题一上拉输入的时候输入低电平上拉电阻不会把电平拉高吗输入低电平是一种说法在单片机内部可以理解为就是通过接地实现引脚输入低电平的那么其实内部上拉电阻和外部接地就形成了一个通路引脚就是导线电阻忽略不计那么这个通路中唯一的一个需要承压的器件就是上拉电阻那么上拉电阻两端的压差就是 VDD等效电路如下上拉电阻自身承压就是位置 1‑位置 2 就是电流经过该设备对应的压降位置 1 电压 VDD位置 2 电压 0V (低电压)✨ 所以上拉输入的时候输入低电平上拉电阻不会把电平拉高吗不会形成通路之后位置 2 电压就是 0V低电平不受上拉电阻的影响解决问题二下拉输入的时候输入高电平下拉电阻不会把电平拉低吗输入高电平只是一种说法在单片机内部你可以理解成为就是通过接电源 VDD 实现引脚输入高电平的那么其实内部下拉电阻和外部电源 VDD就形成了一个通路引脚就是导线电阻忽略不计那么这个通路中唯一的一个需要承压的器件就是下拉电阻那么下拉电阻两端的压差就是 VDD⭐ 下拉输入的时候输入高电平下拉电阻不会把电平拉低吗不会形成通路之后位置 1 电压就是 VDD高电平不受下拉电阻的影响输入上拉、输入下拉总结表引脚高电平引脚低电平引脚悬空 (默认输入值)输入上拉101输入下拉100七、弱上拉弱下拉MCU 内部的上下拉电阻之所以被称为 “弱”是因为其阻值较大通常在几十 kΩ导致其提供的电流非常小从而对外部信号的控制力比较 “弱”。八、浮空输入 (Floating Input)1. 浮空输入是什么浮空输入就是 MCU 内部配置上下拉电阻都断开本质就是断开下拉电阻开关断开上拉电阻开关开关在 MCU 内部可以通过 MCU 提供的配置寄存器选择闭合还是断开某一个开关后面我们讨论的时候就省略掉上下拉电阻了2. 浮空输入的过程浮空输入就是 MCU 内部没有配置上拉 和下拉电阻可以等效如下⭐ 浮空输入一共会有三种情况当引脚输入高电平GPIO 就收到高电平输入数据寄存器内部就读入 1当引脚输入低电平GPIO 就收到低电平输入数据寄存器内部就读入 0当引脚悬空干扰信号经过触发器后就会变成随机的高低电平因此浮空输入模式下电平高、低是不确定的。电源线、人体、手机、电机、开关电源、甚至手靠近导线都会产生交变电场。附近的 WiFi、蓝牙、对讲机、电机、继电器等会辐射高频电磁波浮空输入引脚断开引脚就和一个接受天线一样接受外部的电磁干扰。九、模拟输入 (Analog Input)1. 模拟输入是什么要谈清楚模拟输入是什么就必须再回到之前聊的 GPIO 输入的整体结构图先不管模拟输入中的 “模拟” 二字是什么先从电路角度我们可以看到物理上模拟输入硬件电路等效于一根导线当然我们不能只看到模拟输入的物理电路结构是一根导线更要看到模拟输入没有用 TTL 施密特触发器即不要给我做信号整形我就要原汁原味。⭐ 模拟输入理解第一层引脚外部是什么模拟输入就获取什么2. 模拟信号与模拟信号处理模块模拟信号是什么我们在之前的内容已经渗透过后续章节我们会陆续展开深入研究不管怎么样在 MCU 内部一定会有专门处理模拟信号的片上外设虽然我们不知道是什么但是并不妨碍我们进一步完善对 MCU 内部模块构成的进一步认识常见的未来处理模拟信号的片上外设设有ADCDAC 等信号小知识模拟信号在时间与幅度上均连续变化的物理量物理世界本质是连续的。数字信号在时间与幅度上均离散化的信号将连续的物理量量化为离散的数据量。
返回列表