1.1 基本概念

GPIO的全称是General Purpose Input Output,译为通用输入输出,是一种通用的数字输入输出端口,允许设备与外部硬件进行电平信号交互 。GPIO可以用作输入接收外部信号,也可以作为输出控制外部设备,例如LED、蜂鸣器、按钮或继电器等。

1.2 工作模式

GPIO的基本工作是负责采集外部器件的信息或者控制外部器件工作,即输入输出。在嵌入式系统中,通过软件配置,可以根据具体应用要求将 GPIO 引脚用于输入或输出。 GPIO 的电平状态可以通过读写相应的寄存器来控制,从而实现对外部设备的控制和监测。

需要注意的是,虽然GPIO具有通用性,但在具体的嵌入式平台和微控制器上,不同的GPIO引脚可能会有不同的特性和限制。在使用GPIO时,需要查阅相应的芯片手册或技术文档,了解每个 GPIO 引脚的功能、电气特性以及可用性。

GPIO引脚可以被配置为输入或输出模式,工作模式主要有8种,如下表所示:

工作模式

特点与应用

浮空输入

输入时使用,IO端口电平状态不定

上拉输入

输入时使用,通过内部上拉默认高电平

下拉输入

输入时使用,通过内部下拉默认低电平

模拟功能

专门用于模拟信号的输入输出:ADC/DAC

开漏输出

可输出低电平,高电平为高阻态(有上拉才能输出高电平)

推挽输出

可输出高低电平,驱动能力强,通用输出

开漏式复用功能

由其它外设控制输出,不能输出高电平,必须有上拉才能输出高电平。

推挽式复用功能

由其它外设控制输出,可输出高低电平,驱动能力强。

GPIO的基本电路图如下所示:

GPIO的不同工作模式基于电路来实现,比较常用的工作模式有浮空输入、开漏输出和推挽输出。

(1)浮空输入

其特点是在空闲时,IO状态不确定,由外部环境决定。在使用浮空输入时,内部的上拉和下拉电阻通常处于关断状态,施密特触发器打开,双MOS管处于关断状态,输入处于高阻态。

(2)开漏输出

其特点是不能输出高电平,必须有外部或内部上拉电阻才能实现输出高电平。开漏输出时,电路内部的上拉电阻和下拉电阻都处于关断状态,施密特触发器打开,PMOS管不导通,NMOS管可以通过寄存器来控制其导通或者不导通的状态。

(3)推挽输出

其特点是可以输出高电平和低电平,并且有较强的驱动能力。使用推挽输出,电路内部的上拉电阻和下拉电阻通常处于关断状态,施密特触发器打开,NMOS管和PMOS管由内部寄存器控制导通或者不导通的状态。

1.3 使用场景

GPIO的是一个灵活的由软件控制的数字信号。在不同场景下会根据实际情况调整出不同的功能。比如:

  1. 控制和驱动外部设备:

最常见的用途是控制和驱动各种外部设备,如LED灯、继电器、电机、蜂鸣器。通过配置GPIO接口为输出模式,并根据需要设置高低电平,可以实现对这些设备的开关控制或状态调节。

  1. 传感器数据采集:

GPIO接口通常也用于连接各种传感器,如温度传感器、湿度传感器、光敏传感器等单总线传感器。这些传感器通常会输出数字信号或模拟信号,通过配置GPIO接口为输入模式并读取其状态,可以实现实时的环境数据采集和监测。

  1. 按键和开关输入

在嵌入式系统中,常用GPIO接口来检测按钮和开关的状态。通过配置GPIO为输入模式,并设置中断功能或者定期轮询输入状态,可以实现对按键事件的响应和处理,如开关控制、菜单选择等。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐