GPIO结构原理图与模式配置(以STM32为例)

目录

GPIO等效原理图

输入模式配置

输出模式配置

复用功能

模拟配置

GPIO配置指南


STM32 GPIO可用于各种配置。每个GPIO引脚都可以通过软件在以下任何模式下单独配置:

• 输入浮空

• 输入上拉

• 输入下拉

扫描二维码关注公众号,回复: 14700446 查看本文章

• 模拟

• 具有上拉或下拉功能的开漏输出

• 具有上拉或下拉功能的推挽输出

• 具有上拉或下拉功能的复用功能推挽

• 具有上拉或下拉功能的复用功能开漏

GPIO等效原理图

STM32产品集成了三个主要的GPIO基本结构:

• 三伏兼容(缩写为TC)。

图 1给出了等效的GPIO图结构。

• 三伏容限(缩写为TT)。

• 五伏容限(缩写为FT)

图 2给出了TT或FT等效的GPIO图结构。

8e20586f07de47088c970da609ecd3e3.jpeg

24272af8d5c945898d5d1136ea97c1b3.jpeg

 

输入模式配置

当STM32器件I/O引脚配置为输入时,必须选择以下三个选项之一:

• 带内部上拉的输出。STM32器件中使用上拉电阻,以确保在浮动输入信号的情况下具有良好定义的逻辑电平。根据应用要求,可以使用外部上拉电阻。

• 带内部下拉的输入。在STM32器件中使用下拉电阻,确保在浮动输入信号的情况下具有良好定义的逻辑电平。根据应用要求,可以使用外部下拉。

• 浮空输入。信号电平跟随外部信号。当没有外部信号时,施密特触发器在由外部噪声引起的逻辑电平之间随机切换。这增加了总体消耗。

 

编程为输入时,I/O端口具有以下特征:

• 输出缓冲器被关闭;

• 施密特触发器输入被打开;

• 根据GPIOx_PUPDR寄存器中的值决定是否激活上拉或下拉电阻;

• 输入数据寄存器每隔 1 个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样;

• 通过读取GPIOx_IDR输入数据寄存器可获取I/O状态;

 

输出模式配置

当STM32器件I/O引脚配置为输出时,必须选择以下两个选项之一:

• 推挽输出模式:

推挽输出实际上使用两个晶体管:一个PMOS和一个NMOS。每个晶体管接通才能将输出驱动到适当的电平:

– 当输出必须驱动为高电平状态时,顶部晶体管(PMOS)导通

– 当输出必须驱动为低电平状态时,底部晶体管(NMOS)导通

两个晶体管的控制通过GPIO端口输出类型寄存器(GPIOx_OTYPER)完成。

将输出寄存器(GPIOx_ODR)的相关位写0可激活NMOS晶体管,强制I/O引脚接地。

将输出寄存器(GPIOx_ODR)的相关位写1可激活PMOS晶体管,强制I/O引脚接通VDD。

• 开漏输出模式:

开漏输出模式不使用PMOS晶体管,而是需要一个上拉电阻。

当输出必须变为高电平时,必须关闭NMOS晶体管,仅通过上拉电阻将电平拉高。该上拉电阻可以是内部的,典型值为40kOhm,并通过GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)激活。

 

编程为输出时,I/O端口具有以下特征:

• 可将输出缓冲器配置为开漏或推挽模式;

• 施密特触发器输入被打开;

• 根据GPIOx_PUPDR寄存器中的值决定是否激活上拉或下拉电阻;

• 写入输出数据寄存器GPIOx_ODR的值将I/O引脚状态置位;

• GPIOx_ODR中的写入数据可从GPIOx_IDR中读取,该寄存器每个AHB时钟周期更新一次;

 

复用功能

在一些STM32 GPIO引脚上,用户可以选择复用功能输入/输出。每个引脚可与多达16个外设功能复用,例如通信接口(SPI,UART,I2C,USB,CAN,LCD等)、定时器、调试接口等。

所选引脚的复用功能通过两个寄存器配置:

• GPIOx_AFRL(引脚0到7)

• GPIOx_AFRH(引脚8到15)

 

对 I/O 端口进行编程作为复用功能时:

• 可将输出缓冲器配置为开漏或推挽模式

• 输出缓冲器由来自外设的信号驱动(发送器使能和数据)

• 施密特触发器输入被打开

• 根据GPIOx_PUPDR寄存器中的值决定是否激活上拉或下拉电阻

输入数据寄存器每隔 1 个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样。

对输入数据寄存器的读访问可获取 I/O 状态。

 

模拟配置

有一些STM32 GPIO引脚可以配置为模拟模式,允许使用ADC、DAC、OPAMP和COMP内部外设。要在模拟模式下使用GPIO引脚,请考虑以下寄存器:

• - GPIOx_MODER,选择模式(输入,输出,复用,模拟)

• - GPIOx_ASCR,选择所需的功能,ADC,DAC,OPAMP或COMP

 

对 I/O 端口进行编程作为模拟配置时:

• 输出缓冲器被关闭

• 施密特触发器输入被禁用,因此I/O引脚的每个模拟值零消耗。施密特触发器的输出被强制为恒定值(0)。

• 上拉和下拉电阻被硬件关闭

对输入数据寄存器的读访问值为“0”。

 

GPIO配置指南

ddf62f38d9204b028314af97177323a6.jpeg

1dcc5b9f940d42839625bd79cba91919.jpeg

 

猜你喜欢

转载自blog.csdn.net/qq_30095921/article/details/130014551