上面这张图是IO口输入输出的原理图,分为输入驱动部分与输出驱动部分。
最右侧是保护电路部分,IO口如果电平高于3.3V或低于0V,二极管均会导通,防止电流过大烧坏芯片,当然有一部分引脚是可以容忍5V电压的,比如像下面IO口电平标注为FT的都是能容忍5V电压的,当然我们在设计电路时尽量保证IO口不要长时间处于高电压状态,避免造成不可逆的影响
硬件电路讲解
这个跟江科协讲的那张有点不太一样,关于上拉和下拉部分真的非常推荐去听一下江科协讲的,非常地清晰明了,就是相当于是两个弹簧如果接一个高电平点和一个电阻,会很容易把另外一段的电平升高,就叫做上拉,拉高电平;下拉与之类似;而浮空就是既不上拉也不下拉,在这种情况下,就会很容易受到干扰,所以需要信号的连续性好,用的时候一直输入,不会有很长时间的无信号状态,
施密特触发器(Schmitt Trigger)是一种电子电路,作用是将输入的模拟信号转换成数字信号,即高电平或低电平。施密特触发器的工作原理基于非线性元件(如二极管和晶体管)的特性,它有两个阈值电平,分别是下限阈(yu)值(U1)和上限阈值(U2)。当输入信号从低电平变为高电平时,如果信号电平超过上限阈值(U2),输出电平由低电平跳变为高电平;当输入信号从高电平变为低电平时,如果信号电平低于下限阈值(U1),输出电平由高电平跳变为低电平。
说人话就是它设置了两个门槛,如果你已经高于第一个门槛且信号的波动又不低于第二个门槛就是高电平,但如果你小于了第二个门槛,就会变成低电平,等到下次高于第一个门槛,才会变成低电平。这样做会使得到的信号连续性更好。
推挽输出就是系统内部(左侧寄存器)如果写入1,则PMOS闭合,外界为低电平则点亮;写入为0,则NOMS闭合,高电平点亮;
开漏输出的话就是NMOS单独使用,只有寄存器写入0且外界为高电平的时候才能导通,这种模式可以使用更高的电平驱动
-
浮空输入(Floating Input)
- 在这种模式下,GPIO引脚不连接任何上拉或下拉电阻。
- 引脚的电平由外部信号决定,可以是高电平、低电平或悬空状态。
- 适用于需要检测外部信号状态,但不希望对信号电平产生影响的场合。
-
上拉输入(Pull-up Input)
- 引脚内部连接到上拉电阻,当外部引脚未连接或连接到低电平时,引脚被拉到高电平。
- 这可以用来确保在未连接或开路条件下引脚有一个确定的高电平状态。
-
下拉输入(Pull-down Input)
- 引脚内部连接到下拉电阻,当外部引脚未连接或连接到高电平时,引脚被拉到低电平。
- 这可以用来确保在未连接或开路条件下引脚有一个确定的低电平状态。
-
模拟输入(Analog Input)
- 在模拟输入模式下,GPIO引脚配置为模拟功能,用于ADC(模数转换器)的输入。
- 适用于需要采集模拟信号的情况。
-
模拟输出(Analog Output)
- 在模拟输出模式下,GPIO引脚可以输出模拟信号,通常用于DAC(数模转换器)的输出。
- 适用于需要输出模拟信号的情况。
-
开漏输出(Open-Drain Output)
- 在这种模式下,GPIO引脚可以输出低电平,但无法输出高电平。
- 高电平时,引脚处于高阻态,允许外部设备将其拉高。
- 适用于需要多个设备驱动同一信号线的场合,如I2C通信。
-
推挽输出(Push-Pull Output)
- 这是GPIO最常用的输出模式,引脚可以独立地输出高电平和低电平,通过NMOS和PMOS来控制
- 推挽输出模式下,GPIO引脚能够提供足够的电流来驱动负载。
-
复用功能(Alternate Function)
- 在这种模式下,GPIO引脚被配置为微控制器内部某些外设的备用功能输出。
- 例如,可以将GPIO引脚配置为USART的TX(发送)引脚。
- 包括复用推挽、复用开漏
时间有限,简单总结了一下,感谢观看