【STM32實踐篇】:GPIO 詳解

文章目錄

  • GPIO 基本結構
  • GPIO 工作模式


在這里插入圖片描述


GPIO 基本結構

在這里插入圖片描述

右邊的紅框是I/O引腳,這個I/O引腳就是我們可以看到的芯片實物的引腳,其他部分都是GPIO的內部結構。

  1. 保護二極管

    • 上方二極管用于防過壓保護,當I/O引腳電壓高于 V_DD + 二極管導通壓降?時,電流從I/O引腳流向V_DD電源,將I/O引腳電壓鉗位在 ?V_DD + 0.7V。
    • 下方二極管用于防負壓保護,當I/O引腳電壓低于 V_SS - 二極管導通壓降?時,電流從V_SS流向I/O引腳,將I/O引腳電壓鉗位在 ?V_SS - 0.7V。
  2. 上拉、下拉電阻
    上拉和下拉電阻最根本的作用是確保I/O引腳在未被主動驅動(高阻態)時,有一個確定的邏輯電平,避免引腳“懸空”導致的信號不穩定或誤觸發。

    • 上拉電阻 Pull-up Resistor:當I/O引腳未被外部電路或內部驅動主動拉低時,上拉電阻將引腳電位“拉”向V_DD,使其穩定在高電平,也就是邏輯‘1’。
    • 下拉電阻 Pull-down Resistor:當I/O引腳未被外部電路或內部驅動主動拉高時,下拉電阻將引腳電位“拉”向V_SS/GND,使其穩定在低電平,也就是邏輯‘0’?。
  3. 施密特觸發器

    • 施密特觸發器有一個正閾值電壓V+ ?和一個負閾值電壓V-?,且 ?V+ > V-。只有當輸入電壓超過較高的V+時,輸出才從低電平跳變為高電平;同樣,只有當輸入電壓低于較低的V-時,輸出才從高電平跳變為低電平,當輸入電壓處于 ?V- 和 V+ 之間? 時,施密特觸發器的輸出保持之前的狀態不變。
    • 看一張圖理解比較器的(A)和施密特觸發器(B)的差異:
      在這里插入圖片描述
      施密特觸發器的? V+ 和 ?V- 之間的區域被稱為 ?滯回電壓,在 V- < U < V+ 這個區域內,輸出?保持?其之前的狀態不變!它不會像比較器一樣瞬間產生高低電平的變化,這樣就形成了一個 ?噪聲免疫區,只要噪聲的幅度小于這個滯回電壓,并且輸入信號本身的變化趨勢足夠強能越過V+或V-,短暫的噪聲干擾不會導致輸出發生翻轉,這就是施密特觸發器相比普通比較器的核心優勢。
  4. P-MOS和N-MOS
    驅動輸出電平(高電平 1 或低電平 0)并承受外部負載。

    • P-MOS:當其柵極接收到一個相對源極為低電平?的控制信號?時導通,此時它在 V_DD 和輸出引腳?之間建立了一個低阻通路,電流從 ?V_DD 流經?導通的P-MOS管,?流入輸出引腳,這會將輸出引腳的電平拉高至接近 V_DD 的電壓,向外部電路提供一個穩定的高電平1, 同時能夠為連接在輸出引腳到 V_SS/GND 的外部負載提供電流,確保外部能識別到高電平。
    • N-MOS:當其柵極?接收到一個相對源極為高電平?的控制信號時導通,此時它在輸出引腳和 V_SS/GND 之間建立了一個低阻通路,電流從輸出引腳?流經?導通的 N-MOS 管,?流入 V_SS/GND,這會將輸出引腳的電平拉低至接近 V_SS/GND 的電壓,向外部電路提供一個穩定的低電平0,能夠為連接在 V_DD 到輸出引腳的外部負載提供電流通路,確保外部能識別到低電平。

GPIO 工作模式

  1. 輸入浮空模式
    在這里插入圖片描述

    • 在該模式下,?上拉電阻 (Pull-up)?? 和 ?下拉電阻 (Pull-down)?? 的控制開關被斷開,輸出緩沖器被關閉,這意味著引腳本身幾乎沒有驅動能力,對外部電路的影響極小,引腳的電壓完全由外部連接的電路決定。
    • 工作原理:外部信號通過引腳進入,經過保護二極管后,信號直接進入TTL施密特觸發器,施密特觸發器對輸入信號進行整形,將緩慢變化的信號或帶有噪聲的信號整形成干凈的高低電平信號,整形后的數字電平信號被鎖存到?輸入數據寄存器中。
  2. 輸入上拉模式
    在這里插入圖片描述

    • 輸入上拉模式主要用于將懸空的 GPIO 引腳穩定地拉到一個確定的高電平狀態。
    • ?工作原理:
      • 無外部輸入時:開啟的上拉電阻會將引腳拉至高電平,經過施密特觸發器后,讀輸入數據寄存器該位將得到邏輯1。
      • 有外部輸入時:
        • 當外部電路將引腳下拉至低電平時:外部下拉力量克服了上拉電阻的上拉作用,將引腳拉到 VT- 以下,經過施密特觸發器后,讀輸入數據寄存器該位將得到邏輯0。
        • 當外部電路將引腳驅動至高電平時:由于外部信號源阻抗通常遠小于上拉電阻,引腳電壓會被外部源拉至高電平,讀輸入數據寄存器該位將得到邏輯1。
        • 如果外部信號源是高阻態輸出?,該信號源本身不會驅動引腳電平,此時,內部上拉電阻起作用,將引腳拉到高電平。
  3. 輸入下拉模式
    在這里插入圖片描述

    • 當外部沒有連接任何信號源或者外部信號源處于高阻態(Hi-Z)時,通過內置電阻將引腳電壓下拉到一個明確的低電平。
    • 工作原理:
      • 外部信號為低電平時,“戰勝”了內部下拉電阻的微弱下拉能力,引腳被拉低到 VSS。
      • ?外部信號為高電平時,外部的高電平強于?內部下拉電阻的拉低作用,引腳的實際電平被外部信號拉高到接近VDD。
  4. 模擬功能
    在這里插入圖片描述

    • 當GPIO用于模擬功能時,必須完全斷開其數字電路部分,其中輸出緩沖器被禁止,施密特觸發器輸入停用(施密特觸發器的輸出被 強制處理為恒定值0),弱上拉和下拉電阻被關閉,對輸入數據寄存器的讀訪問值為0。
    • 當用作模擬輸入時(如連接至ADC),?外部模擬信號通過I/O引腳進入芯片。
    • 當用作模擬輸出時(如連接至DAC),?片上模擬外設(如DAC)?產生的模擬信號通過該路徑輸出到I/O引腳。
  5. 開漏輸出和推挽輸出
    在這里插入圖片描述
    對 I/O 端口進行編程作為輸出時,輸出緩沖器被打開,可以被設置為如下兩種模式:

    • 開漏模式:輸出寄存器中的“0”可激活 N-MOS,引腳通過導通的N-MOS管拉低到VSS輸出低電平;而輸出寄存器中的“1”會使端 口保持高組態 (Hi-Z)(P-MOS 始終不激活)。
    • 推挽輸出:輸出寄存器中的“0”可激活 N-MOS,引腳通過導通的N-MOS管拉低到VSS輸出低電平;而輸出寄存器中的“1”可激活 P-MOS,引腳通過導通的P-MOS管拉高到VDD輸出高電平。
    • 施密特觸發器輸入被打開,可以讀取輸入數據寄存器(IDR)?來獲取引腳實際的電平狀態。
  6. 復用功能
    在這里插入圖片描述

    • 復用功能模式 (AF Mode)?? 就是讓GPIO引腳不再作為普通的輸入/輸出口,而是將引腳的控制權“交”給某個內置的外設模塊,如USART,TIM, I2C,SPI等。
    • 引腳輸出的信號不再由寫入GPIO的輸出數據寄存器(ODR)決定,而是由所選外設模塊內部產生的信號直接驅動。
    • 引腳輸入的信號不再只被通過GPIO的輸入數據寄存器(IDR)讀取,而是會同時被連接到所選外設模塊的接收端。

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

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

相關文章

#include

關于 C 中的 include <>和 include “” 這兩種形式&#xff0c;區別其實是關于“搜索路徑”和“優先級”的。讓我詳細為你講解。 1. 簡單區別總結 #include <header>&#xff1a;告訴編譯器去“系統標準目錄”或“預定義的標準路徑”中查找頭文件&#xff08;比如…

永磁同步電機參數辨識算法--帶遺忘因子的遞推最小二乘法辨識

一、原理介紹之前已經介紹了遞推最小二乘法進行電氣參數辨識&#xff0c;在實時參數辨識中&#xff0c;協方差矩陣P和增益矩陣K是用于更新參數估計的重要工具&#xff0c;而系統參數變化時&#xff0c;P、K矩陣會逐漸減小&#xff0c;導致數據飽和。數據飽和與參數遲滯是實時參…

JVM 知識點

一、JVM 概述JVM&#xff08;Java Virtual Machine&#xff09;即 Java 虛擬機&#xff0c;它是 Java 編程語言的核心組件之一&#xff0c;負責執行 Java 程序。JVM 使得 Java 程序可以實現“一次編寫&#xff0c;到處運行”的特性&#xff0c;因為它提供了一個抽象的運行環境&…

windows裝機

1、制作啟動盤 2、制作啟動盤 啟動盤中含有WinPE系統和ISO 3、從U盤啟動&#xff0c;加載ISO 4、執行ISO中的setup安裝win10 5、之后從C盤啟動進入win10系統 6、安裝“華為電腦管家”,安裝驅動 華為電腦管家官方下載-筆記本驅動更新 | 華為官網 7、下載安裝必要軟件 https://…

提示技術系列(13)——ReAct

什么是提示技術&#xff1f; 提示技術是實現提示工程目標的具體技術手段&#xff0c;是提示工程中的“工具庫”。 什么又是提示工程&#xff1f; 提示工程是指通過設計、優化和迭代輸入到大語言模型&#xff08;LLM&#xff09;的提示&#xff08;Prompt&#xff09;&#xff…

【SVO】klt與極限搜索塊匹配findEpipolarMatchDirect

Matcher::findEpipolarMatchDirect 函數邏輯與原理分析 核心目標&#xff1a; 在極線上搜索參考幀特征點 ref_ftr 在當前幀 cur_frame 中的最佳匹配點&#xff0c;并通過三角化計算深度。 關鍵步驟解析&#xff1a; 1. 極線端點計算&#xff1a; const BearingVector A T_…

C 語言基礎入門:基本數據類型與運算符詳解

一、基本數據類型C 語言提供了豐富的基本數據類型&#xff0c;用于存儲不同類型的數據&#xff0c;主要包括整數類型、浮點類型和布爾類型。1. 整數類型整數類型用于存儲整數&#xff0c;根據是否帶符號以及占用存儲空間的不同&#xff0c;可進一步細分&#xff1a;類型名占用存…

應用在核電行業的虛擬現實解決方案

核能領域正處于創新與責任的交匯點。盡管核反應堆提供了高效且可持續的能源&#xff0c;但由于放射性物質的危險性&#xff0c;其也帶來了獨特挑戰。虛擬現實&#xff08;VR&#xff09;技術正通過為遠程操作、應急響應和放射性物質處理提供先進解決方案&#xff0c;徹底革新這…

CTF Web的數組巧用

PHP數組繞過intval和preg_match的CTF技巧 原題目 <?php include("flag.php"); // 引入flag文件&#xff0c;flag變量在這里定義 show_source("index.php"); // 顯示index.php文件的源碼&#xff08;方便選手查看&#xff09;// 判斷是否通過GET方式傳入…

vue2+elementui使用compressorjs壓縮上傳的圖片

首先是npm install compressorjs 然后新建一個compressorjs.js的文件 import Compressor from "compressorjs";// 默認壓縮配置 const DEFAULT_COMPRESS_OPTIONS {quality: 0.6, // 默認壓縮質量 (0-1)maxWidth: 1920, // 最大寬度maxHeight: 1080, // 最大高度con…

GPIO詳解:不僅僅是輸入輸出那么簡單

GPIO詳解&#xff1a;不僅僅是輸入輸出那么簡單 “別小看一個小小的引腳&#xff0c;它可是 MCU 世界的社交之門。” &#x1f44b; 先打個招呼&#xff1a;什么是 GPIO&#xff1f; GPIO&#xff0c;全稱是 General Purpose Input/Output —— 通用輸入輸出口。 簡單說&…

深度學習5(深層神經網絡 + 參數和超參數)

深層神經網絡簡介 深層神經網絡是機器學習中一種重要的模型&#xff0c;它通過增加網絡的“深度”&#xff08;即隱藏層的數量&#xff09;來提升模型對復雜數據的表示和學習能力。同淺層類似&#xff0c;也分為三個部分&#xff1a; 輸入層&#xff1a;接收原始數據&#xff…

時間復雜度與空間復雜度分析

一、什么是復雜度&#xff1f; 1.1 為什么需要復雜度分析&#xff1f; 假設你寫了兩個程序來解決同一個問題&#xff0c;如何判斷哪個程序更好&#xff1f;我們不能只看運行時間&#xff0c;因為&#xff1a; 不同電腦性能不同同一電腦在不同時刻狀態也不同數據規模不同&#x…

上下文工程:從提示詞到自動化流程的AI應用新范式

上下文工程&#xff1a;從提示詞到自動化流程的 AI 應用新范式 一、背景與概述&#xff1a;從提示詞工程到上下文工程的演進 隨著大語言模型 (LLM) 技術的飛速發展&#xff0c;AI 應用開發正經歷從 “提示詞工程”(Prompt Engineering) 到 “上下文工程”(Context Engineerin…

HTML網頁應用打包Android App 完整實踐指南

技術準備與工具下載 必需工具清單 在開始之前&#xff0c;需要準備以下開發工具&#xff1a; Android Studio官網&#xff1a;https://developer.android.com/studio HBuilderX官網&#xff1a;https://www.dcloud.io/hbuilderx.html 離線SDK下載&#xff1a;https://nati…

簡單 Python 爬蟲程序設計

爬蟲是獲取網頁數據的常用工具&#xff0c;我們一起來設計一個基于 requests 和 BeautifulSoup 的簡單爬蟲&#xff0c;它可以獲取網頁內容并提取文本信息。 所需庫安裝 首先需要安裝兩個必要的庫&#xff1a; pip install requests beautifulsoup4 完整代碼 import reques…

AUTOSAR圖解==>AUTOSAR_AP_EXP_ARAComAPI

AUTOSAR ara::com API詳解 自適應平臺通信API技術詳解 目錄 1. 概述2. ara::com API架構 2.1 Proxy/Skeleton架構2.2 通信方式2.3 服務連接方式 3. 詳細API說明 3.1 Proxy類3.2 Skeleton類3.3 實例標識符3.4 通信組 4. ara::com API狀態管理 4.1 服務生命周期4.2 事件與方法狀…

Spring Boot + 本地部署大模型實現:優化與性能提升

在將大語言模型集成到 Spring Boot 應用中時&#xff0c;性能優化是一個關鍵環節。本地部署的大模型雖然提供了強大的功能&#xff0c;但也可能帶來一些性能挑戰&#xff0c;如響應時間較長、資源占用較高等問題。本文將介紹如何在 Spring Boot 應用中優化本地部署大模型的性能…

QML 鼠標只響應左鍵處理方法

【1】問題描述 默認情況下qml支持左鍵&#xff0c;如果需要支持右鍵&#xff0c;甚至是中鍵那需要設置 【2】設置方法 MouseArea{ id: mouse anchors.fill: parent property int cx: 0 pr…

北方算網亮相2025全球數字經濟大會|共繪數字友好城市建設

7月2日&#xff0c;以“建設數字友好城市”為主題的2025全球數字經濟大會隆重開幕&#xff0c;為構建技術與人、城市與生態和諧共進的全球數字經濟新生態提供交流合作平臺。自7月3日開始&#xff0c;北方算網將在大會集中亮相&#xff0c;先后在多個論壇中發表主題演講&#xf…