GPIO(General Purpose Input/Output)即通用输入输出端口,以下简称 GPIO。GPIO 可提供输入、输出或中断三类功能,是嵌入式领域最常见,最基础的输入输出设备。
应用上GPIO作为输入可以检测按键,限位开关等的状态,作为输出可以控制LED,蜂鸣器,继电器等设备。GPIO 除了在应用层中使用外,其实更多的是在其他复杂驱动中调用。比如SD卡驱动中要使用一个GPIO来监测卡的插入与拔出,网卡驱动中需要使用一个GPIO来控制phy芯片硬复位,连接一个无线模块的中断输出脚,某些情况需要用GPIO来模拟I2C总线等等。
最基本的功能
- 输入:1高电平,0低电平
- 输出:1高电平,0低电平
- 中断:电平触发
高电平触发
低电平触发
边沿触发
上升沿触发
下降沿触发
双边沿触发
特殊功能
- 推挽输出:这是通常的模式,输出到低电平时都要驱动极,驱动能力较强。
- 开漏输出:即 OC/OD门,只能输出低电平或悬空,可以进行先与或电平转换。
- 开源输出:即 OE/OS门,只能输出高电平或悬空,可以进行先与或电平转换。
- 上拉设置:引脚内部连接一个上拉电阻,部分芯片这个上拉电阻的阻值还能调节,配合开漏模式可以输出不同不同能力的高电平。
- 下拉设置:和上拉类似,下拉电阻的阻值也可能可以调节。
- 滤波设置:个别芯片还具备对输入进行滤波的能力,减少外界干扰造成的误触发。
注意:要区分GPIO和pinmux的不同,GPIO是数字输入输出接口,pinmux是用来设置引脚功能的模块。大多数SOC芯片的引脚都是连接多个设备模块的,比如可以是GPIO,可以是ADC输入,DAC的输出,UART的RX/TX脚等等,同一时刻一个引脚只能选这一个功能。