GPIO的输入模式
输入模式,可设置为上拉、下拉、浮空和模拟输入四种。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候用的是这个模式。模拟输入则用于 ADC 采集。
GPIO的输出模式
在输出模式中,推挽模式时双 MOS 管以轮流方式工作。开漏模式时,只有 N-MOS 管工作,可控制 I/O 输出高阻态或低电平。
推挽输出
所谓的推挽输出模式,是根据这两个 MOS 管的工作方式来命名的。当引脚高低电平切换时,两个管子轮流导通,P 管负责灌电流,N 管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为 0 伏,高电平为 3.3 伏。推挽输出模式一般应用在输出电平为 0 和 3.3 伏而且需要高速切换开关状态的场合。
开漏输出(OD门,TTL电路中对应的有OC门)
开漏输出模式时,上方的 P-MOS 管完全不工作。如果我们控制输入为 0,低电平,则 P-MOS管关闭,N-MOS 管导通,使输出接地;若控制输入为 1 时,则 P-MOS管和 N-MOS 管都关闭,所以引脚既不输出高电平,也不输出低电平,为高阻态。所以正常使用时,必须外部接上拉电阻。
具有“线与”特性,也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0 伏。
例如:I2C的时钟线和数据线外接上拉电阻为使其能够输出高电平