我一直在 [徒劳地] 寻找一些好的链接/资源来帮助理解 GPIO 以及它们为什么用于嵌入式系统。谁能指点我一些?
4 回答
在任何有用的系统中,CPU 都必须有某种方式与外界交互——无论是呈现给用户的灯光或声音,还是用于与系统其他部分通信的电信号。GPIO(通用输入/输出)引脚可以让您从 CPU 外部为程序获取输入或向用户提供输出。
GPIO 作为输入的一些用途:
- 检测按钮按下
- 接收来自外部设备的中断请求
GPIO 作为输出的一些用途:
- 闪烁一个 LED
- 发出蜂鸣声
- 控制外部设备的电源
双向 GPIO 或一组 GPIO 的一个很好的例子是“bit-bang”您的 SoC 本身不提供的协议。例如,您可以推出自己的 SPI 或 I 2 C 接口。
您找不到答案的原因可能是因为如果您知道嵌入式系统是什么,做什么,或者确实知道有关数字电子系统的任何事情,那么答案就太明显了,无法写下来!也就是说,如果你真正实现了一个可以工作的嵌入式系统,你应该已经知道它们是什么。
GPIO 引脚至少是两个状态的数字逻辑 I/O。在大多数情况下,它们中的一些或全部也可能是中断源。这些中断可能具有上升、下降、双边沿或电平触发选项。
在某些目标上,GPIO 引脚可能具有可配置的输出电路,例如允许省略外部上拉,或允许连接到需要集电极开路输出的设备,在某些情况下甚至提供高频噪声过滤和故障。
在大多数嵌入式系统中,处理器最终将负责检测各种设备的状态,这些设备将外部刺激转换为数字电平逻辑电压(例如,当按下按钮时,引脚将变为低电平;否则它将变为高电平),以及控制将逻辑电平电压直接转化为动作的设备(例如,当引脚为高电平时,灯会亮起;当引脚为低电平时,灯会熄灭)。过去,处理器没有通用 I/O,而是必须使用共享总线与可以处理 I/O 请求并设置或报告外部电路状态的设备通信。尽管这种方法并非完全没有优势(一个处理器可以监视或控制共享总线上的数千个电路),但它在许多实际应用中并不方便。
虽然处理器可以使用四线 SPI 总线甚至两线 I2C 总线来控制任意数量的输入和输出,但在许多情况下,处理器需要监控或控制的信号数量足够少,以至于直接在芯片本身上简单地包含用于监视或控制某些信号的电路会更容易。尽管专用接口硬件通常具有仅输出或仅输入引脚(选择硬件接口芯片的人会知道需要监视多少信号,以及需要控制多少信号),但可以使用特定系列的处理器在某些需要 4 个输入和 28 个输出的应用中,以及需要 28 个输入和 4 个输出的其他应用中。
我认为你有它倒退。GPIO 是电子产品中的默认设置。它是一个可以编程的引脚,一个信号。一切都是由这些组成的。对于处理器,专用外围设备是一种特殊情况,当您知道您需要更有限的功能时,它们是额外的。
从芯片制造商的角度来看,您通常不确切知道用户需要什么,因此您无法在芯片上制造精确的外围设备。你做的是通用的。许多应用非常罕见,以至于没有特定芯片的市场。您唯一能做的就是使用 GPIO 或自己制作特定的硬件。此外,所有(未使用或可能未使用的)引脚都值得变成 GPIO,因为这使该部件更加通用和可重用。通用和可重复使用几乎是可编程芯片的重点,否则你只会制造 ASIC。
一些特别适合的应用:
- 重置系统中的部件(芯片)
- 与开关、键盘、灯的接口(它们只有一个引脚/信号!)
- 用继电器或半导体开关控制负载(通断)
- 电磁铁、马达、加热器、阀门……
- 从单个信号中获取中断
- 温控器、限位开关、液位检测器、报警装置...
顺便说一句,视差螺旋桨几乎只有 GPIO 引脚。外围设备是用软件制造的。它适用于许多用途。