打印
[经验分享]

GPIO实现硬件原理

[复制链接]
212|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GPIO初探
GPIO全称general purpose input output,通用输入输出口。芯片通过GPIO引脚与外部硬件连接,可实现与外部通信,控制,或者采集功能。

下面是通用GPIO的内部逻辑图。



IO口旁边有两个保护二极管,其作用就是防止外部过高或者过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。通常测试IO口是否烧坏,通过测该口的二极管属性可以初步判定。

输出控制旁边有一组由PMOS和NMOS管组成的单元电路,这个电路使得GPIO具有推挽输出和开漏输出模式,后续详细讲解二者的工作过程。

右上角出现了上拉和下拉电阻。当我们闭合上拉电阻的开关,断开下拉电阻的开关的时候,也就是此时为上拉通路导通。根据我们最基础的电路知识,如果I/O口断开不接外设,或者接了外设但是电路也断开,此时整条回路是断路的时候,电阻相当于不存在,此时O点的电位,也就被钳制在了VDD(供电电压正极),于是O点就处于高电平。同理,闭合上拉电阻的开关,断开下拉电阻的开关,那么在电路断开的时候,根据电路知识,电阻相当于不存在,O点的电压就就被钳制在了VSS(GND),也就是O点处于低电平。

GPIO在使用时可以分为8中模式,分别为:模拟输入,上拉输入,下拉输入,浮空输入,推挽输出,开漏输出,复用开漏输出,复用推挽输出。下面我将讲解这8中模式的内容。

模拟输入:



当我们需要测量外部模拟信号时,可以使用此模式。这是时候弱上下拉被禁用,施密特触发器被禁止,外部输入的模拟信号通过红色路径直接连接到片上外设。注意,所输入的模拟量电压小于VDD即可。

上拉输入:



在上拉输入模式下,GPIO通过内部上拉电阻将IO引脚的电平保持高电平(外部IO无信号输入时,IO口的电压由VDD通过上拉电阻保持在高电平)。外部输入信号在输入低电平时,VDD与IO引脚导通,输入电压为低。输入电压经过IO口到达TTL肖特基触发器输入端。肖特基触发器将输入电压转变为ttl电平的逻辑高和逻辑低送入输入数据寄存器中,这些IO端口上的数字信号被读取转而进行处理。

肖特基触发器:TTL 肖特基触发器通常由多个晶体管、肖特基二极管和电阻等元件组成。肖特基二极管具有快速开关特性,其正向导通电压较低,能够有效减少晶体管的存储时间,从而提高电路的开关速度。

触发机制:它有两个稳定状态,分别代表二进制的 “0” 和 “1”。当输入信号满足一定的触发条件时,触发器会从一个稳定状态转换到另一个稳定状态。常见的触发方式有电平触发和边沿触发。例如,在上升沿触发的触发器中,只有当输入信号的上升沿到来时,触发器才会根据输入信号的状态进行状态转换。

优点:高速性能,低功耗,抗干扰能力较强

施密特触发器:施密特触发器是一种具有迟滞的比较器电路,通过向比较器或差分放大器的同相输入端施加正反馈来实现。施密特触发器使用两个输入不同的阈值电压电平来避免输入信号中的噪声,这种双阈值的作用称为滞后。



下拉输入:



下拉输入模式下,GPIO通过内部的下拉电阻保证了在IO无输入的情况下,输入信号为低电平,当外部引脚输入为高电平,由于下拉电阻的存在,输入信号也将保持高电平。

浮空输入:



浮空输入模式下,上下拉电阻的开关都处于断开状态,IO引脚上的电平信号直接送到触发器的输入端,IO电平状态的初始状态处于不确定的状态,完全由外部输入决定。在浮空(IO引脚悬空)时读取IO口的电平信息是不确定的,可能处于高电平也有可能出于低电平。

推挽输入:
前面提到输出控制通过PMOS和NMOS管控制输出电压。这里先复习一下关于MOS管的基础知识。

PMOS:
MOS管有三个脚,分别是源极S(Source),栅极G(Gate),漏极D(Drain)。PMOS管顾名思义就是积极的三极管。PMOS管的电流是从源极流向漏极,因为源极就是源头,提供能量的地方。



上面就是PMOS管,箭头指向外。电流方向是从源极流向漏极。寄生二极管箭头方向与中间衬底的箭头方向保持一致。三极管的导通条件是VGS<0,当UG=US时截止。UG比US大多少伏时MOS管会饱和导通,这要看具体的MOS管,不同MOS管需要的压差不同。

NMOS:
NMOS管顾名思义就是消极的三极管。NMOS管的电流是从漏极流向源极。



上面就是NMOS管,箭头指向里。电流方向是从漏极流向源极。寄生二极管箭头方向与中间衬底的箭头方向保持一致。三极管的导通条件是VGS>0,当UG=US时截止。UG比US小多少伏时MOS管会饱和导通,这要看具体的MOS管,不同MOS管需要的压差不同。

好,我们回到推挽输出部分。当GPIO配置为推挽输出模式时,PMOS管和NMOS管均参与工作。接下来开始分析不同输出电压的过程。



当设置输出高电平的时候,PMOS管处于开启状态,NMOS管处于关闭状态。PMOS的栅极前有一个反相器,所以栅源电压VGS<0,PMOS管导通,IO引脚输出高电平。当设置输出为低电平的时候,PMOS管处于关闭状态,NMOS管处于开启状态,删源电压VGS>0,NMOS管导通,IO引脚输出低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,此时I/O端口的电平一定是输出的电平。



复用推挽输出:



推挽复用输出模式,与推挽输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。

开漏输出:
当GPIO配置为开漏输出模式时,仅有NMOS管。接下来开始分析不同输出电压的过程。当设置输出为低电平的时候,NMOS管处于开启状态,删源电压VGS>0,NMOS管导通,IO引脚输出低电平。当设置输出高电平的时候,经过反相器后,NMOS管的栅极电压VG≤VS,NMOS管截止状态。此时IO口状态由外部IO引脚本身电路决定,所以通常在开漏输出模式下,需要对IO口进行上拉设计,以保证电路处于高电平状态。注意:开漏输出模式下的高电平时由外部电路上拉实现的。



复用开漏输出:
开漏复用输出模式,与开漏输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。



至此,GPIO的工作模式讲解结束。

下面总结一下开漏输出和推挽输出的区别:



在GPIO部分可能还涉及到一些概念:拉电流,灌电流,泄露电流;拉电流和灌电流都是衡量电路的驱动能力的。

拉电流:
拉电流(source current)就是端口向外输出的电流,即从芯片引脚向外流出的电流。

灌电流:
灌电流(sink current)就是吸收电流,即从芯片引脚向内部流入的电流。



漏电流:
这里讨论的是芯片测试时出现的有关术语,输入低漏电(Input Leakage Low, ILL)和输入高漏电(Input Leakage High, ILH)。

输入低漏电(IIL): 当芯片的输入引脚被强制驱动至低电平(逻辑0)时,从电源(VDD)流向引脚的微小电流。理想情况下,此时输入引脚应呈现高阻抗,无电流通过,但实际因工艺缺陷或绝缘层变薄,仍会存在纳安(nA)至微安(µA)级的漏电流。

输入高漏电(IIH): 当输入引脚被强制驱动至高电平(逻辑1)时,从引脚流向地(VSS)的微小电流。同样受工艺限制,这一电流可能因电路设计中的上拉/下拉电阻或ESD防护结构而增大。



• IIH测试,输入高电平(逻辑1)时,NMOS管导通,PMOS管截止,此时漏电流则通过PMOS的寄生二极管或栅极泄漏路径流向地。

• IIL测试,输入低电平(逻辑0)时,PMOS管导通,NMOS管截止,理想情况下无电流从VDD流向引脚。但实际因PN结反向漏电或绝缘缺陷,仍会检测到微小电流。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/2401_84743203/article/details/148569415

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

147

帖子

0

粉丝