首页 > 其他分享 >GPIO详解

GPIO详解

时间:2023-01-05 15:46:59浏览次数:35  
标签:输出 引脚 低电平 电平 详解 GPIO 输入

本文以STM32F40 为例进行讲解,其它雷同

1. GPIO简介

GPIO(general purpose input output,通用输入输出端口)

简单来说就是软件可控制的引脚:STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

1)GPIO引脚分布图

如上图

- GPIO有 PA ~ PG + PH0、PH1 总共114个GPIO pin
- PA~PG:每组包含 16 个IO

2)STM32引脚分类

序号 引脚类型 引脚 备注
1 电源 VBAT、VDD、VSS、VDDA、VSSA,VREF+、VREF-等 VBAT是备用电源
VDD和VSS是数字电源
VDDA和VSSA是模拟电源
VREF+和VREF-是参考电源。
2 晶振 主晶振IO、RTC晶振IO
3 下载&调试 用于JTAG下载的IO:JTMS、JTCK、JTDI、JTDO、NJRST
4 BOOT BOOT0、BOOT1 用于设置系统的启动方式
5 GPIO GPIOA ~ GPIOx 专用器件接到专用总线,如I2C、SPI、SDIO、FSM、DCMI等总线需要接到专用的IO。
普通元器件(如蜂鸣器、LED灯、按键灯),使用普通的GPIO功能即可

2. 端口配置

GPIO的基本电路结构如下:

2.1 基本部件

1)保护二极管

芯片的引脚电平0~3.3V,部分引脚可以5V,超过5V,将会对芯片造成损害。

如上图 ① 标识,主要是保护芯片免受外部输入电平过高或者过低的影响,进而保护整个芯片。

其原理为:

  • 当输入电压高于VDD_FT,上面二极管导通,使得电压最大为VDD_FT
  • 当输入电压低于VSS,上面二极管导通,使得电压最低为VSS

2)上拉/下拉电阻

用于输定输入电压

3)MOS管

用于实现推挽和开漏输出

4)施密特触发器

具有 稳压 和 滤波 的作用,就是让通过的电平输出稳定的高低电平

输入的电平往往存在着失真、不稳定、波动等,使用施密特触发器,可以过滤掉噪声干扰,最大限度的稳定输出电压

原理:

● 当电压大于正向阈值Vth,输出高电平
● 当输入电压低于阈值Vtl,输出低电平
● 当输入电平处于 Vtl ~ Vth 之间,输出保持不变

2.2 模式配置

GPIO 各个端口位分别配置为多种模式:

模式 性质 备注
输入浮空 数字输入 可读取引脚电平
若悬空,则电平不确定
输入上拉 数字输入 可读取引脚电平
若悬空,则电平为高
输入下拉 数字输入 可读取引脚电平
若悬空,则电平为低
模拟功能 模拟输入 GPIO无效
引脚直接接入内部ADC
开漏输出 数字输出 可输出引脚电平
高电平为高阻态,低电平为Vss
推挽输出 数字输出 可输出引脚电平
高电平接Vdd,低电平为Vss
复用功能推挽 数字输出 由片上外设控制
高电平为高阻态,低电平为Vss
复用功能开漏 数字输出 由片上外设控制
高电平接Vdd,低电平为Vss

1)浮空、上拉、下拉 输入

输入模式下,输出被禁止,施密特触发器打开。

由于电阻阻值很大,因此这里的上拉、下拉输入都是弱上拉、弱下拉,为了不对外部输入产生很大的影响

上拉输入:给一个默认的高电平,当没有外部输入时,默认输入高电平

下拉输入:给一个默认的低电平,当没有外部输入时,默认输入低电平

悬空输入: 如果输入引脚啥都不接,此时输入电平极易受外界的干扰导致输入电平不确定,完全由外部的输入决定

2)模拟输入

该模式主要为片上外设ADC而配置,从外部读取模拟信号

3)开漏、推挽 输出

4)复用输出

3. 寄存器

标签:输出,引脚,低电平,电平,详解,GPIO,输入
From: https://www.cnblogs.com/Jimmy1988/p/17026815.html

相关文章

  • Retrofit用法详解
    一、基础介绍1、定义Java形式的HTTPAPI接口publicinterfaceBlueService{@GET("book/search")Call<BookSearchResponse>getSearchBooks(@Query("q")Stringname,......
  • 安装算量软件安装流程详解
    安装算量软件安装流程1.以管理员身份运行安装包2.点击安装(注:如此时杀毒软件提示阻止,一律点允许)3.按如图所示点击下一步4.软件安装路劲建议不要装C盘,把路径改为D盘或其他......
  • 【Nginx基础知识】详解nginx配置url重定向-反向代理
    【Nginx基础知识】详解nginx配置url重定向-反向代理本文系统:Centos6.5_x64三台主机:nginx主机,hostname:master.lansgg.com IP:192.168.10.128           ......
  • linux crontab 定时任务详解
    前言正如闹钟对于日常生活的重要性一样,linuxcrontab定时任务在开发中是必不可少的工具,诸如:每六个月清理一次日志,每天凌晨12.00重启服务等多种场景,都可以用crontab......
  • Centos7系统中mongodb的安装详解
    MongoDB的下载网址1.下载完成后上传解压并重命名为mongodb2.在mongodb目录下创建data、logs目录[root@kht118mongodb]#mkdirdatalogs3.创建logs/mongodb.log文......
  • unity之network客户端向服务器发送消息【Command】方法详解
    如果是纯粹是聊天室功能则可以使用NetworkView的方法来进行,简单实用。如果不是聊天室功能而是要传递数据给服务器,同时为了以后更多功能的拓展性,还是应该用networkmanager来......
  • shell基础代码_ $? -ne 0 和 >、  1>、 2>、2>&1、&> 详解
     if[$?-ne0]$? 表示上一条命令返回值,是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.$0  表示第一个参数-ne表示不等于>、 ......
  • Assetbundle打包及加载入门详解(三)
                 主要讲Assetbundle的网络加载方式之前所讲的都是AssetBundle.LoadFromFile的方法,这是直接从硬盘上加载,而且属于同步加载。WWW.LoadF......
  • Assetbundle打包及加载入门详解(二)
    接着上篇,本节写如何更加科学的打包,以及打包中的一些依赖关系。科学打包:一般来说会把物体打成一个assetbundle包,把材质打成另个包,然后在加载的时候都加载出来。当然如果是有......
  • VRTK插件之瞬移详解
    在 VRTK插件中有两个瞬移的方法。所有的瞬移都是由手柄发出一条线,线与地面的交点就是瞬移所到的目的地。一个是VRTK_BasicTeleport,另一个是VRTK_HeightAdjustTeleport。下......