demi 发布于:周四, 09/26/2019 - 10:38 ,关键词:
引言
我在学习STM32芯片的GPIO模块时对一些细节感到困惑,Demystifying Microcontroller GPIO Settings这篇文章几乎解答了我所有的疑问。因此将它翻译出来,希望对大家有帮助。
写单片机软件的人都会配置和管理通用输入输出口(GPIO)的引脚。表面上看,GPIO配置非常简单:引脚是输入或输出,是高电平或低电平。但是,你不可避免地会碰到配置选项很多的芯片,或者电子工程师会问一些你不懂的引脚配置(比如将某条线设置成高阻态)。本文会帮助你理解现代单片机上不同的引脚配置。
背景知识
在学习引脚配置之前,先要弄懂一些和GPIO、IO信号有关的描述和名词。
大多数现代GPIO线路都实现成一个三态缓冲器(tri-state buffer)。这表明这些GPIO线路可以有三个状态:
1. 逻辑低电平(和GND相连)
2. 逻辑高电平(和VCC相连)
3. 高阻抗,也称为“悬空”(floating)、高阻(Hi-Z)和三态(tri-stated)
如果某条线路是高阻抗(High-impedance)状态,那么它实际上就从电路中移除了。这使得多个电路或设备能够共用输出线路,就可以实现通信总线(communication buses)。在需要高阻抗的场合但没能使用高阻态会导致I/O争用(I/O contention)和短路(short-circuit)。
如果信号的状态不确定,则称为悬空(Floating),表示它没有连接到VCC或GND。该信号的电压会“悬空”,和残余电压匹配