如何理解stm32GPIO

这篇文章将为大家详细讲解有关如何理解stm32 GPIO,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站制作、网站设计、外贸网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元观山湖做网站,已为上家服务,为观山湖各地企业和个人服务,联系电话:13518219792

一、GPIO口简介

1、  GPIO口输入输出模式 

STM32的输入输出管脚有以下8种配置方式:

输入

① 浮空输入_IN_FLOATING    ——浮空输入,可以做KEY识别

② 带上拉输入_IPU         ——IO内部上拉电阻输入  

③ 带下拉输入_IPD         ——IO内部下拉电阻输入

④ 模拟输入_AIN           ——应用ADC模拟输入,或者低功耗下省电

输出
⑤ 开漏输出_OUT_OD      ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。

⑥ 推挽输出_OUT_PP       ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的。

⑦ 复用功能的推挽输出_AF_PP   ——片内外设功能(I2C的SCL,SDA)

⑧ 复用功能的开漏输出_AF_OD    — — 片内外设功能(TX1,MOSI,MISO,SCK,SS)

2、输入输出模式详解

1推挽输出:

如何理解stm32 GPIO

      可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。  

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


 

2开漏输出:

如何理解stm32 GPIO       输出端相当于三极管的集电极。 要得到高电平状态需要上拉电阻才行。 适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)

开漏形式的电路有以下几个特点:

1、 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很小的栅极驱动电流。

2、 一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需 要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。

3、 OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。

4、可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。

二、GPIO口配置

1、根据具体应用配置为输入或输出

① 作为普通GPIO输入:

根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。

② 作为普通GPIO输出:

根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。

③ 作为普通模拟输入:

配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。

④ 作为内置外设的输入:

根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。

⑤ 作为内置外设的输出:

根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

2、输出模式下,配置速度

I/O口输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号 的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选 择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提 高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配。

2.1     对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速就够

了,既省电也噪声小。

2.2    对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的

GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。

2.3 

  对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。

关于如何理解stm32 GPIO就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


文章标题:如何理解stm32GPIO
文章源于:http://scyanting.com/article/jpphdg.html