详解什么是单片机中的高阻态
扫描二维码
随时随地手机看文章
单片机中的高阻态是指某个引脚既不是高电平也不是低电平,而是处于一种悬浮状态。在这种状态下,引脚的电压不确定,需要外部电路提供确定的电平。
高阻态的定义和特性
高阻态是指电路中的一种状态,当某个引脚输出高阻态时,意味着该引脚既不是高电平也不是低电平,而是处于一种悬浮状态。在高阻态下,引脚的电压不确定,不会主动驱动任何电平,相当于在电路中没有连接。此外,高阻态引脚表现为高阻抗,相当于一个非常高的电阻,与电路隔离开来,不会影响该引脚的状态,也不会有电流流入或流出这个引脚。
高阻态在单片机中的作用
防止电平冲突:在高阻态下,单片机的输入/输出端口可以防止电平冲突。当端口处于高阻态时,即使其他电路发生电平冲突,也不会对单片机产生影响。
信号隔离:高阻态引脚能够感知外部信号的电压变化,因此能够被高电平信号拉高到逻辑“1”。这个特性使得高阻态输入在许多数字电路中非常重要,能够实现有效的信号隔离和稳定的状态检测2。
多路复用器的应用:在高阻态下,多路复用器的某个通道既不传递信号也不接收信号,而是处于悬浮状态。这使得该通道可以用于传输其他通道的信号。
高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平。
如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。
相比于五伏输出,高阻态的特征是输出管脚处于三态,输出阻抗变得较高,接近于无穷大。这种状态通常用于实现双向传输,即可以接收外部输入信号,也可以向外部输出信号。高阻态的优点是在输出状态下功耗非常低,可以有效提高系统的功耗效率。
高阻态特性:
外部输入不会影响该引脚状态,但可以检测信号:
1、高阻态引脚表现为高阻抗,相当于一个非常高的电阻,与电路隔离开来。所以,当你在高阻态引脚上加上高电平(比如通过外部拉高信号),它不会影响该引脚的状态,也不会有电流流入或流出这个引脚。
2、尽管引脚处于高阻态,单片机仍然可以将其配置为输入模式。在这种情况下,引脚会检测到高电平,并可以在代码中读取这个高电平信号。因此,即使引脚在高阻态,它仍然可以检测到外部加上的高电平(或低电平)信号。
高阻态的实质
电路分析时高阻态可做开路理解,你可以把它看作输出(输入)电阻非常大。它的极限可以认为悬空,也就是说理论上高阻态不是悬空,它是对地或对电源电阻极大的状态。而实际应用上与引脚的悬空几乎是一样的。
高阻态的意义
当门电路的输出上拉管导通而下拉管截止时,输出为高电平,反之就是低电平。如果当上拉管和下拉管都截止时,输出端就相当于浮空(没有电流流动),其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制 。
典型应用
在总线连接的结构上。总线上挂有多个设备,设备于总线以高阻的形式连接。这样在设备不占用总线时自动释放总线,以方便其他设备获得总线的使用权。
大部分单片机I/O使用时都可以设置为高阻输入。高阻输入可以认为输入电阻是无穷大的,认为I/O对前级影响极小,而且不产生电流(不衰减),而且在一定程度上也增加了芯片的抗电压冲击能力。
高阻态常用表示方法:高阻态常用字母 Z 表示。
在一个系统中或在一个整体中,我们往往定义了一些参考点,就像我们常常说的海平面,在单片中也是如此,我们无论说是高电平还是低电平都是相对来说的。明确了这一点对这一问题可能容易理解。
在单片机(微控制器)中,高阻态(High-Z,High Impedance State)是指引脚的电气特性类似于没有连接状态,即该引脚的电流非常小,几乎不对电路产生影响。具体来说,高阻态具有以下几个特点:
高阻态的特点
输入状态:
引脚不驱动任何电平(高电平或低电平),相当于引脚在电路中没有连接。此时,电路中的电流几乎为零。
无干扰:
高阻态的引脚不会对其他电路产生电气干扰或影响。它在逻辑上“断开”了与电路的连接,避免了任何潜在的短路或电气冲突。
可由外部电路控制:
处于高阻态的引脚允许外部电路(如外部信号源或其他电路)对其进行控制或读取。因为引脚没有固定的输出电平,它能够接收来自外部电路的输入信号。
高阻态的应用
多路复用(MUX):
在需要将多个信号源连接到同一个引脚时,高阻态非常有用。通过将不需要的信号源的引脚设置为高阻态,可以避免对选定信号源的干扰。
总线驱动:
在总线系统中,高阻态的引脚可以防止多个设备同时驱动总线,从而避免总线上的信号冲突。只有被选中的设备会驱动总线,其他设备将其引脚设置为高阻态。
模拟输入:
在一些模拟应用中,模拟输入引脚在不需要驱动电流时可以设置为高阻态,以减少对模拟信号的影响。
实际示例
以单片机的 GPIO(通用输入输出)引脚为例,当一个引脚配置为高阻态时:
如果该引脚在之前被配置为推挽输出(驱动高电平或低电平),将其设置为高阻态后,它不再驱动任何电平,相当于该引脚的输出被“断开”。
如果该引脚在之前被配置为输入模式,设置为高阻态与输入模式类似,允许外部电路连接到此引脚,并能够读取外部信号。
单片机IO口的双向性及其高阻态解析
单片机的IO口,即输入输出端口,具有双向性,既能用于输入也能用于输出。在推挽输出模式下,IO口能够通过内部上下MOS管的切换来输出高低电平。然而,当IO口处于高阻态输入时,其内部上下MOS管均处于关闭状态,此时IO口便进入高阻态的输入模式。那么,究竟什么是高阻态呢?让我们通过一张常见的IO内部框图来进一步了解。

当IO口处于高阻态时,我们通常也将其称为浮空输入状态。在这一状态下,IO口的电平呈现不确定性,即它既不固定为高电平也不固定为低电平。为了帮助理解,我们可以想象单片机在检测IO口电平时,CPU内部仿佛接有一个高内阻的电压表,其内阻值假设为100MΩ(具体示意可参考相关电路图)。这个电压表的内阻,在此情境下,我们可以称之为该IO口在高阻态下的输入电阻。
现在,我们设想一个场景:如果不慎用手触碰了IO端口,由于人体具有较高的阻值,同时周围存在电磁波干扰,手上可能产生微弱的电流。这样的情况下,电压表的读数会出现变化,进而影响单片机读取的电平高低。高阻态的特性使得轻微的干扰都可能导致读取的电平发生波动,甚至在没有触碰IO口的情况下,每次读取的结果也可能截然不同,这主要是因为外界的电磁波等会对IO口造成干扰。当IO口输入端未使用时,可以通过电阻将其单独连接到VDD或VSS。
那么,为什么双向IO口在输入时要求处于高阻态呢?我们可以通过一个假设的输入设备来解释这一现象。该设备的等效电路如下:其内部开关的切换会输出高低电平给单片机的IO口,而IO口通过引脚内部的电压表可以检测出输入的是高电平还是低电平。但值得注意的是,这种设备的驱动能力较弱,甚至无法驱动LED。设备中的100kΩ电阻,可以视为设备的输出电阻(或输出阻抗)。
如果我们采用内部上拉的方式来进行输入检测,将设备设置为输出低电平,并将其与单片机的IO口相连,情况会如何呢?在这种配置下,5V电压会经过IO口内部的10kΩ上拉电阻,流经IO口,再经过装置内部的100kΩ电阻,并通过开关接地。根据分压原理,IO口所测得的电压值约为55V,导致单片机误读为高电平。然而,实际上,设备试图输出的是低电平来通知单片机。这种情况下,单片机的管脚虽作为输入功能,却意外地改变了外界装置的输出值,仿佛单片机的IO口也在主动输出信号。
若我们将单片机的IO口设置为高阻态,并确保无外接上下拉电阻,则其内部的两个MOS管将处于断开状态,对外部电路呈现高阻抗。在此状态下,装置输出的电平能够被单片机准确读取,这得益于设备输出电阻低于单片机的IO口输入电阻。或许有人会设想,若将设备中的电阻增至1000MΩ,单片机可能无法准确读取电平。但通常,我们无需考虑如此极端的情形。理想状态下,高阻态的输入阻抗应视为无穷大,这类似于超导体的特性。在实际应用中,导线电阻通常被视为极小,因此高阻态输入电阻也被认为是无穷大。