STM32-深入理解GPIO的8种工作模式

文章目录

一、GPIO中四个关键器件介绍

1.1、保护二极管

1.2、P-MOS管和N-MOS管

1.3、上拉电阻和下拉电阻

1.4、TTL肖特基触发器

二、GPIO的8种工作模式

2.1、模拟输入

2.2、浮空输入 

2.3、下拉输入 

2.4、上拉输入 

2.5、开漏输出

2.6、推挽输出 

2.7、复用开漏输出 

2.8、复用推挽输出 

三、推挽和开漏的总结

3.1、推挽结构和推挽电路

3.2、开漏知识

四、外设的GPIO配置

4.1、高级定时器TIM1/TIM8

4.2、通用定时器TIM2/3/4/5

4.3、USART

4.4、SPI 

4.5、I2S

4.6、I2C

4.7、BxCAN

4.8、USB

4.9、全速USB OTG引脚配置

4.10、SDIO

4.11、ADC/DAC

4.12、FSMC

4.13、其它I/O功能


一、GPIO中四个关键器件介绍

STM32-深入理解GPIO的8种工作模式_第1张图片 图(1)

1.1、保护二极管

        图(1)中①所示的为两个保护二极管。这两个保护二极管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。尽管有这样的保护,并不意味着STM32的引脚能直接外接大功率驱动器件,如直接驱动电机,要么电机不转,要么导致芯片烧坏,必须要加大功率及隔离电路驱动。

1.2、P-MOS管和N-MOS管

        图(1)中②所示的为 P-MOS 管和 N-MOS 管。GPIO引脚线路经过两个保护二极管后,向上流向“输入模式”结构,向下流向“输出模式”结构。在输出模式部分,线路经过一个由P-MOS和N-MOS管组成的单元电路。这个结构使GPIO具有了“推挽输出”和“开漏输出”两种模式,这两种模式下面会详细介绍。

1.3、上拉电阻和下拉电阻

        图(1)中③所示的为上拉电阻和下拉电阻。其中VDD为I/O引脚和内部调压器(稳压)的电压,是设备的工作电压,STM32的数据手册为2.0v~3.6v,这里就当3.3V好了,无关紧要。VDD所连的电阻为上拉电阻,当开关打开时,其输出就是高电平。VSS为电路公共地端电压,一般接GND。VSS所连的电阻为下拉电阻,当开关打开时,其输出就是低电平。

1.4、TTL肖特基触发器

        图(1)中④所示的为TTL肖特基触发器。信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。ADC外设要采集到的原始的模拟信号。补充:当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变。 

二、GPIO的8种工作模式

GPIO Mode Description
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出

2.1、模拟输入

STM32-深入理解GPIO的8种工作模式_第2张图片 图(2)

         模拟输入模式(GPIO_Mode_AIN)关闭了TTL肖基特触发器,不接上、下拉电阻,经由另一线路把电压信号传送到片上外设模块。如传送至ADC模块,由ADC采集电压信号。所以使用ADC外设的时候,必须设置为模拟输入模式。在模拟输入模式下,输出缓冲器被禁止,读取输入数据寄存器为0。             补充:类似地,当GPIO引脚用于DAC作为模拟电压输出通道时,此时作为“模拟输出”功能,DAC的模拟信号输出就不经过双MOS管结构,而是直接输出到引脚。

2.2、浮空输入 

STM32-深入理解GPIO的8种工作模式_第3张图片 图(3)

          浮空输入模式(GPIO_Mode_IN_FLOATING)在芯片内部既没有接上拉,也没有接下拉电阻,经由TTL肖基特触发器输入。配置成这个模式直接用电压表测量其引脚电压为1点几伏,这是个不确定值。由于其输入阻抗较大,一般把这种模式用于标准的通信协议如I2C、USART的接收端。在浮空输入模式下,输出缓冲器被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。

2.3、下拉输入 

STM32-深入理解GPIO的8种工作模式_第4张图片 图(4)

          下拉输入模式(GPIO_Mode_IPD),I/O端口的电平信号通过TTL肖基特触发器后,进入输入数据寄存器。在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在低电平;并且在I/O端口输入为高电平的时候,输入端的电平则为高电平。在下拉输入模式下,输出缓冲器被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。

2.4、上拉输入 

STM32-深入理解GPIO的8种工作模式_第5张图片 图(5)

        上拉输入模式(GPIO_Mode_IPU),I/O端口的电平信号通过TTL肖基特触发器后,进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在高电平;并且在I/O端口输入为低电平的时候,输入端的电平则为低电平。 在上拉输入模式下,输出缓冲器被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。

2.5、开漏输出

STM32-深入理解GPIO的8种工作模式_第6张图片 图(6)

         开漏输出模式(GPIO_Mode_Out_OD),上方的P-MOS管完全不工作。如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出接地,若控制输出为1(它无法直接输出高电平)时,则P-MOS管和N-MOS管都关闭,所以引脚既不输出高电平,也不输出低电平,为高阻态正常使用时必须外部接上拉电阻,等效电路见图(7)。它具有“线与”特性,也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平。在开漏输出模式下,施密特触发输入被激活,弱上拉和下拉电阻被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态(注意:I/O端口的电平不一定是输出的电平)。

STM32-深入理解GPIO的8种工作模式_第7张图片 图(7) 开漏电路

2.6、推挽输出 

STM32-深入理解GPIO的8种工作模式_第8张图片 图(8)

        推挽输出模式(GPIO_Mode_Out_PP),是根据这两个MOS管的工作方式来命名的。在该结构中输入高电平时,经过反向后,上方的P-MOS导通,下方的N-MOS关闭,对外输出高电平;而在该结构中输入低电平时,经过反向后,N-MOS管导通,P-MOS关闭,对外输出低电平。当引脚高低电平切换时,两个MOS管轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0V,高电平为3.3V,推挽输出模式时的等效电路见图(9)。 在推挽输出模式下,施密特触发输入被激活,弱上拉和下拉电阻被禁止,出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输出数据寄存器的读访问得到最后一次写的值(注意:此时I/O端口的电平一定是输出的电平)。

STM32-深入理解GPIO的8种工作模式_第9张图片 图(9) 推挽等效电路

2.7、复用开漏输出 

STM32-深入理解GPIO的8种工作模式_第10张图片 图(10)

          对于相应的复用模式,则是根据GPIO的复用功能来选择的,如果用在IC、SMBUS这些需要线与功能的复用场合,就使用复用开漏模式(GPIO_Mode_AF_OD)。 

        当I/O端口被配置为复用功能时:

  • 在开漏或推挽式配置中,输出缓冲器被打开
  • 内置外设的信号驱动输出缓冲器(复用功能输出)
  • TTL肖基特触发输入被激活
  • 弱上拉和下拉电阻被禁止
  • 在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器
  • 开漏模式时,读输入数据寄存器时可得到I/O口状态
  • 在推挽模式时,读输出数据寄存器时可得到最后一次写的值

2.8、复用推挽输出 

STM32-深入理解GPIO的8种工作模式_第11张图片 图(11)

         GPIO的引脚用作串口的输出,则使用复用推挽输出模式(注:输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的)。

三、推挽和开漏的总结

3.1、推挽结构和推挽电路

        推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。

        推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

        推挽输出模式一般应用在输出电平为0和3.3V而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,一般习惯使用推挽输出模式。

3.2、开漏知识

        开漏输出只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。适合于做电流型的驱动,其吸收电流的能力相对强(20mA以内)。

        开漏输出一般应用在I2C、SMBUS通信等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5V的高电平,就可以在外部接一个上拉电阻,上拉电源为5V,并且把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V的电平,具体见图(12)。

STM32-深入理解GPIO的8种工作模式_第12张图片 图(12) 

四、外设的GPIO配置

4.1、高级定时器TIM1/TIM8

STM32-深入理解GPIO的8种工作模式_第13张图片 图(13)

4.2、通用定时器TIM2/3/4/5

图(14)

4.3、USART

STM32-深入理解GPIO的8种工作模式_第14张图片 图(15)

4.4、SPI 

STM32-深入理解GPIO的8种工作模式_第15张图片 图(16)

4.5、I2S

STM32-深入理解GPIO的8种工作模式_第16张图片 图(17)

4.6、I2C

图(18)

4.7、BxCAN

图(19)

4.8、USB

图(20)

 此图内容只适用于小容量、中容量和大容量产品

4.9、全速USB OTG引脚配置
 

图(21)

  

STM32-深入理解GPIO的8种工作模式_第17张图片 图(22)

  1.  此图内容只适用于互联型产品
  2. 如果另一个共享的外设要使用OTG_FS_VBUS引脚(PA9)或把它作为通用I/O口,必须激活PHY的断电模式(清除OTG_FS_GCCFG寄存器的位16)

4.10、SDIO

STM32-深入理解GPIO的8种工作模式_第18张图片 图(23)

4.11、ADC/DAC

图(24)

 ADC输入引脚必须配置为模拟输入

4.12、FSMC

STM32-深入理解GPIO的8种工作模式_第19张图片 图(25)

4.13、其它I/O功能

STM32-深入理解GPIO的8种工作模式_第20张图片 图(26)

你可能感兴趣的:(#,STM32单片机-各种骚操作,stm32)