嵌入式硬件: GPIO与二极管基础知识详解
1. 前言
在嵌入式系统和硬件开发中,GPIO(通用输入输出)是至关重要的控制方式,而二极管作为基础电子元件,广泛应用于信号整流、保护电路等。本文将从基础原理出发,深入解析GPIO的输入输出模式,包括高电平、低电平、高阻态,以及推挽与开漏的区别和实际应用。此外,介绍PMOS与NMOS的基本概念,帮助读者理解其在GPIO控制中的作用。
2. 二极管基础
2.1 PN结的单向导电性
二极管的基本原理是PN结的单向导电性。PN结由P型半导体和N型半导体组成,在其内部形成了空间电荷区,使得PN结在无外加电压时处于电荷平衡状态。
当对PN结施加正向电压时:
- P区的空穴向PN结方向移动,与N区的电子进行复合,使PN结变窄。
- 随着外加电压增大,扩散运动增强,漂移运动减弱。
- 当电压超过门槛电压(硅二极管约0.7V,锗二极管约0.3V),PN结导通,相当于一个小电阻。
当对PN结施加反向电压时:
- P区的空穴远离PN结,N区的电子远离PN结,使PN结变宽,无法形成导通。
- 只有微小的反向饱和电流通过,二极管表现为高阻状态。
3. MOSFET基础(PMOS与NMOS)
3.1 NMOS(N沟道MOSFET)
- 工作原理:
- 当栅极电压高于源极电压(Vgs > Vth)时,NMOS导通,电流从漏极流向源极。
- 当栅极电压低于阈值电压(Vth)时,NMOS关闭,相当于高阻态。
- 特点:
- 适用于低侧开关,常用于开漏模式。
- 当控制信号为高电平时,NMOS导通;低电平时关闭。
3.2 PMOS(P沟道MOSFET)
- 工作原理:
- 当栅极电压低于源极电压(Vgs < Vth)时,PMOS导通,电流从源极流向漏极。
- 当栅极电压高于阈值电压时,PMOS关闭,相当于高阻态。
- 特点:
- 适用于高侧开关,常用于推挽模式。
- 当控制信号为低电平时,PMOS导通;高电平时关闭。
4. GPIO基础
4.1 GPIO的输入与输出模式
GPIO(General-Purpose Input/Output)是嵌入式系统中的通用输入输出接口,具有以下基本模式:
- 高电平(High)
- 低电平(Low)
- 高阻态(High Impedance, Hi-Z)
高阻态的作用:
- 避免影响外部电路,当GPIO处于高阻态时,外部电路不会受到干扰。
- 与外部上拉电阻配合,让信号线被动拉高到指定电压(如3.3V)。
- 多个设备共用信号线,如I²C总线,允许多个器件控制同一根线而不会互相影响。
4.2 GPIO输入模式
GPIO可配置为输入模式,用于读取外部信号。
- 上拉输入:内部连接上拉电阻,默认读取高电平。
- 下拉输入:内部连接下拉电阻,默认读取低电平。
- 浮空输入:无内部上拉/下拉,受外部电路影响。
4.3 GPIO的两种输出模式:推挽与开漏
GPIO的驱动模式主要包括 推挽(Push-Pull) 和 开漏(Open-Drain/Collector)。
4.3.1 推挽输出模式
推挽模式通常由NMOS和PMOS组成,当需要输出高电平时,PMOS导通,NMOS关闭;当需要输出低电平时,NMOS导通,PMOS关闭。
推挽模式的特点:
- 能够提供较大的输出电流,直接驱动负载。
- 无需外部上拉电阻,输出驱动能力较强。
- 适用于直接控制LED、蜂鸣器等负载。
4.3.2 开漏输出模式
开漏模式仅能输出低电平或高阻态,不能直接输出高电平。
开漏模式的特点:
- 不能直接输出高电平,需要外部上拉电阻。
- 适用于多个设备共享信号线(如I²C总线)。
- 适用于不同电压等级的设备互联。
开漏模式的应用
(1) 5V单片机控制3.3V设备
假设GPIO的高电平为5V,而被控制芯片的 ENABLE
引脚仅支持3.3V,则直接使用推挽模式可能损坏芯片。
解决方案:
- 采用开漏模式,并在外部接3.3V上拉电阻。
- 当NMOS关闭时,
ENABLE
引脚被拉至3.3V。 - 当NMOS打开时,
ENABLE
引脚被拉至低电平,实现信号匹配。
(2) 多个GPIO控制同一信号
当多个GPIO需要同时控制一个输入引脚时,推挽模式可能导致短路。例如:
- GPIO_A输出高电平(3.3V)。
- GPIO_B输出低电平(0V)。
- 结果导致电流短路,损坏器件。
解决方案:
- 使用开漏模式,外部增加上拉电阻。
- 当所有GPIO均为高阻态时,
ENABLE
引脚为高电平。 - 只要有一个GPIO输出低电平,则
ENABLE
引脚为低电平。
5. 结论
GPIO是嵌入式系统中最常用的控制接口,其输入模式与输出模式均有不同应用场景。
- 推挽模式适用于直接驱动负载,如LED、蜂鸣器。
- 开漏模式适用于不同电压设备互联或多个设备共享信号线,如I²C。
- NMOS适用于低侧开关,PMOS适用于高侧开关。
- GPIO输入模式可用于读取按键、传感器信号等,需注意上拉/下拉配置。
理解GPIO的输入输出特性,有助于合理配置电路,提高嵌入式系统的可靠性和兼容性。
相关文章:
嵌入式硬件: GPIO与二极管基础知识详解
1. 前言 在嵌入式系统和硬件开发中,GPIO(通用输入输出)是至关重要的控制方式,而二极管作为基础电子元件,广泛应用于信号整流、保护电路等。本文将从基础原理出发,深入解析GPIO的输入输出模式,包…...
母婴商城系统Springboot设计与实现
项目概述 《母婴商城系统Springboot》是一款基于Springboot框架开发的母婴类电商平台,旨在为母婴产品提供高效、便捷的在线购物体验。该系统功能全面,涵盖用户管理、商品分类、商品信息、商品资讯等核心模块,适合母婴电商企业或个人开发者快…...
Redis相关面试题
以下是150道Redis相关面试题: Redis基础概念 1. Redis是什么? Redis是一个开源的、基于内存的高性能键值存储数据库,常用于缓存、消息队列等场景。 2. Redis的特点有哪些? • 高性能,读写速度快。 • 支持多种数据…...
ArcGIS助力水文分析:数据处理、地图制作与流域特征提取
在水文水环境保护中,对于信息的采集、处理和分析是关键步骤。水文水环境及其相关数据均具有空间分布特征,传统的方法难以发挥作用。地理信息系统(GIS)强大的空间数据管理和分析功能,在空间信息处理上有独到的优势&…...
docker桌面版启动redis,解决无法连接
docker run -d --name redis -p 6379:6379 -v E:\2\redis\redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf 在本地创建一个目录,里面有个redis.conf文件,内容如下,启动时绑定这个配置文件目…...
Vue 项目中 CDN 引入的利弊及解决方案
在Vue项目中,引入到工程中的所有js、css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏的体验。通过调试发送时间主要消耗…...
【QT】】qcustomplot的使用
1.下载并添加qcustomplot.c和qcustomplot.h文件 拖动一个Widget,提升为qcustomplot 成功后是这样的, 改第三行:greaterThan(QT_MAJOR_VERSION, 4): QT widgets printsupport 编译,不报错,出现带坐标轴的界面&#…...
第三周日志-web(2)
原本计划的web不是这个,但是b站上一个大佬讲web做到了连我都能听懂,不趁热打铁学一学记一记就怕忘记了 指路:Shiro反序列化漏洞(一)-shiro550流程分析_哔哩哔哩_bilibili khttps://www.zhihu.com/question/486555909 学模板先看看结构和功…...
KICK第四讲Linux 系统下安装 GCC 编译器全指南
Linux 系统下安装 GCC 编译器全指南 GCC(GNU Compiler Collection)是 Linux 系统下最常用的编译器之一,支持 C/C、Java 等多种编程语言。本文将介绍不同 Linux 发行版下的安装方法,帮助开发者快速配置开发环境。 一、使用包管理…...
SpringCloud 学习笔记1(Spring概述、工程搭建、注册中心、负载均衡、 SpringCloud LoadBalancer)
文章目录 SpringCloudSpringCloud 概述集群和分布式集群和分布式的区别和联系 微服务什么是微服务?分布式架构和微服务架构的区别微服务的优缺点?拆分微服务原则 什么是 SpringCloud ?核心功能与组件 工程搭建父项目的 pom 文件 注册中心Rest…...
go 安装swagger
1、依赖安装: # 安装 swag 命令行工具 go install github.com/swaggo/swag/cmd/swaglatest# 安装 gin-swagger 和 swagger 文件的依赖 go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files 2、测试 cmd中输入: swag -v 如果…...
Java中关于Optional的 orElse 操作,以及 orElse 与 orElseGet 的区别
文章目录 1. 大概说明2. 详细分析2.1 .orElse 操作2.2 .orElse 的作用:避免空指针异常2.3 为什么要用?2.4 orElseGet如何使用2.5 orElse和orElseGet的区别 1. 大概说明 这篇文章的目的是为了说明: orElse 如何使用orElseGet 如何使用两者的…...
Sqlmap注入工具简单解释
安装 1. 安装 Python SQLMap 是基于 Python 开发的,所以要先安装 Python 环境。建议安装 Python 3.9 或更高版本,可从 Python 官方网站 下载对应操作系统的安装包,然后按照安装向导完成安装。 2. 获取 SQLMap 可以从 SQLMap 的官方 GitHu…...
petalinxu 在zynq的FPGA下的ST7735S的驱动配置
spi的接线: 【TFT模块排针8】 【开发板spi,gpio】【antminers9】 VCC ----------- 3.3V ----------- 3.3V GND ----------- GND ----------- GND BLK(背光)-------GPIO----------- BANK34_L4N_RXD2(w13; j2.12; gpio[2]) RST(复位ÿ…...
数据篇| App爬虫入门(一)
App 的爬取相比 Web 端爬取更加容易,反爬虫能力没有那么强,而且数据大多是以 JSON 形式传输的,解析更加简单。在 Web 端,我们可以通过浏览器的开发者工具监听到各个网络请求和响应过程,在 App 端如果想要查看这些内容就需要借助抓包软件。常见抓包软件有: 工具名称…...
【6】拓扑排序学习笔记
前言 有向无环图和拓扑排序直接关联到中后期的图论建模思想,是很重要的基础知识。这个如果不彻底弄懂,以后图论会很困难。 有向无环图 正如其名,一个边有向,没有环的图,也叫DAG。 DAG图实际运用:描述含…...
OpenCV实现图像特征提取与匹配
一、特征检测与描述子提取 选择特征检测器 常用算法包括: ORB:一种高效的替代SIFT和SURF的算法,主要用于移动机器人和增强现实等领域。适合实时应用,结合FAST关键点与BRIEF描述子。SIFT(尺度不变特征变…...
MyBatis 的核心配置文件是干什么的? 它的结构是怎样的? 哪些是必须配置的,哪些是可选的?
MyBatis 的核心配置文件(通常命名为 mybatis-config.xml)是 MyBatis 应用程序的入口点,它定义了 MyBatis 的全局配置信息 。 核心配置文件的作用: 配置 MyBatis 的运行时行为: 通过 <settings> 标签设置全局参数ÿ…...
VLAN,DHCP实验访问物理机
目标 三层交换机完成DHCP自动分配IP地址不同vlan间完成通信DNS服务器能够解析www.baidu.com,使PC机能够访问连接真实物理机,PC机与物理机能够互相访问 步骤 一、创建VLAN,配置好PC机和交换机的IP地址 LSW1 [LSW1]vlan batch 10 20 Info: T…...
六十天前端强化训练之第十七天React Hooks 入门:useState 深度解析
欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、知识讲解 1. Hooks 是什么? 2. useState 的作用 3. 基本语法解析 4. 工作原理 5. 参数详解 a) 初始值设置方式 b) 更新函数特性 6. 注意事项 7. 类组…...
解决 HTTP 请求中的编码问题:从乱码到正确传输
文章目录 解决 HTTP 请求中的编码问题:从乱码到正确传输1. **问题背景**2. **乱码问题的原因**2.1 **客户端编码问题**2.2 **请求头缺失**2.3 **服务器编码问题** 3. **解决方案**3.1 **明确指定请求体编码**3.2 **确保请求头正确**3.3 **动态获取响应编码** 4. **调…...
跨国企业网络案例分析:SD-WAN智能组网
跨国企业面临的网络问题日益增加,如全球供应链协同、跨国研发协作及实时生产数据传输等场景,对网络质量提出更高要求。本文将深度解析某跨国工业集团如何通过SD-WAN实现网络架构智能化转型。 该集团以上海全球总部为核心,构建了覆盖亚欧美三大…...
视频孪生与三维视频融合:重构工业现场的“数字视网膜“
在浙江某精密制造企业的总控中心,30米长的曲面屏上实时跳动着工厂的每个生产细节:机械臂的运动轨迹与数字模型完全同步,质检工位的操作误差被自动标记,AGV小车的行进路径在三维空间中以光带形式可视化呈现。这种虚实交融的场景并非…...
STM32Cubemx-H7-7-OLED屏幕
如何把江科大的OLED标准库文件换成hal库的文件 前言 本文讲解如在hHAL库中使用OLED,其实江科大做的文件好已经很好了 只讲操作,不讲废话,默认大家都有32基本操作 创建工程 首先创建工程 把那两个引脚设置成开漏 获取标准库文件 打开江科大O…...
FPGA为何要尽量减少组合逻辑的使用
在FPGA设计中,组合逻辑的使用确实需要谨慎,尤其是要尽量减少它的复杂性。这并不是因为组合逻辑本身不好,而是因为它在实际应用中容易引发一系列问题,而这些问题往往与FPGA的设计哲学和硬件特性相冲突。让我从几个关键点来和你聊聊…...
缓存使用的具体场景有哪些?缓存的一致性问题如何解决?缓存使用常见问题有哪些?
缓存使用场景、一致性及常见问题解析 一、缓存的核心使用场景 1. 高频读、低频写场景 典型场景:商品详情页、新闻资讯、用户基本信息。特点:数据更新频率低,但访问量极高。策略: Cache-Aside(旁路缓存)&a…...
基于 RWA 模型与 AI - Agent 协同的企业级 aPAAS 架构设计
一、引言 在企业数字化转型不断深化的当下,现实世界资产(RWA)模型与人工智能智能体(AI - Agent)的协同融合,为企业级应用平台即服务(aPAAS)架构的创新发展带来了新契机。这种架构旨在…...
基于“动手学强化学习”的知识点(一):第 14 章 SAC 算法(gym版本 >= 0.26)
第 14 章 SAC 算法(gym版本 > 0.26) 摘要SAC 算法(连续)SAC 算法(离散) 摘要 本系列知识点讲解基于动手学强化学习中的内容进行详细的疑难点分析!具体内容请阅读动手学强化学习&…...
【QT:信号和槽】
QT信号涉及的三要素:信号源、信号类型、信号的处理方式。 QT的信号槽机制: 给按钮的点击操作关联一个处理函数,用户点击按钮时触发,对应的处理函数就会执行 QT中使用connect函数将信号和槽关联起来,信号触发…...
Oracle中的INHERIT PRIVILEGES权限
Oracle中的INHERIT PRIVILEGES权限 存储过程和用户函数的AUTHID属性调用者权限vs定义者权限一个简单的示例INHERIT PRIVILEGES权限的含义INHERIT PRIVILEGES权限的安全隐患注意到Oracle 19c数据库中有如下权限信息: SQL> select grantor,grantee,table_name,privilege fro…...
Compose笔记(九)--Checkbox
这一节主要了解一下Compose中的Checkbox,它是Jetpack Compose UI框架中的一个组件,用于创建复选框功能。它允许用户从一个集合中选择一个或多个项目,可以将一个选项打开或关闭。与传统的Android View系统中的Checkbox相比,Compose…...
CSS中粘性定位
1.如何设置为粘性定位? 给元素设置posttion:sticky 即可实现粘性定位. 可以使用left, right ,top, bottom 四个属性调整位置,不过最常用的是top 值. 2.粘性定位的参考点在哪里? 离他最近的一个拥有"滚动机制"的祖先元素,即便这个祖先不是最近的真实可滚动祖先. 3.粘…...
日本IT|AWS工作内容及未来性、以及转职的所需资质和技能
AWSとは AWSはAmazon Web Services(アマゾンウェブサービス)の略称です。 名称から分かるとおり、ネットを通じた通販などを事業として行っているAmazon.com社がクラウドサービスとして運営しています。 本来であれば自分たちでインフラ環境を構築する…...
《Spring日志整合与注入技术:从入门到精通》
1.Spring与日志框架的整合 1.Spring与日志框架进行整合,日志框架就可以在控制台中,输出Spring框架运行过程中的一些重要的信息。 好处:方便了解Spring框架的运行过程,利于程序的调试。 Spring如何整合日志框架 Spring5.x整合log4j…...
如何判断一个项目用的是哪个管理器
如何判断一个项目用的是哪个管理器 npm: 如果项目中存在 package-lock.json 文件,这通常意味着项目使用 npm 作为包管理器。package-lock.json 文件会锁定项目的依赖版本,确保在不同环境中安装相同的依赖。 pnpm: 如果项目中存在 pnpm-lock.yaml 文件&a…...
软件工程概述
软件开发生命周期 软件定义时期:包括可行性研究和详细需求分析,任务是确定软件开发的总目标。 问题定义可行性研究(经济、技术、操作、社会可行性,确定问题和解决办法)需求分析(确定功能需求,性…...
文件系统 linux ─── 第19课
前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…...
一篇博客搞定时间复杂度
时间复杂度 1、什么是时间复杂度?2、推导大O的规则3、时间复杂度的计算3.1 基础题 13.2 基础题 23.3基础题 33.4进阶题 13.5进阶题 23.6 偏难题 13.7偏难题 2(递归) 前言: 算法在编写成可执行程序后,运行时要耗费时间和…...
微信小程序实现根据不同的用户角色显示不同的tabbar并且可以完整的切换tabbar
直接上图上代码吧 // login/login.js const app getApp() Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函…...
S_on@atwk的意思
S_onatwk 可能是某种自动化或控制系统中的符号或标记,尤其在PLC(可编程逻辑控制器)编程中,类似的表达方式通常用于表示特定的信号、状态或操作。 我们可以分析这个表达式的各个部分: S_on:通常࿰…...
Liunx启动kafka并解决kafka时不时挂掉的问题
kafka启动步骤 先启动zookeeper,启动命令如下 nohup ./zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties > /home/kafka/kafka/zookeeper.log 2>&1 &再启动kafka,启动命令如下 nohup ./kafka-server-start.sh…...
16 | 实现简洁架构的 Store 层
提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…...
华为hcia——Datacom实验指南——以太网帧和IPV4数据包格式(一)
实验开始 第一步配置环境 第二步配置客户端 如图所示,我们把客户端的ip配置成192.168.1.10,网关设为192.168.1.1 第三步配置交换机1 system-view sysname LSW1 vlan batch 10 interface ethernet0/0/1 port link-type access port default vlan 10 qu…...
ubuntu软件——视频、截图、图片、菜单自定义等
视频软件,大部分的编码都能适应 sudo apt install vlc图片软件 sudo apt install gwenview截图软件 sudo apt install flameshot设置快捷键 flameshot flameshot gui -p /home/cyun/Pictures/flameshot也就是把它保存到一个自定义的路径 菜单更换 sudo apt r…...
CSS中z-index使用详情
定位层级 1.定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的; 2.如果位置发生重叠,默认情况是:后面的元素,会显示在前面元素之上; 3.可以通过CSS属性z-index调整元素的显示层级; 4.z-index的属性值是数字,没有单位,值越大显示层级越高; 5.只有定位的元素…...
qt 自带虚拟键盘的编译使用记录
一、windows 下编译 使用vs 命令窗口,分别执行: qmake CONFIG"lang-en_GB lang-zh_CN" nmake nmake install 如果事先没有 指定需要使用的输入法语言就进行过编译,则需要先 执行 nmake distclean 清理后执行 qmake 才能生效。 …...
杨辉三角形(信息学奥赛一本通-2043)
【题目描述】 例5.11 打印杨辉三角形的前n(2≤n≤20)行。杨辉三角形如下图: 当n5时 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 输出: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 【输入】 输入行数n。 【输出】 输出如题述三角形。n行&#…...
CentOS 7 系统上安装 SQLite
1. 检查系统更新 在安装新软件之前,建议先更新系统的软件包列表,以确保使用的是最新的软件源和补丁。打开终端,执行以下命令: sudo yum update -y -y 选项表示在更新过程中自动回答 “yes”,避免手动确认。 2. 安装 …...
程序化广告行业(13/89):DSP的深入解析与运营要点
程序化广告行业(13/89):DSP的深入解析与运营要点 大家好!一直以来,我都对程序化广告行业保持着浓厚的学习兴趣,在探索的过程中积累了不少心得。今天就想把这些知识分享出来,和大家一起学习进步…...
使用 Doris 和 LakeSoul
作为一种全新的开放式的数据管理架构,湖仓一体(Data Lakehouse)融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势,帮助用户更加便捷地满足各种数据处理分析的需求,在企业的大数据体系中已经得到越来越…...