GPIO-2---GPIO的输出配置
引言:GPIO,即General purpose input output,通用输入输出端口,是可以根据实际使用场景需求来用软件来配置的引脚。需要注意的是,一款芯片的引脚分为其实分为很多域,比如仅为芯片供电的引脚群称为电源域,还有类似复位,地址配置等等称为逻辑域,还有原生支持I2C,SPI等等通讯的称为通讯域,搭建小系统用的引脚称为系统域。本节我们主要讲述不具有特定功能的GPIO域。(本节和下节是所有的GPIO配置类型,但有的芯片GPIO不全都支持,这类GPIO叫裁剪型GPIO,使用芯片时需要查看其Pin List,不能默认都是全功能的GPIO)
图2-1:GPIO的一般结构
(资料图片)
1.开漏输出模式
开漏输出模式为数字输出,可以输出引脚电平,高电平为高阻态,低电平接GND。处于开漏输出模式时,施密特触发器输入也会被激活,上下拉电阻被禁止,断开连接,对输入数据寄存器的读访问可得到IO状态,出现在IO引脚上的数据在每个APB2时钟被采样到输入数据寄存器。
I2C就是利用引脚高阻态的特性,I2C总线上挂多个从机,当从机不工作时输出高阻态,总线默认为高电平。
开漏输出模式时PMOS不工作,输出寄存器上的0会让NMOS导通,接地输出低电平,输出寄存器上的1会让NMOS关闭,此时引脚既不输出高电平也不输出低电平,为高阻态。所以输出数据寄存器可控制IO输出高阻态或者低电平。
图2-2:开漏输出模式路径
2.推挽输出模式
推挽输出模式为数字输出,可以输出引脚电平,高电平接VDD,低电平接GND。处于推挽输出模式时,施密特触发器输入也会被激活,上下拉电阻被禁止,断开连接,对输出数据寄存器的读访问可得到最后一次写的值,出现在IO引脚上的数据在每个APB2时钟被采样到输入数据寄存器。
推挽输出模式双MOS管会以轮流的方式工作,输出寄存器上的0会让NMOS导通,输出低电平,输出寄存器上的1会让PMOS导通,输出高电平。
图2-3:推挽输出模式路径
3.复用开漏输出
在复用开漏输出模式中,复用功能输出使能,输出寄存器无效,输出信号源来自片上外设,此时输出速度可配置,输入可用,通过输入数据寄存器可获取IO实际状态,但一般直接用外设的寄存器来获取该数据信号。
图2-4:复用开漏输出模式路径
4.复用推挽输出
在复用推挽输出模式中,复用功能输出使能,输出寄存器无效,输出信号源来自片上外设,此时输出速度可配置,输入可用,通过输入数据寄存器可获取IO实际状态,但一般直接用外设的寄存器来获取该数据信号。
图2-5:复用推挽输出模式路径
5.小结
在输出模式下可以控制端口的输出电平高低,比如用于驱动LED闪烁,控制蜂鸣器,配合输入模式可以模拟通信接口协议I2C,SPI等等。
标签: