STM32(二)之GPIO操做(1)——之输入输出操做

      GPIO是通用输入输出的简称,换句话说,其为MCU可控制的引脚,MCU经过GPIO引脚来与外部设备链接,从而实现与外部通信、控制以及数据采集的功能。本文以STM32的GPIO为例子来介绍GPIO。spa


      上图所示,blog

       第一部分保护二极管及上下拉电阻

       如图所示为保护二极管,用于防止引脚太高或太低的外部电压输入,当引脚的外部电压高于VDD时,上方的二极管导通,当引脚电压低于Vss时,下方的二极管导通,从而即可防止不正常的电压输入GPIO而烧毁内部芯片。可是STM32的引脚不该外接大功率的驱动器件。而第一部分和第七部分之间为上拉电阻和下拉电阻,用于GPIO设置时用于设置上下拉电阻。im

      第二部分:推挽输出和开漏输出(P-MOS管和N-MOS管)

      P-MOS管和N-MOS管使得GPIO具备推挽输出和开漏输出两种模式:数据采集

      (1)推挽输出数据

      在推挽输出模式下,P-MOS管和N-MOS管都处于工做,其等效电路以下所示:img


      当INT往1处输入高电平时,通过反向后,上方的P-MOS导通,下方的N-MOS关闭,OUT对外输出高电平;而当INT往1处输入低电平时,通过反向后,上方的P-MOS关闭,下方的N-MOS打开,OUT对外输出低电平。当引脚高低电平切换时,两个管轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度均比普通的方式有较大的提升。推挽输出的低电平为0V,高电平为3.3V。co

      推挽输出模式通常适用于输出电平为0和3.3V并且须要高速切换开关状态的场合,除了必须使用开漏输出的场合,咱们通常习惯于使用推挽输出模式。采集

      (2)开漏输出工作

       在开漏输出模式下,上方的P-MOS管彻底不工做。其等效电路以下:习惯


      当咱们经过INT往1输出0(低电平)时,P-MOS关闭,N-MOS管导通,使得输出接地;当咱们经过INT往1输出1时,P-MOS管和N-MOS管均关闭,则引脚既不输出高电平,也不输出低电平,为高阻态。所以其须要在正常使用时在外部接上拉电阻。其具备“线与”特性,故当多个开漏模式引脚链接在一块儿时,只有当全部引脚都输出高阻态。才可由外部的上拉电阻提供高电平。若其中一个引脚为低电平,那么线路便至关于短路接地,使得整个线路为低电平,即0V。

      开漏输出通常应用于IIC、SMBUS通信等须要“线与”功能的总线电路中。此外,其还适用于在电平不匹配的场合,如要输出5V的高电平,则上图的VDD可设为5V,如此在OUT为高阻态时,其对外部会输出5V的电平。

      第三部分:复用功能输出与输入

      “复用功能输出”中的“复用”指的是STM32的其它片上会对GPIO引脚进行控制,此时GPIO引脚做为该外设的一部分。也就是说,GPIO自身的寄存器只管理GPIO管脚的设置,而数据的传输由其它外设控制,好比说使用USART串口通信时,做为通信发送引脚的GPIO管脚便被设为USART串口复用功能,由串口外设控制其数据的输出。所以,GPIO的复用功能可分为复用开漏输出复用推挽输出

    与模拟输出相似的,复用功能输入即是将GPIO引脚

    第四部分:输入模式(模拟/浮空/上拉/下拉)

   使用 ”模拟输入“功能时,信号不通过施密特触发器,由于通过施密特触发器后信号只有0、1两种状态,因此若是ADC外设要采集原始的模拟信号,信号源必须在施密特触发器以前输入。此时,将GPIO设为模拟输入模式即可实现对原始的模拟信号的采集。

   与之相似的,DAC的模拟信号的输出也可不通过双MOS管结构,直接输出到对应的引脚。

   上拉/下拉输入:GPIO口使用内置的上下拉电阻。

GPIO输入输出小结: