新闻详情

新闻详情

首页 / 资讯中心 / 详情

GPIO

发布时间:2026/9/30 2:26:09来源:尧图网络
GPIO
这次小编带来的是一些嵌入式基础理论概念若有不正确的地方欢迎一起探讨。1.GPIO的基础知识1.1GPIO的基本概念1.1.1 GPIO是什么GPIO即General Purpose Input/output通用输入输出出口。是MCU的一个 内部结构用来做输入输出的控制电路。输入输出的本质就是输入输出高低电平更严谨的来说就是可软件配置的外部引脚电路。从而达到获取外设信息控制外设的目的。输入的原因这些高低电平在上层语言层解释就是0/1在下层硬件外设角度就会被视为MCU控制外设的手段。输出的原因单片机的核心作用是“控制”控制相关外设就必须先获取外设相关的数据然后根据外设状态数据变化再通过输出控制外设或者报告给用户等。复用GPIO同一个物理引脚通过多路选择器 MUX 切换控制权交给片上外设UART、SPI、I2C、PWM、CAN 等接管不再由 GPIO 寄存器控制高低电平。需要复用GPIO的原因引脚数量有限减轻CPU负担。1.1.2 GPIO Port与Pin的概念Port端口的意思Port原意为“港口”在计算机科学中引申为“数据交换的入口或出口”现代微控制器eg.STM32继承了这一概念将这一组GPIO引脚称为“GPIO Port”eg.GPIOA,GPIOB,因为他们本质上是芯片与外部世界的“数据交换接口”。Pin就是引脚的意思。之所以称为“GPIO Port”而不是“GPIO Group”是因为Group只能体现分组概念体现不出来数据交换概念。Port在计算机领域就有数据交换的概念之分。1.1.3 GPIOAGPIOBGPIOC等端口每组GPIO是一个独立外设有自己的寄存器每组端口最多包含16哥引脚Px0~Px15(xA/B/C/D...)GPIOA、GPIOB、GPIOC 在存储器上映射到不同的基地址所以操作 GPIOB 不会影响 GPIOA。1.1.4 PA0PA1PB0等引脚编号含义PAx:Port A第 x 号引脚属于 GPIOA 端口;PBx:Port B第 x 号引脚属于 GPIOB 端口;PCx:Port C第 x 号引脚属于 GPIOC 端口;逻辑引脚名PA0、PB0软件、原理图上用的名字和寄存器对应。芯片物理引脚号Pin1、Pin2…芯片封装上的引脚序号和 PA0 没有数字上的对应关系。PA0、PA1、PB0 是端口 组内序号的逻辑引脚名称用来把代码里的寄存器位和芯片硬件引脚对应起来。1.1.5 GPIO与MCU芯片引脚的对应关系PA0/PA1/PB0 是逻辑引脚名逻辑引脚通过芯片内部金属走线固定连接到芯片封装上的物理引脚Pin这个映射关系由芯片厂商定义写在芯片数据手册的引脚表中。三层关系:软件层GPIOA/GPIOB端口外设有一套寄存器;逻辑引脚PA0、PA1、PB0对应端口寄存器的某一位;硬件层芯片物理引脚 Pin n芯片外壳上的焊盘引脚;GPIO并不是一个单独的“功能”而是 MCU 与外部世界进行数字信号交互的基础接口。1.2GPIO的内部结构1. 2.1输入通道引脚外部电平 → 保护二极管 → 上拉 / 下拉电阻 →施密特触发器把模拟电平整形为标准数字 0/1 → 输入数据寄存器 IDR施密特触发器消除电平抖动防止噪声误判高低电平。1.2.2输出通道输出数据寄存器 ODR或者复用外设信号 → 输出驱动电路PMOSNMOS 管 → 芯片外部引脚。1.2.3输入数据寄存器 IDRGPIOx_IDR只读寄存器每一位对应一个引脚bit0 对应 PA0作用读取引脚当前外部电平高电平读 1低电平读 0。IDR 反映的是芯片引脚上真实电平不是 ODR 的值。1.2.4输出数据寄存器 ODRGPIOx_ODR可读写寄存器写 1让引脚输出高写 0让引脚输出低。写 ODR 只是设置输出电平最终引脚电平还要看输出驱动电路。1.2.5上拉电阻 / 下拉电阻片内由寄存器 PUPDR 控制开关上拉电阻接通后引脚默认被拉到 VCC。引脚悬空时电平为高。下拉电阻接通后引脚默认被拉到 GND。引脚悬空时电平为低。关闭浮空高阻态悬空引脚电平不确定容易受干扰。1.2.6输出驱动电路PMOS NMOS 两个 MOS 管两种模式推挽输出PMOS 和 NMOS 配合。输出高时 PMOS 导通输出低时 NMOS 导通。驱动能力强适合驱动 LED。开漏输出只使用 NMOSPMOS 永远断开。输出 1 时引脚高阻输出 0 时拉低。适合 I2C 这类总线。1.2.7复用功能GPIO 引脚可以把控制权交给片上外设USART、SPI、TIM、ADC复用输出引脚不再受 ODR 控制由外设输出信号如串口 TX复用输入外部信号送入外设串口 RX配置 MODER 为复用模式再通过 AFR 寄存器选择具体复用功能。2.GPIO的工作模式2.1输出模式通用就是通常使用指的是ARM-CPU直接控制GPIO输出。复用就是重复使用指的是MCU内部的片上外设复用GPIO进行输入输出。复用器是从多组输入信号中选择一个作为有效输入。GPIO到底是被ARM-CPU直接使用还是被其他片上外设使用达到复用效果就有他说了算。输出控制电路接受内部逻辑电平直接驱动输出级MOS管的栅极控制其通断从而将弱信号转换为具有足够驱动能力的外部输出电平。补充要理解GPIO输出先要理解P-MOS和N-MOS。MOSMOSFET金属氧化物半导体场效应管。P-MOSP沟道金属氧化物半导体。N-MOSN沟道金属氧化物半导体。P-MOS和N-MOS的本质是一个开关。2.1.1通用推挽输出核心思想交替闭合或者开启P-MOS和N-MOS即可。输出数据寄存器写1闭合P-MOS断开N-MOS输出高电平。输出数据寄存器写0断开P-MOS闭合N-MOS输出低电平。本质是交替闭合断开P-MOS和N-MOS开关让外部引脚接入VDD或者接地进而对外呈现出高电压和低电压然后因为电路通路形成有输出电流推和吸收挽电流的效果。2.1.2通用开漏输出核心思想去掉P-MOS让P-MOS永远关闭。在开漏模式下MCU针对特定引脚的输出都是该引脚对应的N-MOS的漏记输出。向输出数据寄存器写1最终表示的是N-MOS断开。向输出数据寄存器写0表示N-MOS管闭合。输出数据寄存器写0N-MOS闭合输低电平输出数据寄存器写1N-MOS断开输出高阻抗所谓高阻抗就是MCU和外部针脚彻底断开相当于开路或者N-MOS D漏极和外部引脚互相悬空。开漏模式输出只能输出低电平和高阻抗无法输出高电平。2.1.3复用推挽输出核心思想引脚输出控制权从 GPIO 的 ODR 寄存器交给片上外设输出驱动电路仍然是 PMOSNMOS 推挽结构高低电平都具备强驱动能力。2.1.4复用开漏输出核心思想引脚输出控制权交给片上外设不再受 ODR 寄存器控制输出驱动采用开漏结构输出低电平时导通拉低输出高电平时为高阻态。2.2输入模式2.2.1浮空输入断开下拉电阻开关断开上拉电阻开关。2.2.2上拉输入闭合上拉电阻开关断开下拉电阻开关。开关在MCU内部可以通过MCU提供的配置寄存器选择闭合还是断开某一个开关。2.2.3下拉输入闭合下拉电阻开关断开上拉电阻开关。2.2.4模拟输入关闭该引脚的数字输入输出电路施密特触发器、上下拉电阻、输出驱动全部关闭把外部连续变化的模拟电压直接送入 ADC 模数转换模块用来采集电压信号。以上就是小编本期带来的内容。若有不当之处欢迎指正。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

计算机巡检记录:从手工填表到半自动化IPMI采集的落地指南 2026/9/30 3:24:04

计算机巡检记录:从手工填表到半自动化IPMI采集的落地指南

简介:一份面向IT运维人员的计算机巡检记录文档,系统梳理了计算机清理与维护的标准工作流程,包括使用吸尘器除尘、借助Aida64采集硬件信息并登记电源、操作系统、软件版本、IP及出厂日期,清理垃圾文件与无用软件、安装趋势科技杀毒…

阅读更多 →
倒立摆非线性控制实战:能量起摆+滑模平衡,附Python仿真 2026/9/30 3:24:04

倒立摆非线性控制实战:能量起摆+滑模平衡,附Python仿真

倒立摆这玩意儿,在控制界算是个经典玩具了。做控制的人如果没跟它打过照面,那基本等于练武术没扎过马步——但问题也出在这:市面上的倒立摆教程,绝大多数走到“线性化”就刹车了。取平衡点、泰勒展开、丢掉高阶项,最后…

阅读更多 →
Python 一键批量获取 A股/港股/期货 实时行情价格(附完整代码) 2026/9/30 3:24:04

Python 一键批量获取 A股/港股/期货 实时行情价格(附完整代码)

一、前言炒股、做量化的朋友经常需要同时跟踪多只股票或期货合约的实时价格。今天给大家分享一个免费的行情 API,支持 A股、港股、期货,并且可以批量请求,效率拉满。文末附完整可运行代码。二、API 简介接口地址:http://ddnsapi.t…

阅读更多 →
Flutter应用迁移鸿蒙:免费游戏列表从性能优化到平台适配全记录 2026/9/30 3:24:04

Flutter应用迁移鸿蒙:免费游戏列表从性能优化到平台适配全记录

开头我那次用Flutter写完游戏列表页,在鸿蒙真机上滑动的时候,帧率直接掉到20几,图片加载还一闪一闪的,整个人都麻了。后来排查了一圈,问题居然出在ListVIew没有给itemExtent、图片缓存策略又太粗暴上。今天这篇就用这个…

阅读更多 →
Docker部署MySQL 8.0:数据持久化与容器挂载实战解析 2026/9/30 3:24:04

Docker部署MySQL 8.0:数据持久化与容器挂载实战解析

最近帮朋友梳理开发机上的数据库环境,光清理旧 MySQL 就折腾了大半天。一台机器上 5.7 和 8.0 的残留共存,rpm 装的、源码编译的、apt 装的混在一起,配置互相打架,启动报错查到最后居然是两个版本的初始化脚本冲突。后来我干脆把机…

阅读更多 →
泛微E9统一集成待办中心接口实战指南 2026/9/30 3:23:51

泛微E9统一集成待办中心接口实战指南

简介:本资源是泛微E9协同办公系统「统一待办中心」的官方级集成接口文档,面向企业级Java开发工程师、系统集成实施人员及泛微生态二次开发者,解决多异构业务系统(如HR、OA、ERP)待办任务跨平台聚合与实时同步难题。文档…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉