ARM32开发--GPIO输入模式

知不足而奋进 望远山而前行


目录

文章目录

前言

浮空输入

上拉输入

下拉输入

模拟输入

总结


前言

在数字电路设计和嵌入式系统开发中,理解输入信号的处理方式对确保系统稳定性和可靠性至关重要。不同的输入处理方式包括上拉输入、下拉输入、浮空输入和模拟输入,它们在不同场景下具有各自的应用特点和作用。而TTL施密特触发器则是常用于去除噪声和提供稳定输出信号的重要元件。通过适当选择和配置输入方式,可以有效地管理输入信号的稳定性和准确性,使系统在各种情况下都能正常工作。


上图为GPIO输入的基本示意图,其中包含了上拉电路,下拉电路,模拟信号处理,数字逻辑信号接收。

TTL(Transistor-Transistor Logic)施密特触发器是一种数字电路元件,常用于去除输入信号的噪声和抖动,并提供稳定的输出信号。它的作用在于消除输入信号的不稳定性,确保在输入信号发生变化时,输出信号能够产生可靠的、干净的转换。

TTL施密特触发器的主要作用有以下几个方面:

  1. 消除噪声和抖动:在数字电路中,输入信号可能受到噪声的干扰或产生抖动(快速的信号变化)。这可能导致触发器在边沿变化时产生不稳定的输出。TTL施密特触发器使用了一个双阈值比较器,只有当输入信号超过一定的阈值范围时,才会引发输出状态变化。这样可以防止在噪声或抖动情况下触发误动作。
  2. 提供干净的信号转换:TTL施密特触发器能够确保输入信号的干净转换,即使输入信号存在一些不稳定性或较慢的上升/下降时间。它的阈值范围内,输入信号的微小变化都不会引起输出变化,从而产生更加可靠的输出信号。
  3. 信号整形:TTL施密特触发器可用于整形输入信号的波形。如果输入信号具有不规则的上升和下降时间,触发器可以将其整形为规整的方波信号,以便后续电路处理。
  4. 边沿检测器:由于TTL施密特触发器对输入信号的变化非常敏感,它常被用作边沿检测器。当输入信号的上升沿或下降沿发生变化时,触发器可以产生输出脉冲,用于触发其他数字电路中的特定操作。

总之,我们简单的理解就是,输入的电压值被转化为了逻辑的0和1.

浮空输入

浮空输入,就是将模拟信号,上拉,下拉全部断开。只接收外部电路的输入信号。

这里会存在一个问题,如果外部没有输入信号,那么这个逻辑信号是未知的,不确定的。

上拉输入

上拉输入,就是将模拟信号,下拉全部断开,同时将上拉开关闭合。然后接收外部电路的输入信号。

此时如果外部引脚不接任何VCC或GND,等同于接了空气(电阻无限大),那么测试引脚得到的电压也就等同于VCC,即起到了VCC上拉到高电平的作用。

当外部输入高电平时,如下图:

当外部接入地时,如下图:

上拉输入的一些总结:

当输入信号未连接时,上拉电阻将确保输入信号保持在高电平状态,从而避免浮空输入。

当外部信号连接到输入引脚时,外部信号为GND时,寄存器得到的电平也是低电平。

下拉输入

下拉输入,就是将模拟信号,上拉全部断开,同时将下拉开关闭合。然后接收外部电路的输入信号。

当外部输入高电平时,如下图:

当外部接入地时,如下图:

下拉输入的一些总结:

当输入信号未连接时,下拉电阻将确保输入信号保持在低电平状态,从而避免浮空输入。当外部信号连接到输入引脚时,外部信号可以通过下拉电阻的电流被拉高到高电平。

模拟输入

模拟输入的内部结构如上图。

在真实的物理世界中,我们外部输入的是电压值,这个属于模拟信号。其他的几种输入就是把模拟信号变为逻辑的0和1。通常输入的电压在1v以下我们认为是逻辑的0,1v以上是逻辑的1。(不同的芯片处理信号方式不同,这里简单的举例为1v上下)。

模拟输入的是物理世界中的真实电压,模拟信号的处理不同与逻辑电路的转换,逻辑转换只有两种值。模拟信号则是线性的值,电压多大,就转换一个数字值,也就是将物理世界中的模拟数据转换为数字值,这个值是线性,有范围的。


总结

不同的输入处理方式(上拉输入、下拉输入、浮空输入、模拟输入)在数字电路设计中扮演着重要角色,用于管理外部信号传输和处理。上拉输入和下拉输入通过内部电阻的设置来确保输入信号的稳定性,避免浮空输入导致的不确定性。浮空输入允许系统接收外部电路的信号,但存在着未知逻辑状态的风险。模拟输入则是将真实世界中的模拟信号转换为数字值的重要环节,在处理各种物理电压值时具有线性和范围性的特点。而TTL施密特触发器在消除噪声、提供稳定输出、信号整形和边沿检测等方面发挥着关键作用,帮助确保系统输入信号的可靠性和准确性。深入理解和运用这些输入处理方式,将有助于优化电路设计和提升系统性能。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 10:52:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 10:52:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 10:52:05       87 阅读
  4. Python语言-面向对象

    2024-06-07 10:52:05       96 阅读

热门阅读

  1. PyTorch学习(12):PyTorch的张量相乘(torch.matmul)

    2024-06-07 10:52:05       29 阅读
  2. MySQL入门学习-内置函数.时间日期函数

    2024-06-07 10:52:05       27 阅读
  3. 个人投资理财入门

    2024-06-07 10:52:05       26 阅读
  4. Vue3 响应式API:高级函数(二)

    2024-06-07 10:52:05       25 阅读