当前位置: 首页 > news >正文

GPIO输入和输出

参考视频:2.1 [GPIO]4种输出模式_哔哩哔哩_bilibili

输出:通过写0或者写1,控制引脚输出低电压或高电压。

输入:通过读取引脚是0还是1,判断引脚输入的是高电压还是低电压。

输出

推挽开漏
通用通用输出推挽通用输出开漏
复用复用输出推挽复用输出开漏

输出主要和下半部分相关,I/O引脚之所以可以向外输出电压,就是因为这两个MOS管。可以把这两个MOS管直接想象成两个开关。

推挽模式

P-MOS和N-MOS交替导通,写0输出低,写1输出高。

  • 写0的时候,就是P-MOS管断开,N-MOS管导通
  • 写1的时候,就是P-MOS管导通,N-MOS管断开

开漏模式

P-MOS管断开,控制N-MOS通断。写0输出低,写1输出高阻抗。

  • 写0的时候,N-MOS管导通,I/O引脚低电压
  • 写1的时候,N-MOS管断开,I/O引脚高阻态

写1的时候,因为上下都断开了,所以I/O引脚的电流为0,由欧姆定律,电流为0,那电阻就无穷大。

通用和复用

通用就是通过编程的方式,命令CPU向I/O引脚写0或写1,然后写的0还是1会直接控制后面两个MOS管的通还是断,引脚就可以对应的输出高电压、低电压或者是高阻抗。

复用就是使用其它片上外设来控制引脚。

IO最大输出速度

IO最大输出速度:向IO交替写0和1且输出不失真的最快速度。

一开始写0和1的速度慢,每秒写10次,逐步加快到100次,1000次,最后在10万次的时候,发现波形不能正常输出了,10万次就是I/O引脚的最大输出速度。

上升时间、下降时间和保持时间

  • 理想的情况是向I/O引脚写1,电压会瞬间从0V变成3.3V;当向I/O引脚写0的时候,电压会从3.3V立刻变为0。
  • 但实际情况会有一个上升的过程,写1的时候,电压会经历一段时间缓慢的上升,从0到3.3V,称为上升时间;当写0之后,电压会从3.3V缓慢的下降到0V,称为下降时间;中间输出有效电压的时间称为保持时间。

什么限制了IO的最大输出速度

就是上升时间和下降时间的长短。

当以比较慢的速度交替写0和写1,因为写的比较慢,所以上升时间和下降时间两个斜坡之间的距离比较长,所以中间保持时间就比较长,中间保持时间就是输出有效电压的时间。

加快写0和写1的速度,上升时间和下降时间两个斜坡之间的距离变小了,中间保持时间的距离变短了,输出有效电压的时间变短了。

再加快写0和写1的速度,上升沿的斜坡和下降沿的斜坡靠在了一起,中间的保持时间变成了0,完全不能向外输出有效的电压了,这就证明写0和写1的速度已经超过了I/O引脚的最大输出速度了。这时可以通过减小上升时间和下降时间,就又能输出有效的波形了。

最大输出速度应该如何选择

低速:2MHz;中速:10MHz;高速:50MHz。

选取满足要求的最小值,过于陡峭得边沿会增加耗电、并引入EMI问题。

输入

红色上面的就是输入部分。当只闭合上面的开关,对应的模式就是叫输入上拉;当只闭合下面的开关,对应的模式就是输入下拉;当两个开关都断开,I/O引脚就悬空了,对应的模式就是输入浮空

把外部的信号通过引脚输入到单片机当中,经过这一部分的电路处理之后,就把外部输入引脚的高低电压转换成0和1这样的数字。如果通过引脚输入的是低电压,比如是0V,产生的数字就是0;如果通过引脚输入的是高电压,比如是3.3V,得到的就是数字1。然后输入的数字会保存到输入数据寄存器里面。然后可以命令CPU读取输入数据寄存器里面的值,通过判断0还是1,就可以知道输入的是高电压还是低电压。

保护二极管

输入的外部电压过高或过低都会造成损害,所以保护二极管的作用就是把输入的电压限制在一定范围内。

保护二极管:把输入电压限制在一定范围内 VSS-0.7V ~ Vdd+0.7V。

比如输入电压大于4V,因为Vdd是3.3V,上面保护二极管的电压就大于0.7V了,而保护二极管的导通电压是0.7V,此时二极管导通,4V电压就不会流到后面电路里面。

上拉电阻和下拉电阻

施密特触发器是输入阻抗无穷大,可以把它等效于一个大电阻,阻值无穷大,等效的就是右边那张图。

不考虑上拉电阻和下拉电阻。当引脚输入0V时,CPU读出的就是0;当输入引脚为3.3V,CPU读出的就是1;当引脚是悬空的时候,因为施密特触发器是输入阻抗无穷大,所以上面就是一根孤零零的导线,CPU读到的电压就一会是0一会是1。

上拉电阻:

输入0V和3.3V都没有什么问题。当引脚悬空,就相当于上拉电阻和阻值无穷大的电阻串联了的电路图,上拉电阻分得的电压为0V,CPU读到的就是1。

上拉电阻:当引脚悬空时,产生一个默认的高电压。

下拉电阻:当引脚悬空时,产生一个默认的低电压。

施密特触发器

把输入的高低电压转换成1和0这样的数字。

有两个门限电压VTH和VTL,只有当高于VTH或者低于VTL时,输出电压才会发生变化。

相关文章:

GPIO输入和输出

参考视频:2.1 [GPIO]4种输出模式_哔哩哔哩_bilibili 输出:通过写0或者写1,控制引脚输出低电压或高电压。 输入:通过读取引脚是0还是1,判断引脚输入的是高电压还是低电压。 输出 推挽开漏通用通用输出推挽通用输出开漏…...

时序动作定位 | DDG-Net:弱监督时间动作定位的判别驱动图网络(ICCV 2023)

"><DDG-Net: Discriminability-Driven Graph Network for Weakly-supervised Temporal Action Localization> 代码:https://github.com/XiaojunTang22/ICCV2023-DDGNet 这篇论文探讨了弱监督时间动作定位(WTAL)任务,指出现有方法在特征提取时依赖于在其他数…...

mapbox没有token/token失效,地图闪烁后变空白,报错Error: A valid Mapbox access token is required to use Mapbox GL JS.

目录 mapbox没有token/token失效&#xff0c;地图闪烁后空白&#xff0c;报错Error: A valid Mapbox access token is required to use Mapbox GL JS. 一、问题描述 二、mapbox去除token验证 1、找到mapbox-gl文件夹 2、找到mapbox-gl.js文件 3、找到对应位置并修改 4、清…...

C#运动控制

在 C# 中实现运动控制主要涉及如何使用编程语言控制运动设备&#xff08;如电机、伺服电机、传感器等&#xff09;。以下是一些基本概念和示例&#xff0c;帮助你入门运动控制的编程。 1. 运动控制的基本概念 运动模型&#xff1a;了解运动的基本原理&#xff0c;包括线性运动…...

监控易监测对象及指标之:Kafka中间件JMX监控指标解读

监控易作为一款功能强大的监控软件&#xff0c;旨在为企业提供全方位的IT系统监控服务。其中&#xff0c;针对Kafka中间件的JMX监控是监控易的重要功能之一。本文将详细解读监控易中Kafka的JMX监控指标&#xff0c;帮助企业更好地理解并运用这些数据进行系统性能调优和故障排查…...

PDF文件为什么不能编辑是?是啥原因导致的,有何解决方法

PDF文件格式广泛应用于工作中&#xff0c;但有时候我们可能遇到无法编辑PDF文件的情况。这可能导致工作效率降低&#xff0c;特别是在需要修改文件内容时显得尤为棘手。遇到PDF不能编辑时&#xff0c;可以看看是否以下3个原因导致的。 一、文件受保护 有些PDF文件可能被设置了…...

海螺AI在人类表情刻画中的应用:技术与创新

引言 随着人工智能技术的不断发展&#xff0c;AI在人类表情刻画方面取得了重大突破。海螺AI&#xff08;Conch AI&#xff09;作为这一领域的领先技术&#xff0c;因其高度逼真的表情生成和细腻的情感表达能力&#xff0c;受到了广泛关注。本文将探讨海螺AI在人类表情刻画中的…...

【Python实战】几种打包python代码的方法!!!

Python是一种高级编程语言。因此&#xff0c;将Python代码打包成可执行文件&#xff08;.exe&#xff09;是一种非常有效的解决方案&#xff0c;能够使用户无需安装Python环境即可直接运行程序&#xff0c;从而提升使用体验。 1、pyinstaller 使用 PyInstaller 打包 Python 代…...

(已开源-ECCV2024)BEV检测模型-LabelDistill,使用真值进行知识蒸馏

项目链接&#xff1a;https://github.com/sanmin0312/LabelDistill (中文版翻译) 文章目录 1. Introduction & Related Work2. Method & Code3. Experiments3.1 Main Results3.2 Ablation Study 1. Introduction & Related Work 2. Method & Code 3. Experim…...

web前端第一次作业

以下为代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"java-api.super-yx.com/register" method"post" enctype"multipart/form-…...

CMake 开发者手册

CMake 开发者手册 CMake 开发者手册一、介绍二、cmake 访问 Windows 注册表2.1 cmake 查询 Windows 注册表2.2 cmake 使用 Windows 注册表查找 3. find_package 查找模块3.1 cmake 查找模块的示例用法3.2 标准变量名称3.3 find_package 一个简单的查找模块示例 六、其他文章推荐…...

Redis入门:在Java程序中高效使用Redis

准备工作 下载windows版的Redis&#xff08;自行查找网络资源&#xff09; 解压到指定文件夹 如图所示&#xff1a;Redis的目录结构 redis本质上也是一个数据库&#xff0c;只不过经常被用作缓存 。redis分为服务端和客户端&#xff0c;先启动服务器redis-server&#xff0c;在…...

活着就好20241021

今日提醒&#xff1a;2024年10月21日&#xff0c;星期一&#xff0c;已是开工第247天。早安&#xff0c;摸鱼界的同仁们&#xff01; 健康警钟&#xff1a;即便工作繁忙&#xff0c;也别忘了关爱自己。起身走走&#xff0c;茶水间、厕所、廊道都是好去处&#xff0c;毕竟&…...

阿里字节技术管理岗位面试要求

在阿里巴巴等互联网公司&#xff0c;技术管理岗&#xff08;如技术团队负责人 TL 或 P8/P9 级别的职位&#xff09;面试具有较高的技术要求和管理能力的考核。面试的问题和侧重点通常包括技术深度、架构设计、团队管理、项目推动等多方面。以下是一些常见的面试问题类型、侧重点…...

MySQL !=NULL 与IS NOT NULL

1、! 与<>比较 在MySQL中 ! 和 <> 的功能一致&#xff0c;在sql92规范中建议是&#xff1a;!&#xff0c;新的规范中建议为: <> 2、!NULL 与IS NOT NULL 比较 先说结论&#xff1a;默认情况下做比较条件时使用关键字“IS NULL”和“IS NOT NULL”&#xff1…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十六集(上篇):制作更多地图,更多敌人,更多可交互对象

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、第一个代表性场景 1.制作敌人僵尸跳跳虫更多敌人2.制作敌人阿斯匹德更多可交互对象3.制作敌人孵化虫和它的孩子二、第二个代表性场景 1.制作更多敌人2.制作…...

Soap-UI传参

<?xml version"1.0" encoding"UTF-8"?> <soapenv:Envelope xmlns:soapenv"http://schemas.xmlsoap.org/soap/envelope/" xmlns:web"http://webservice.ihosp.jxmns.thirdparty.his.gocent.com/"><soapenv:Header/>…...

Centos7搭建minio对象存储服务器

Centos7搭建minio对象存储服务器 安装二进制程序配置服务文件 安装二进制程序 参考&#xff1a;https://segmentfault.com/q/1010000042181876 minio中国版&#xff1a;https://www.minio.org.cn/download.shtml#/linux # 下载二进制程序 wget https://dl.min.io/server/min…...

递归算法之汉诺塔问题(Tower of Hanoi)详细解读

汉诺塔问题&#xff08;Tower of Hanoi&#xff09;是一个经典的递归问题&#xff0c;由法国数学家 douard Lucas 于1883年提出。问题描述了如何将不同大小的圆盘从一个柱子移到另一个柱子&#xff0c;同时遵循特定规则。它是计算机科学中用来展示递归思想和算法设计的经典案例…...

软件设计模式------工厂方法模式

工厂方法模式&#xff08;Factory Method Pattern&#xff09;&#xff0c;又称工厂模式&#xff0c;也叫虚拟构造器模式&#xff08;Virtual Constructor Pattern&#xff09;或多态工厂模式&#xff08;Polymorphic Pactory Pattern&#xff09;,属于类创建型模式。 我们知道…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...