这是我个人总结的GPIO各种配置模式,还请大佬们看一下是否有差错,请大佬们斧正。
输入模式:
GPIO输入模式是指将GPIO引脚配置为接收外部信号的状态。在输入模式下,引脚可以
读取外部设备 的电平状态(高电平或低电平),并将其转换为
单片机内部可以识别的数字信号。
输出模式:
GPIO输出模式是指将GPIO引脚配置为输出数字信号的状态。在输出模式下,单片机可以控制引脚输出高电平或低电平信号,从而
控制外部设备 的工作状态。
1. 输入浮空
输入浮空是指GPIO引脚没有连接到任何外部
电路,既没有上拉也没有下拉,当没有外部信号产生时其状态不确定,当有外部信号产生时电平由外部信号决定。
2. 输入上拉
定义:输入上拉是指GPIO引脚内部连接了一个上拉电阻到
电源电压。
设计原因:确保在没有外部信号驱动时,引脚保持高电平状态,减少噪声和干扰的影响。
作用:用于确保在无信号或弱信号输入时,引脚不会处于不确定状态,提高信号的抗干扰能力。
(P:相比较浮空模式,当外接电阻过大时,可能存在弱上拉,输出高电平能力不够。)
3. 输入下拉
定义:输入下拉是指GPIO引脚内部连接了一个下拉电阻到地。
设计原因:确保在没有外部信号驱动时,引脚保持低电平状态,减少噪声和干扰的影响。
作用:用于确保在无信号或弱信号输入时,引脚不会处于不确定状态,提高信号的抗干扰能力。
(P:相比较浮空模式,当外接电阻过大时,可能存在弱下拉,输出低电平能力不够。)
4. 模拟输入
模拟输入是指能够接收连续变化的模拟信号的输入端口。这些信号可以是电压、电流或其他形式的物理量。模拟输入通常需要一个放大器或前置放大器来放大和调理信号,以便于后续电路进行处理。
5. 开漏输出
定义:开漏输出是指GPIO引脚只能输出低电平或处于高阻态(既不是高电平也不是低电平,而是一种特殊的中间状态),不能直接输出高电平。
设计:通过使用NMOS晶体管,当晶体管导通时,引脚连接到地;当晶体管截止时,引脚处于高阻态。
设计原因:允许多个开漏输出引脚连接到同一线上,实现线与功能。
作用:用于需要多个信号源共同控制一条线的场景,或者需要外部上拉电阻来决定高电平的场合。(当多个信号源控制,只有由一个设备输出低电平,这条总线就输出低电平。)
上升沿延时:开漏输出由于需要外部上拉电阻来产生高电平,因此会引入上升沿延时。延时的大小取决于上拉电阻的阻值。
功耗问题:当上拉电阻选择小阻值时,虽然可以减小上升沿延时,但会增加功耗。反之,选择大阻值时,虽然功耗降低,但延时增加。
输出能力受限:开漏输出的输出能力相对较弱,特别是当负载消耗电流较大时,可能需要额外的驱动电路来增强输出能力。
6. 推挽式输出
定义:推挽式输出是指GPIO引脚能够直接输出高电平和低电平。
设计:通过使用一个NPN晶体管和一个PNP晶体管,分别用于输出低电平和 高电平。
设计原因:提供足够的电流来直接驱动负载,无需外部上拉或下拉。
作用:用于直接驱动LED、继电器、马达等负载。
信号源冲突:当有多个信号源,并且信号源输出的电平本系统则会导致电路短路。
7. 推挽式复用功能
定义:推挽式复用功能是指GPIO引脚可以在不同的功能之间切换,如输入、输出或其他特定功能。
设计:通过内部多路复用器(MUX)来选择引脚的功能。
设计原因:为了节省引脚数量,提高IC的集成度。
作用:允许单个引脚执行多个任务,减少硬件资源的使用。
8. 开漏复用功能
定义:开漏复用功能是指GPIO引脚可以在开漏输出和其他功能之间切换。
设计:与推挽式复用类似,但输出部分使用开漏结构。
为什么这样设计:为了在需要多个信号源共同控制一条线时,还能实现引脚功能的复用。
作用:允许引脚在开漏输出和其他功能(如输入、模拟输入等)之间灵活切换。