在介绍gpio什么情况需要上拉的问题前,我们需要先了解下gpio的基本概念和定义。GPIO即通用输入/输出,是一种用于控制计算机系统中的硬件设备(包括传感器、执行器等)的通用接口。GPIO有输入和输出两种工作模式,可以通过控制高低电平实现对外围硬件的操控。
当gpio作为输入端口时,如果不接任何信号源,则输入端口上的电平就存在不稳定的状态,受周围环境电磁干扰等因素影响而难以控制。于是,我们需要通过外部上拉电阻对GPIO进行处理,使其拥有确定的电平状态,保证信号的正确识别。
gpio上拉电阻的作用是使gpio在空闲状态(没有输入信号)时保持一个已知状态,防止出现"飘"。上拉电阻与gpio接口形成一个电路,如果gpio没有外部设备输入,那么电路断开,电流流向上拉电阻,此时gpio的逻辑状态为高电平;当外部设备输入信号时,从gpio输入口流入电流,当电压超过一定程度时便能反向激活GPIO,使GPIO的逻辑状态变为低电平,触发系统相关操作。
gpio上拉主要用于控制部分电子电路,在下列场景需使用gpio上拉电阻:
1、控制开关状态:用于检测开关接通状态,以此控制设备的开闭,例如控制电磁门的开关状态。
2、控制传感器状态:用于控制各类传感器的输出状态,获取传感器信息,例如光感传感器、触摸传感器等。
3、控制某些外部设备:需要通过一定电信号软硬件控制外设状态时使用上拉电阻,例如LED灯、蜂鸣器、数码管等。
gpio上拉电阻的实现方式一般有两种:
1、外部上拉:在gpio输入管脚和电源之间加一个上拉电阻,可以确保gpio输入端在空闲时上拉到高电平。外部上拉的方案比较灵活,推荐使用。
2、内部上拉:一些芯片自带内部上拉电阻,可以在程序中配置。但是,内部上拉的性能比外部上拉差,同时使用内部上拉较易导致代码程序耦合严重,不利于后期调试。