关于32位MCU GPIO八种工作模式配置

发布时间 2023-10-25 15:08:20作者: ZaiLi

参考链接:https://mp.weixin.qq.com/s/vgYzCcxmsfn7BGWERHfITQ

通常,32位MCU的GPIO有多种配置方式,如STM32、CH32 MCU的GPIO引脚都有八种配置方式,总体可分为两类:输入和输出。其中:

输入可分为:

  • 浮空输入
  • 上拉输入
  • 下拉输入
  • 模拟输入

输出可分为

  • 开漏输出
  • 推挽输出
  • 复用开漏输出
  • 复用推挽输出

上图为MCU GPIO模块的基本结构框图。下面将结合具体实例及实际测试现象对这8种配置方式进行讲解测试。

 

1、浮空输入模式

当GPIO引脚配置为浮空输入模式时,外部电平信号通过IO引脚传输到施密特触发器(即图中TTL肖特基触发器)并最终进入输入数据寄存器,MCU通过读取输入数据寄存器获取外部电平信号。

注:若IO引脚浮空(即无外部电平信号接入IO引脚)时,MCU读取输入数据寄存器的值是不确定的,0和1都有可能。

现象体现:

  • IO引脚浮空时,读取输入电平信号可能为0,也可能为1
  • IO引脚接高电平时,读取输入电平信号为1
  • IO引脚接低电平时,读取输入电平信号为0

 

2、上拉输入模式

当GPIO引脚配置为上拉输入模式时,上拉电阻开关闭合,当IO引脚未接电平信号时,VDD(高电平信号)通过上拉电阻经过施密特触发器存入输入数据寄存器,因此未接电平信号时读取该IO引脚输入数据寄存器值为1。

现象体现:

  • IO引脚浮空时,读取输入电平信号为1
  • IO引脚接高电平时,读取输入电平信号为1
  • IO引脚接低电平时,读取输入电平信号为0

 

3、下拉输入模式

当GPIO引脚配置为下拉输入模式时,下拉电阻开关闭合,当IO引脚未接电平信号时,VSS(低电平信号)通过下拉电阻经过施密特触发器存入输入数据寄存器,因此未接电平信号时读取该IO引脚输入数据寄存器值为0。

现象体现:

  • IO引脚浮空时,读取输入电平信号为0
  • IO引脚接高电平时,读取输入电平信号为1
  • IO引脚接低电平时,读取输入电平信号为0

 

4、模拟输入模式

当GPIO引脚配置为模拟输入模式时,IO引脚信号直接通过模拟输入端进入片上外设模块,IO口外部电压信号为模拟量,非电平形式。通常配置ADC时GPIO引脚初始化配置为模拟输入模式。

 

5、开漏输出模式

当GPIO引脚配置为开漏输出模式时,通过设置 位设置/清除寄存器或者输出数据寄存器的值,途经N-MOS管,最终输出到I/O端口。这里要注意N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于截止状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于导通状态,此时I/O端口的电平就是低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平,可通过直接读取该引脚确定输出电平信号GPIO_ReadInputDataBit()

现象体现:

当IO引脚配置输出高电平且接上拉电阻时,读该引脚信号一直为高电平信号1,如下图:

当IO引脚配置输出高电平且接下拉电阻或不接电平信号时,读该引脚信号一直为低电平信号0,如下图:

IO引脚配置输出低电平时,无论上拉还是下拉,输出信号一直为低电平信号,如下图:

 

6、推挽输出模式

当GPIO引脚配置为开漏输出模式时,推挽电路(push-pull)就是两个不同极性晶体管间连接的输出电路。推挽电路采用两个参数相同的MOSFET管,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小效率高。当设置输出的值为为高电平时,P-MOS导通,N-MOS截止,此时I/O端口的电平就由P-MOS管决定为高电平;当设置输出的值为低电平的时候,P-MOS管处于截止状态,N-MOS管处于导通状态,此时I/O端口的电平就由N-MOS管决定为低电平,同时IO口输出的电平可以通过输入电路读取,此时I/O端口的电平一定是输出的电平。

现象体现:

当IO引脚配置输出高电平信号时,读该引脚信号一直为高电平信号1,此时可以通过直接读取该引脚输入数据寄存器获取输出电平信号,如下图:

IO引脚配置输出低电平时,输出信号一直为低电平信号0,此时可以通过直接读取该引脚输入数据寄存器获取输出电平信号,如下图:

  

7、复用开漏输出模式

当GPIO引脚配置为复用开漏输出模式时,与开漏输出模式唯一区别在于输出控制电平之前电平的来源,开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的,开漏复用输出模式的输出电平是由复用功能外设输出决定的。其他与开漏输出相似。控制电路输出高电平:N-MOS截止,IO口电平由外部上拉/下拉决定。控制电路输出低电平:N-MOS开启,IO口输出低电平。该模式通常用于配置IIC。

 

8、复用推挽输出模式

当GPIO引脚配置为开漏输出模式时,与推挽输出模式唯一区别在于输出控制电路之前电平的来源。开漏输出模式的输出电平是CPU写入输出数据寄存器的,推挽复用输出模式的输出电平是复用功能外设输出决定的