文档章节

stm32笔记:GPIO的简介

 卤煮小鱼
发布于 2016/04/11 21:30
字数 1454
阅读 92
收藏 5

一、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推挽输出:

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

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





2开漏输出:

      输出端相当于三极管的集电极。 要得到高电平状态需要上拉电阻才行。 适合于做电流型的驱动,其吸收电流的能力相对强(一般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的引脚速度。


© 著作权归作者所有

粉丝 0
博文 15
码字总数 7973
作品 0
松江
私信 提问
STM32学习笔记-点亮第一个led

首先感谢河北科技大学航模协会-能给我这样的学习机会-感谢那些带我们教我们的学长学姐们. 点亮第一个led灯之前要先大概了解一下单片机的工作方式并且有一定的编程基础,能看懂程序 单片机上有...

qq_18984151
2018/03/18
0
0
STM32学习笔记(5)——通用定时器PWM输出

1、TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是...

葫芦娃的后桌
2018/08/09
0
0
STM32 USB 之从0开始移植笔记

-----------------------------------动机----------------------------------- 写在前面的话:最近逛淘宝无意间发现RC522居然只要10元左右就可以包邮买到,真是太便宜了,就忍不住买了个回来...

imxiangzi
2018/04/22
0
0
QianFan-zhao/LogicMaster

Logic Master What's Logic Master? Logic master is a logic protocol generator device based on stm32, accessed from a command line in a serial terminal(115200,8N1), using lua scri......

QianFan-zhao
2015/12/28
0
0
mdk5+cubeMx入门简介(点亮一个LED灯)

准备工作 安装mdk5以及cubeMx软件 cubeMx下载地址: https://www.stmcu.com.cn/Designresource/loaddesignresource/catcode/firmwaresoftware/procat/STM32?filterprocat=STM32&filterprotok......

weixin_41101375
2018/04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 自定义登录认证(二)

一、前言 本篇文章将讲述Spring Security自定义登录认证校验用户名、密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Security...

郑清
27分钟前
2
0
php yield关键字以及协程的实现

php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还有另外一种特殊对象,也就是继承...

冻结not
40分钟前
3
0
servlet请求和响应的过程

本文转载于:专业的前端网站➥servlet请求和响应的过程 1.加载 Servlet类被加载到Java虚拟机中,并且实例化。在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一...

前端老手
40分钟前
3
0
golang 1.13 errors 包来了,不用写“err 气功波”代码

引 这篇是对 errors 包 的姿势挖掘 气功波错误代码 从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码 func CmdErr(err ...

guonaihong
44分钟前
28
0
喜玛拉雅已听书单

时间倒序排 书名 作者 状态 唐砖 孑与2 进行中 死灵之书(克苏鲁神话合集) 阿卜杜拉·阿尔哈萨德 进行中 赡养人类 刘慈欣 完结 赡养上帝 刘慈欣 完结 中国太阳 刘慈欣 完结 中国太阳 刘慈欣...

Alex_Java
45分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部