單片機的輸出模式推挽和開漏如何選擇呢?

推挽和開漏是單片機的輸出模式,屬于I/O口配置的常見類型。

開漏(Open-Drain)和推挽(Push-Pull)是兩種根本不同的輸出電路結構,理解它們的區別是正確使用任何單片機(包括51和STM32)GPIO的關鍵。

一、核心比喻

  • 推挽輸出 (Push-Pull):就像兩個人力氣很大的水手,一個專門負責從井里打水(推,輸出高電平),另一個專門負責把水倒掉(挽,輸出低電平)。他們能主動且有力地輸出明確的“有水”(1)或“沒水”(0)狀態。

    • 形象:雙向主動,驅動能力強。

  • 開漏輸出 (Open-Drain):就像只有一個負責倒水的水手,他能很用力地把水倒掉(輸出強低電平0),但他完全不會打水。當他不倒水時,輸出狀態是懸空的(高阻態),相當于“不表態”。這個“不表態”的狀態需要外部一個上拉電阻拉到“有水”(1)的狀態,才能真正形成高電平。

    • 形象:只能主動拉低,不能主動拉高,需要外部幫助。


二、電路原理與區別

為了更直觀地理解,可以參考下面的簡化電路模型:

如圖所示,它們的根本區別在于:

  • 推挽:內部有上下兩個MOS管,總是處于一個導通另一個截止的狀態,因此可以獨立、強效地輸出高電平和低電平。

  • 開漏:內部只有下拉的MOS管(NMOS)。當這個管子導通時,輸出被強力拉到低電平(GND);當它截止時,輸出引腳與地斷開(“開路”或“漏極開路”),相當于斷開狀態,其電平由外部電路決定。


三、應用場景

基于以上根本區別,它們的使用場景完全不同:

什么時候用?推挽輸出

推挽輸出是最常用的模式,用于絕大多數需要直接驅動負載數字信號輸出的場景。

  1. 驅動LED、繼電器、蜂鳴器等器件

    • 因為推挽輸出高低電平均有較強的驅動能力(例如STM32引腳可輸出和吸收幾十mA電流),可以直接點亮LED或驅動小型繼電器。

  2. 數字通信協議(單向、高速)

    • 如?SPII2SUSBSDIO?等。這些協議需要清晰的、驅動能力強的波形來保證通信速度和穩定性。推挽輸出可以提供快速上升沿和下降沿。

  3. 生成PWM波

    • 驅動電機、舵機等都需要清晰的PWM波形,必須使用推挽輸出。

簡單總結:只要你需要引腳自己獨立、明確、有力地輸出高電平和低電平,就用推挽輸出。

什么時候用?開漏輸出

開漏輸出主要用于需要?“線與”(Wire-AND)電平轉換?和?雙向通信?的場景。

  1. 實現“線與”功能(最經典的用途)

    • 多個開漏輸出的引腳可以直接連接在一起,共用一個上拉電阻。

    • 規則:只要任何一個輸出腳主動輸出低電平(0),整個線路就是低電平(0)。只有當所有輸出腳都釋放(不輸出低電平,即高阻態)時,線路才被上拉電阻變為高電平(1)。

    • 應用I2C?總線是開漏輸出最典型的例子。I2C上的多個設備都可以通過拉低總線來發送信號,而不會因為一個設備輸出高電平另一個輸出低電平而產生短路沖突。這實現了多主機仲裁雙向通信

  2. 電平轉換(Voltage Level Shifting)

    • 這是開漏輸出一個極其有用的特性。因為開漏引腳本身不產生高電平,高電平電壓完全由外部上拉電阻所連接的電源電壓(VCC)決定。

    • 例子:STM32是3.3V供電,但需要和一個工作電壓為5V的設備通信。可以將STM32引腳設置為開漏模式,外部上拉電阻接到5V。當STM32輸出低電平(0)時,是0V;當STM32釋放總線(輸出1)時,線路被上拉到5V。這樣就實現了從3.3V到5V的電平轉換,非常簡單成本低。

  3. 驅動高于芯片電壓的設備

    • 原理同上。比如用3.3V單片機驅動一個5V的繼電器線圈,就可以使用開漏模式,外接5V上拉。


四、對比總結表

特性推挽輸出 (Push-Pull)開漏輸出 (Open-Drain)
輸出能力,可主動輸出高電平和低電平,只能主動輸出低電平,高電平靠外部上拉
輸出狀態確定(永遠是0或1)不確定(不輸出時呈高阻態,電平由外部決定)
速度,上升沿和下降沿都較陡峭,上升沿依靠上拉電阻,電阻越大速度越慢
功耗高低電平切換時存在瞬時導通電流,功耗相對較高靜態功耗低,但上升沿慢可能導致動態功耗增加
關鍵應用1. 驅動LED、繼電器等
2. SPI, I2S等高速總線
3. 產生PWM波
1.?I2COne-Wire等支持“線與”的總線
2.?電平轉換
3. 驅動高于芯片電壓的設備

簡單決策流程:

  • 驅動普通外設(LED、數碼管等)??->?推挽輸出

  • 用在I2C總線上??->?開漏輸出?(注意:I2C協議必須用開漏模式!

  • 需要和不同電壓的器件通信??->?開漏輸出 + 外部上拉到目標電壓

  • 不確定??-> 優先選擇推挽輸出,這是最通用和直接的模式。

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

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

相關文章

java18學習筆記-Simple Web Server

408:Simple Web Server Python、Ruby、PHP、Erlang 和許多其他平臺提供從命令行運行的開箱即用服務器。這種現有的替代方案表明了對此類工具的公認需求。 提供一個命令行工具來啟動僅提供靜態文件的最小web服務器。沒有CGI或類似servlet的功能可用。該工具將用于原型設計、即…

深度解析Atlassian 團隊協作套件(Jira、Confluence、Loom、Rovo)如何賦能全球分布式團隊協作

無窮無盡的聊天記錄、混亂不堪的文檔、反饋信息分散在各個不同時區……在全球分布式團隊中開展真正的高效協作,就像是一場不可能完成的任務。 為什么會這樣?因為即使是最聰明的團隊,也會遇到類似的障礙: 割裂的工作流&#xff1a…

理解AI 智能體:智能體架構

1. 引言 智能體架構(agent architecture)是一份藍圖,它定義了AI智能體各組件的組織方式和交互機制,使智能體能夠感知環境、進行推理并采取行動。本質上,它就像是智能體的數字大腦——整合了“眼睛”(傳感器…

Spring Cloud系列—SkyWalking鏈路追蹤

上篇文章: Spring Cloud系列—Seata分布式事務解決方案TCC模式和Saga模式https://blog.csdn.net/sniper_fandc/article/details/149947829?fromshareblogdetail&sharetypeblogdetail&sharerId149947829&sharereferPC&sharesourcesniper_fandc&…

機器人領域的算法研發

研究生期間學習大模型,可投遞機器人領域的算法研發、技術支持等相關崗位,以下是具體推薦: AI算法工程師(大模型方向-機器人應用):主要負責大模型開發與優化,如模型預訓練、調優及訓練效率提升等…

深度學習入門:神經網絡

文章目錄一、深度學習基礎認知二、神經網絡核心構造解析2.1 神經元的基本原理2.2 感知器:最簡單的神經網絡2.3 多層感知器:引入隱藏層解決非線性問題2.3.1 多層感知器的結構特點2.3.2 偏置節點的作用2.3.3 多層感知器的計算過程三、神經網絡訓練核心方法…

mysql的索引有哪些?

1. 主鍵索引(PRIMARY KEY)主鍵索引通常在創建表時定義,確保字段唯一且非空:-- 建表時直接定義主鍵 CREATE TABLE users (id INT NOT NULL,name VARCHAR(50),PRIMARY KEY (id) -- 單字段主鍵 );-- 復合主鍵(多字段組合…

【計算機視覺與深度學習實戰】08基于DCT、DFT和DWT的圖像變換處理系統設計與實現(有完整代碼python3.13可直接粘貼使用)

1. 引言 數字圖像處理作為計算機視覺和信號處理領域的重要分支,在過去幾十年中得到了快速發展。圖像變換技術作為數字圖像處理的核心技術之一,為圖像壓縮、特征提取、去噪和增強等應用提供了強有力的數學工具。離散余弦變換(Discrete Cosine Transform, DCT)、離散傅里葉變…

使用Python實現DLT645-2007智能電表協議

文章目錄🌴通訊支持🌴 功能完成情況服務端架構設計一、核心模塊劃分二、數據層定義三、協議解析層四、通信業務層(以DLT645服務端為例)五、通信層(以TCP為例)使用例子🌴通訊支持 功能狀態TCP客…

未來已來:基于IPv6單棧隔離架構的安全互聯實踐報告

未來已來:基于IPv6單棧隔離架構的安全互聯實踐報告 報告摘要 隨著IPv4地址資源徹底枯竭,全球網絡基礎設施正加速向IPv6單棧(IPv6-Only)演進。傳統“IPv4為主、IPv6為輔”的雙棧模式已無法滿足數字化轉型對海量地址、端到端連接與原…

Ubuntu24.04 安裝 Zabbix

Ubuntu24.04 安裝 Zabbix 環境: 軟件版本Ubuntu24.04.3Nginx1.24.0MySQL8.4.6PHP8.3.6phpMyAdmin5.2.2Zabbix7.4.1 LNMP 1. 更新本地軟件包索引并升級已安裝軟件 更新可用軟件包列表 把已安裝的軟件升級到最新版 安裝常用工具 sudo apt update && sud…

【動手學深度學習】6.2. 圖像卷積

目錄6.2. 圖像卷積1)互相關運算2)卷積層3)圖像中目標的邊緣檢測4)學習卷積核5)互相關與卷積6)特征映射和感受野7)小結. 6.2. 圖像卷積 卷積神經網絡的設計是用于探索圖像數據,本節…

游戲引擎中的Billboard技術

一.視覺公告板為解決場景中Mesh網格面數過多問題,使用2D平面Mesh替換為3D平面Mesh的技術即為Billboard技術.常用于場景中植被,樹葉,粒子系統等對面數有要求的場景.二.Billboard著色器實現著色器輸入參數:攝像機坐標,網格坐標,攝像機觀察方向著色器輸出:實際2D平面隨視角不變

vue-admin-template權限管理

在基于 vue-admin-template 實現權限管理時,通常需要結合角色權限模型和動態路由機制,以滿足不同用戶角色對頁面訪問權限的控制需求。分為路由頁面權限和按鈕權限:下面是具體實現思路的思維導圖和具體代碼流程:0.實現邏輯思維導圖…

微信小程序,事件總線(Event Bus) 實現

1、util.js文件/*** 事件總線*/ function createEventBus() {// 私有事件存儲對象,通過閉包保持私有性const events {};return {/*** 監聽事件,只執行一次* param {string} eventName - 事件名稱* param {Function} callback - 回調函數*/once(eventNam…

OpenCV結構光三維重建類cv::structured_light::GrayCodePattern

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::structured_light::GrayCodePattern 是 OpenCV 庫中用于結構光三維重建 的一個類,屬于 OpenCV 的 structured_light 模塊。 它用于…

變頻器實習DAY35 引腳電平測試 退耦電阻

目錄變頻器實習DAY35一、工作內容1.1 硬性平臺RO7測試二、學習內容2.1 退耦電阻核心原理:2大特性抑制干擾四大關鍵作用選型:4個核心參數典型應用場景四大常見誤區附學習參考網址歡迎大家有問題評論交流 (* ^ ω ^)變頻器實習DAY35 一、工作內容 1.1 硬性…

C++標準庫算法:從零基礎到精通

算法庫的核心理念與設計哲學 C標準庫算法的設計遵循著一個令人稱道的哲學:算法與容器的分離。這種設計并非偶然,而是經過深思熟慮的結果。傳統的面向對象設計可能會將排序功能綁定到特定的容器類中,但C標準庫卻選擇了一條更加優雅的道路——…

為什么存入數據庫的中文會變成亂碼

從產生、傳輸、處理到最終存儲的整個生命周期中采用統一且正確的字符集編碼。具體原因紛繁復雜,主要歸結為:客戶端操作系統或應用與數據庫服務端字符集編碼不一致、Web應用服務器到數據庫驅動的連接層編碼配置缺失或錯誤、數據庫本身及其表、字段各層級的…

13種常見機器學習算法面試總結(含問題與優質回答)

目錄 1. K近鄰(K-NN) 2. 線性回歸(一元/多元) 3. 邏輯回歸 4. 決策樹 5. 集成學習之隨機森林 6. 貝葉斯(樸素/高斯) 7. SVM(支持向量機) 8. K-means聚類 9. DBSCAN 10. TF-…