GPIO引脚的输入输出模式

Posted 旭日初扬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GPIO引脚的输入输出模式相关的知识,希望对你有一定的参考价值。

目录

一、结构体介绍

二、原理

1、保护二级管 

2、上下拉电阻

3、P-MOS 和 N-MOS 管

4、输出数据寄存器

5、复用功能输出

6、输入数据寄存器

 7、复用输入功能

8、模拟输入输出模式


一、结构体介绍

typedef enum
{ GPIO_Mode_AIN = 0x0,           模拟输入     ADC采集的通道
  GPIO_Mode_IN_FLOATING = 0x04,  浮空输入     电平状态不确定
  GPIO_Mode_IPD = 0x28,          下拉输入     低电平
  GPIO_Mode_IPU = 0x48,          上拉输入     高电平
  GPIO_Mode_Out_OD = 0x14,       开漏输出     低电平
  GPIO_Mode_Out_PP = 0x10,       推挽输出     高电平
  GPIO_Mode_AF_OD = 0x1C,        复用开漏输出 低电平
  GPIO_Mode_AF_PP = 0x18         复用挽输出   高电平
}GPIOMode_TypeDef;

二、原理

1、保护二级管 

  • 保护引脚,防止引脚外部过高或过低的电压输入。以保护芯片不被烧毁。
  • 当引脚电压高于VDD或VDD_FF时,上方二极管导通吸收此高电压。
  • 当引脚电压低于VSS时,下方二级管导通吸收此不正常电压。
  • STM32 引脚是用来做控制,而不是做驱动使用的。

2、上下拉电阻

  • 上下拉电阻都接有一个开关,通过配置开关的状态,可以控制引脚的默认电平。
  • 闭合连接上拉电阻的开关,引脚为高电平。(上拉输入模式)
  • 闭合连接下拉电阻的开关,引脚为低电平。(下拉输入模式
  • 断开连接上下拉电阻的开关,引脚电压不确定(浮空输入模式
  • STM32 上下拉及浮空模式的配置是通过 GPIOx_CRL 和 GPIOx_CRH 寄存器控制的

3、P-MOS 和 N-MOS 管

 

  • GPIO 引脚经过两个保护二极管后就分成两路,上面一路是“输入模式”, 下面一路是“输出模式”。
  • 开漏输出:输入一个低电平,P-MOS管截止、N-MOS导通,对外输出一个低电平(0V)。
  • 推挽输出:输入一个高电平、P-MOS管导通、N-MOS管截止,对外输出高电平(3.3V)。

4、输出数据寄存器

双 MOS 管结构电路的输入信号,是由 GPIO“输出数据寄存器 GPIOx_ODR”提供,通过修改输出数据寄存器的值就可以修改 GPIO 引脚的输出电平。

5、复用功能输出

STM32 的 GPIO 引脚具有第二功能,因此当使用复用功能的时候,也就 是通过其他外设复用功能输出信号与 GPIO 数据寄存器一起连接到双 MOS 管电路 的输入。

6、输入数据寄存器

  • 输入数据寄存器是由 IO 口经过上下拉电阻、施密特触发器引入。
  • 当信号经 过触发器,模拟信号将变为数字信号 0 或 1,然后存储在输入数据寄存器中。
  • 通 过读取输入数据寄存器 GPIOx_IDR 就可以知道 IO 口的电平状态。

 7、复用输入功能

  • 使用GPIO引脚的第二个功能,非默认功能的输入。
  • GPIO 引 脚的信号传输到 STM32 其他片上外设,由该外设读取引脚的状态。

8、模拟输入输出模式

  • 当 GPIO 引脚用于 ADC 采集电压的输入通道时,用作“模拟输入”功能。
  • 此时信号是不经过施密特触发器的,因为经过施密特触发器后信号只有 0、1 两 种状态。
  • ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。
  1. 当 GPIO 引脚用于 DAC 作为模拟电压输出通道时,此时作为“模 拟输出”功能。
  2. DAC 的模拟信号输出就不经过双 MOS 管结构了,模拟信号直接 通过管脚输出。

模拟输入输出模式中,双 MOS 管结构被关闭,施密特触发器停用,上/下拉 也被禁止。

以上是关于GPIO引脚的输入输出模式的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式GPIO接口及操作

ARM芯片学习(S5PV210开发)——GPIO控制LED

ap里面有多少gpio

06-GPIO实验

stm32F103寄存器点灯

Python面向树莓派使用RPi.GPIO库