stm32 gpio基本原理以及工作模式

一、前言

GPIO是通用输入/输出的缩写,用于嵌入式系统和微控制器编程。对于STM32F103ZET6这样的微控制器,GPIO引脚通常被用来与外部设备(如传感器、按钮、LED等)进行接口。通过将GPIO引脚配置为输入或输出,微控制器可以读取外部信号的状态或者驱动外部组件。
本文将重点介绍gpio的8种工作模式,分别是:
1.浮空输入
2.上拉输入
3.下拉输入
4.模拟输入
5.开漏输出
6.推挽输出
7.复用开漏输出
8.复用推挽输出

然后会介绍io口的复用功能以及重映射功能。

二、stm32 gpio的8种工作模式

2.1 浮空输入

浮空输入指的是gpio内部没有通过上下拉电阻进行上下拉,也就是说,在没有输入信号的时候,io口的电平状态是不确定的。浮空输入的原理图如下所示:

(2.1-1)
如图2.1-1所示,浮空输入模式下,输入信号从io口外部输入,上下拉电阻都没有连接,经过TTL肖特基触发器触发,将检测到的电平信号写入到输入数据寄存器中,cpu再从输入数据寄存器中读出电平值。

2.2 上拉输入

上拉输入指的是gpio内部的上拉电阻接通,在没有外部信号输入的情况下,io口的输入默认是高电平,上拉输入的原理图如下所示:

(2.2-1)

2.3 下拉输入

下拉输入指的是gpio内部的下拉电阻接通,在没有外部信号输入的时候,io口的输入默认是低电平,下拉输入的原理图如下所示:

(2.3-1)

2.4 模拟输入

模拟输入与上面三种输入方式的主要区别是输入信号的终点不同,模拟输入不会经过TTL肖特基触发器,而是直接将模拟输入信号输入到芯片内部的ADC模块中。模拟输入的原理图如下图所示:

(2.4-1)

2.5 开漏输出

开漏输出指的是如果往输出控制中写入1,那么N-MOS管闭合,实际IO口的输出由外部电路的上下拉决定;如果往输出控制中写入0,则N-MOS管导通,IO口输出低电平。开漏输出的原理图如下图所示:

(2.5-1)
如上图所示,开漏输出链路如下:
cpu往位设置/清除寄存器中写入1/0,然后会将值映射到输出数据寄存器中,输出控制器再根据0/1表现出不同的状态。
cpu也可以直接往输出控制寄存器中写入0/1.

2.6 推挽输出

推挽输出指的是如果往输出控制中写入1,则P-MOS管导通,IO口输出高电平。
如果往输出控制中输入0,则N-MOS管导通,IO口输出低电平。
表现出来的特征就是既能输出高电平,也能输出低电平。
推挽输出的原理图如下图所示:

(2.6-1)

2.7 复用开漏输出

复用开漏输出指的是输出的源头不是cpu的写寄存器,而是通过其他片上的外设,输出的特性和开漏输出一致。复用开漏输出的原理图如下图所示:

(2.7-1)

2.8 复用推挽输出

复用推挽输出指的是输出的源头不是cpu往寄存器中写数据,而是来自其他片上外设,输出状态表现出来的特性和推挽输出一样,原理图如下所示:

(2.8-1)
如果需要输出高低电平的话,我们一般使用推挽输出。

三、gpio复用功能

根据前面的介绍,我们知道了gpio的基本功能就是控制电平的输出输入。一般芯片上由大量的io口,为了提高io口的功能,每个io不仅能够作为普通的gpio,还能被复用为其他总线的引脚,比如i2c、spi、uart、i2s等。后续用到再详细讨论。

四、gpio的重映射功能

为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这可以通过软件配置相应的寄存器来完成(参考AFIO寄存器描述)。这时,复用功能就不再映射到它们的原始引脚上了。
这个功能实际上是为了硬件设计的时候走线方便。

参考资料:

STM32中文参考手册_V10.pdf

作者:标标大人

物联沃分享整理
物联沃-IOTWORD物联网 » stm32 gpio基本原理以及工作模式

发表回复