GPIO模式詳解:推挽/開漏/浮空/上拉/下拉/施密特(遲滯)輸入

GPIO(General Purpose Input Output)可用于執行數字輸入或輸出功能。典型的應用包括從/向模擬或數字傳感器/設備讀寫數值、驅動LED、為I2C通信驅動時鐘、生成外部組件的觸發、發出中斷等。

文章目錄

  • 1 GPIO簡介
  • 2 輸出模式
    • 2.1 推挽輸出
    • 2.2 開漏輸出
  • 3 輸入模式
    • 3.1 高阻態(浮空)、上拉、下拉
    • 3.2 施密特觸發輸入

1 GPIO簡介

一個GPIO引腳主要有兩個緩沖區,即輸入和輸出。

在這里插入圖片描述

輸入和輸出由使能引腳ENABLE控制:

在這里插入圖片描述

每個輸入/輸出緩沖區都有一個PMOS和NMOS晶體管以及一個非門。這兩個晶體管的柵極和漏極連接在一起,如下圖所示:

在這里插入圖片描述

2 輸出模式

如果將邏輯高電平輸出到引腳,則PMOS打開,NMOS關閉,從而將VCC連接到輸出引腳。這個階段被稱為推相位,因為它類似于推動電流。如果輸出邏輯低電平到引腳,則NMOS打開,PMOS關閉,從而將輸出引腳連接到地,由于它看起來像是在拉電流,因此被稱為拉相位

在這里插入圖片描述

2.1 推挽輸出

推挽模式是GPIO輸出模式的默認狀態。引腳可以使用PMOS晶體管或NMOS晶體管將信號“推”高或者“拉”低。

在這里插入圖片描述

流入緩沖區地端的電流被稱為灌電流(Current Sinking),相反地,從緩沖區產生的電流被稱為拉電流(Current Sourcing)。拉電流始終通過PNP或PMOS晶體管完成,而灌電流通過NPN或NMOS晶體管完成。

由于PMOS(PNP)晶體管通常具有較高的電流驅動能力,即拉電流時所需的電流較大。因此一個GPIO引腳就可以驅動多個GPIO引腳。

在這里插入圖片描述

2.2 開漏輸出

在這種配置中,沒有PMOS晶體管,而NMOS晶體管的漏極保持在浮空狀態。因此這種配置被稱為開漏。

在這里插入圖片描述

當輸出邏輯低電平時,NMOS將打開并接地。輸出高電平時,NMOS不會打開,引腳處于浮動狀態。

在這里插入圖片描述

換句話說,這種模式僅支持灌電流。為了避免這種浮動狀態,我們可以在NMOS的漏極接一個上拉電阻。

在這里插入圖片描述

何時使用推挽和開漏?

  • 推挽用于不需要在同一組引腳上同時傳輸和接收數據的協議,如UART、SPI
  • 開漏可用于執行雙向通信的引腳,如I2C協議

3 輸入模式

如果引腳處于邏輯高電平輸入狀態,那么PMOS晶體管將打開,NMOS晶體管關閉,從而將Vcc連接到GPIO。 反之GPIO連接到地。

在這里插入圖片描述

3.1 高阻態(浮空)、上拉、下拉

高阻態就是引腳既沒有上拉也沒有下拉,而是保持漂浮狀態。在沒有外部驅動的情況下,該狀態是不確定的。

默認情況下,在上電后GPIO引腳處于高阻態輸入模式。浮動引腳極易受到噪聲干擾,可能會導致兩個晶體管導通并提供直接路徑從VCC到GND的漏電流。我們絕對不應將引腳保持在浮動狀態,因為漏電流將導致高功耗,在最壞的情況下還可能導致芯片復位。 為了避免這種情況,可以配置上拉電阻或下拉電阻。

在這里插入圖片描述

在GPIO配置為上拉時,下面的開關打開,則PMOS導通;下面的開關閉合,則NMOS導通。

在這里插入圖片描述

反之,GPIO配置為下拉時,上面的開關閉合,則PMOS導通;上面的開關打開,則NMOS導通。

在這里插入圖片描述

3.2 施密特觸發輸入

這種輸入類型與我們之前討論的常規輸入緩沖區不同,它連接到一個施密特觸發器。在輸入信號接近閾值時,由于噪聲或其他不穩定性因素,輸入信號可能會在上升和下降閾值之間擺動。這可能導致觸發器在閾值之間多次切換,產生不確定的輸出狀態。所以為了確保可靠性,需要添加上拉或下拉電阻來明確信號的狀態

在這里插入圖片描述

什么是施密特觸發器?

施密特觸發器是一種電壓比較器,只有在輸入電壓超過上閾值時才會啟動,一旦啟動,它只有在輸入電壓低于下閾值時才會關閉。施密特觸發器表現出的這種特性被稱為滯回(hysteresis)。

下面為普通輸入緩沖區和帶有施密特觸發器的輸入緩沖區在處理嘈雜信號時的輸出比較:

在這里插入圖片描述

可以看出,普通輸入緩沖區的輸出隨噪聲而波動。而施密特觸發器抑制了很多噪聲并提供了穩定的輸出。因此,在嘈雜的環境中,使用施密特觸發器輸入是很有用的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161831.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161831.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161831.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

推薦一款適合做智慧旅游的前端模板

目錄 前言 一、功能介紹 二、前端技術介紹 三、功能及界面設計介紹 1、數據概覽 2、車輛監控 3、地圖界面 4、其它功能 四、擴展說明 總結 前言 智慧旅游是一種全新的旅游業務模式,它充分利用先進的信息技術,提升旅游體驗,優化旅游管…

【Axure高保真原型】樹形表格

今天和大家分享樹形表格的原型模板,點擊樹的箭頭可以打開或者收起子節點,點擊表格內容,可以選中該行內容實現高亮變色效果,樹形表格是通過中繼器制作的,使用簡單,只需要按要求填寫中繼器表格即可&#xff0…

2023亞太杯數學建模思路 - 案例:粒子群算法

文章目錄 1 什么是粒子群算法?2 舉個例子3 還是一個例子算法流程算法實現建模資料 # 0 賽題思路 (賽題出來以后第一時間在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法? 粒子群算法(Pa…

安防監控視頻融合平臺EasyCVR定制化頁面開發

安防監控EasyCVR視頻匯聚平臺基于云邊端智能協同,支持海量視頻的輕量化接入與匯聚、轉碼與處理、全網智能分發、視頻集中存儲等。安防視頻平臺EasyCVR拓展性強,視頻能力豐富,具體可實現視頻監控直播、視頻輪播、視頻錄像、云存儲、回放與檢索…

ConditionObject介紹(二)

1. Condition的signal方法分析 分為了幾個部分: ● 確保執行signal方法的是持有鎖的線程 ● 脫離Condition的隊列 ● 將Node狀態從-2改為0 ● 將Node添加到AQS隊列 ● 為了避免當前Node無法在AQS隊列正常喚醒做了一些判斷和操作 // 線程掛起后,可以基于…

Centos設置nginx開機自啟動設置

Centos設置nginx開機自啟動設置 要設置CentOS中的Nginx開機自啟動,可以按照以下步驟進行操作: 首先,登錄到CentOS服務器上,并以root用戶或具有sudo權限的用戶身份執行以下命令來安裝Nginx(如果尚未安裝)&a…

字符集合!!!

字符集合!!! 描述 輸入一個字符串,求出該字符串包含的字符集合,按照字母輸入的順序輸出。 數據范圍:輸入的字符串長度滿足 1 \le n \le 100 \1≤n≤100 ,且只包含大小寫字母,區分大小…

中國信息通信研究院產業與規劃研究所校招一面、二面內容

本文介紹2024屆秋招中,中國信息通信研究院的數字孿生智慧城市研究員崗位一面、二面的面試基本情況、提問問題等。 10月投遞了中國信息通信研究院的數字孿生智慧城市研究員崗位,所在部門為數字孿生與城市數字化研究部。目前完成了一面與二面,在…

Django 模型和Admin站點管理(三)

一、定義模型 (1) 創建模型類,必須要繼承自 models.Model from django.db import models# Create your models here. #設計數據庫 #創建模型 class UserModel(models.Model):namemodels.CharField(max_length30) #對應于SQL name varchar(30…

K8s實戰RestartPoliy策略

一、默認策略為Always cmd.yaml apiVersion: v1 kind: Pod metadata:name: myapp-pod labels:app: myapp spec: containers:- name: myapp-container image: busyboxcommand: [sh, -c, echo OK!&& sleep 60]首先我們根據這個yaml創建一個測試的pod 執行命令 kubec…

Vue.observable可以在vue2中給新增的屬性增加響應式

將data中的config數據轉為響應式: data() {return {config: {password1: "YQd^7D1",password2: "YQd^7D2",password3: "YQd^7D3"}}; }, computed: {transformedConfig() {if (this.config) {return Object.keys(this.config).map(k…

C++二維數組中的查找

4. 二維數組中的查找 題目鏈接 牛客網 題目描述 給定一個二維數組,其每一行從左到右遞增排序,從上到下也是遞增排序。給定一個數,判斷這個數是否在該二維數組中。 Consider the following matrix: [[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[1…

深度之眼Paper帶讀筆記GNN.08.GCN(下)

文章目錄 前言細節四:卷積核介紹圖卷積核初代目圖卷積核二代目契比雪夫多項式例子小結 GCN公式推導 實驗設置和結果分析數據集節點分類任務消息傳遞方式比較運行效率 總結關鍵點創新點啟發點 代碼復現train.pyutil.pymodel.pylayer.py 作業 前言 本課程來自深度之眼…

基于單片機直流電機調速(proteus仿真+源程序)

一、系統方案 1、本設計采用這51單片機作為主控器。 2、轉速值送到液晶1602顯示。 3、按鍵設加減速,開始暫停、正反轉。 二、硬件設計 原理圖如下: 三、單片機軟件設計 1、首先是系統初始化 en0; rw0; write_com(0x01); //lcd初始化 write_com(0x38)…

CQ 社區版 V2.6.0 發布 | SQL閃回、權限看板、新增數據源人大金倉等

前言 HELLO,大家好,又到了 CloudQuery 社區版發版時間!本次更新版本為 v2.6.0,亮點多多,我們直入主題一起來看! 一、本期亮點 新增 3 種數據源支持 V2.6.0,新增三種國產數據源支持&#xff…

cocos2dx ??Animate3D (一)

3D相關的動畫都是繼承Grid3DAction 本質上是用GirdBase進行創建動畫的小塊。 Shaky3D 晃動特效 // 持續時間(時間過后不會回到原來的樣子) // 整個屏幕被分成幾行幾列 // 晃動的范圍 // z軸是否晃動 static Shaky3D* create(float initWithDuration, const Size& …

內存可見性與指令重排序

文章目錄 內存可見性內存可見性問題代碼演示JMM(Java Memory Model) 指令重排序指令重排序問題代碼演示指令重排序分析 volatile關鍵字volatile 保證內存可見性 & 禁止指令重排序volatile 不保證原子性 在上一節介紹線程安全問題的過程中&#xff0c…

2023亞太杯數學建模B題思路 - 玻璃溫室中的微氣候法規

# 1 賽題 問題B 玻璃溫室中的微氣候法規 溫室作物的產量受到各種氣候因素的影響,包括溫度、濕度和風速[1]。其中,適 宜的溫度和風速是植物生長[2]的關鍵。為了調節玻璃溫室內的溫度、風速等氣候因素 , 溫室的設計通常采用帶有溫室風扇的通風系統&#x…

實驗4.數據全量、增量、比較更新

【實驗目的】 1.利用Kettle的“表輸入”,“表輸入出”,”JavaScript代碼”組件,實現數據全量更新。 2.熟練掌握“JavaScript代碼”,“表輸入”,“表輸入出”組件的使用,實現數據全量更新。 【實驗原理】 …

MATLAB算法實戰應用案例精講-【圖像處理】圖像縮放

目錄 前言 知識儲備 MATLAB圖像處理函數 數字數字圖像增強 數字數字圖像的變換