嵌入式硬件: 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)是嵌入式系统中的通用输入输出接口,具有以下基本模式:

  1. 高电平(High)
  2. 低电平(Low)
  3. 高阻态(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的输入输出特性,有助于合理配置电路,提高嵌入式系统的可靠性和兼容性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33940.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF--Web安全--SQL注入之报错注入

CTF–Web安全–SQL注入之报错注入 一、报错注入的概念 用户使用数据库查询语句&#xff0c;向数据库发送错误指令&#xff0c;数据库返回报错信息&#xff0c;报错信息中参杂着我们想要获取的隐私数据。通常在我们在页面显示中找不到回显位的时候&#xff0c;使用报错注入。 二…

matlab 模糊pid实现温度控制

1、内容简介 matlab162-模糊pid实现温度控制 可以交流、咨询、答疑 2、内容说明 略基于PID电加热炉温度控制系统设计 摘要 电加热炉随着科学技术的发展和工业生产水平的提高&#xff0c;已经在冶金、化工、 机械等各类工业控制中得到了广泛应用&#xff0c;并且在国民经济中占…

RabbitMq C++客户端的使用

1.RabbitMq介绍 RabbitMQ 是一款开源的消息队列中间件&#xff0c;基于 AMQP&#xff08;高级消息队列协议&#xff09;实现&#xff0c;支持多种编程语言和平台。以下是其核心特点和介绍&#xff1a; 核心特点 多语言支持 提供 Java、Python、C#、Go、JavaScript 等语言的客…

星越L_备胎更换/千斤顶使用讲解

目录 1.车辆停靠在坚实平坦的路面上。 2.打开危险警示灯、 3.设立三角指示牌 4.取出备胎及随车工具 5.使用螺栓扳手对每个螺母进行松动 6使用千斤顶抬升 7、其他 轮胎漏气或爆胎的情况,需要使用千斤顶更换备胎 1.车辆停靠在坚实平坦的路面上。 2.打开危险警示灯、

【Python 数据结构 15.哈希表】

目录 一、哈希表的基本概念 1.哈希表的概念 2.键值对的概念 3.哈希函数的概念 4.哈希冲突的概念 5.常用的哈希函数 Ⅰ、直接定址法 Ⅱ、平方取中法 Ⅲ、折叠法 Ⅳ、除留余数法 Ⅴ、位与法 6.哈希冲突的解决方案 Ⅰ、开放定址法 Ⅱ、链地址法 7.哈希表的初始化 8.哈希表的元素插…

软件测试之测试分类

1. 为什么要对软件测试进行分类 软件测试是软件⽣命周期中的⼀个重要环节&#xff0c;具有较⾼的复杂性&#xff0c;对于软件测试&#xff0c;可以从不同的⻆度 加以分类&#xff0c;使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试 的分类⽅…

Devops CI/CD

Devops CI/CD DevOps 中的 CI/CD&#xff1a;持续集成与持续部署的深度解析一、CI/CD 基本概念&#xff08;一&#xff09;持续集成&#xff08;二&#xff09;持续部署 二、CI/CD 实施步骤&#xff08;一&#xff09;版本控制&#xff08;二&#xff09;自动化构建&#xff08…

leetcode105为什么可以root.left可以截取到前序遍历二叉树的(0,index),而不是(1,index+1)

这里以105前序和中序遍历构造二叉树为例&#xff0c;106同理 原因在于preoder.shift()会改变原数组&#xff0c;已经把preoder的第一个队头元素已经排除出去了&#xff01;&#xff01;&#xff01; 306题中的截取后续遍历中用pop&#xff08;&#xff09;同理

数据结构---堆栈和列

一、堆栈 1.栈堆&#xff1a;具有一定操作约束的线性表&#xff1b;&#xff08;只在一端做插入删除&#xff09; 2.栈的顺序存储结构&#xff1a; 由一个一维数组和一个记录栈顶元素位置的变量组成。定义方式如下&#xff1a; 3.入栈操作&#xff1a; 注意&#xff1a;&…

golang快速上手基础语法

变量 第一种&#xff0c;指定变量类型&#xff0c;声明后若不赋值&#xff0c;使用默认值0 package mainimport "fmt"func main() {var a int //第一种&#xff0c;指定变量类型&#xff0c;声明后若不赋值&#xff0c;使用默认值0。fmt.Printf(" a %d\n"…

【idea代码ai插件】利用接入硅基流动的deepseekR1的api在idea里实现问答,辅助写代码

注册硅基流动账号 https://siliconflow.cn/zh-cn/ 然后新建api密钥&#xff0c;这里的api密钥可以点击复制&#xff0c;等会输入要用 可以看到现在新注册是有额度的&#xff0c;你们应该是14元 模型广场这里可以调用deepseek的v3和r1&#xff0c;注意因为是蹭&#xff0c;赠…

NO.42十六届蓝桥杯备战|数据结构|算法|时间复杂度|空间复杂度|STL(C++)

数据结构 什么是数据结构 在计算机科学中&#xff0c;数据结构是⼀种数据组织、管理和存储的格式。它是相互之间存在⼀种或多种特定关系的数据元素的集合。 说点通俗易懂的话&#xff0c;数据结构就是数据的组织形式&#xff0c;研究的就是把数据按照何种形式存储在计算机中 …

【CSS3】化神篇

目录 平面转换平移旋转改变旋转原点多重转换缩放倾斜 渐变线性渐变径向渐变 空间转换平移视距旋转立体呈现缩放 动画使现步骤animation 复合属性animation 属性拆分逐帧动画多组动画 平面转换 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#x…

Keepalived高可用架构实战:从安装配置到高级应用详解

一.架构 用户空间核心组件&#xff1a; vrrp stack&#xff1a;VIP 消息通信checkers&#xff1a;监测 Real Serversystem call&#xff1a;实现 vrrp 协议状态转换时调用相关本地功能SMTP&#xff1a;邮件组件IPVS wrapper&#xff1a;生成 IPVS 规则Netlink Reflector&…

Linux:利用System V系列的-共享内存,消息队列实现进程间通信

对于管道的进程间通信方式&#xff0c;需要频繁的调用系统调用(read,write)。而我们今天首先要介绍的共享内存&#xff0c;在开辟好空间之后&#xff0c;便可以跳过系统调用&#xff0c;直接进行读写操作。 一.System V共享内存(主要) 共享内存区是最快的IPC形式。一旦这样的内…

不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析

题目A&#xff1a;日期统计 思路分析&#xff1a; 本题的题目比较繁琐&#xff0c;我们采用暴力加DFS剪枝的方式去做&#xff0c;我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串&#xff0c;但是还是会存在19月的情况&#xff0c;为此还需要在CHECK函数…

宇树人形机器人开源模型

1. 下载源码 https://github.com/unitreerobotics/unitree_ros.git2. 启动Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 这个错误通常出现在虚拟机环境中运行需要OpenGL支持的应用…

【C/C++算法】从浅到深学习--- 前缀和算法(图文兼备 + 源码详解)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章将使用八道题由浅到深的带你了解并基本掌握前缀和思想&#xff0c;以及前缀和的基…

脑电:时域分析(任务态)

时域分析&#xff1a;时间序列&#xff08;时域信号&#xff09; EEG和ERP都是时间序列 ERP&#xff1a;事件诱发的电位是随着时间变化 组水平&#xff1a;需要这一组的个体不能差异性太大。 提值的指标&#xff0c;选取平均幅值确定成分的显著情况 mean(EEG.data,3): 在第…

【C语言】自定义类型:结构体,联合,枚举(下)

前言&#xff1b;上一期我们侧重讲了一个非常重要的自定义类型结构体&#xff0c;这一期我们来说说另外两种自定义类型&#xff1a;联合&#xff0c;和枚举。 传送门&#xff1a;自定义类型&#xff1a;结构体&#xff0c;联合&#xff0c;枚举(上) 文章目录 一&#xff0c;联…