推挽與開漏輸出電路原理詳解:從MOSFET結(jié)構(gòu)到I2C總線應(yīng)用
1. 從兩個經(jīng)典電路說起推挽與開漏的本質(zhì)區(qū)別搞嵌入式開發(fā)或者硬件設(shè)計的朋友對“推挽輸出”和“開漏輸出”這兩個詞肯定不陌生。不管是配置STM32的GPIO還是閱讀各種傳感器、通信芯片的數(shù)據(jù)手冊這兩個概念就像一對形影不離的兄弟時不時就跳出來考驗?zāi)愕睦斫馍疃取N业谝淮伪凰鼈兏沣率窃谡{(diào)試一個I2C總線的時候明明程序邏輯都對但設(shè)備就是沒反應(yīng)最后查了半天才發(fā)現(xiàn)是GPIO模式配置錯了——本該用開漏輸出的地方我手滑設(shè)成了推挽輸出。簡單來說你可以把這兩種輸出結(jié)構(gòu)想象成兩種完全不同性格的“開關(guān)”。推挽輸出像一個力氣大、行動果斷的“大力士”它能獨立地把輸出電平拉到高接近電源電壓VCC或低接近地GND不需要外人幫忙。而開漏輸出則像一個只能“往下拉”的“單臂俠”它自己能用力把電平拉到低但當(dāng)它想輸出高電平時它就會“松開手”進入高阻態(tài)這時必須依靠外部的一個“幫手”上拉電阻把電平拉上去。這個根本性的差異直接決定了它們各自的應(yīng)用場景和那些讓人頭疼的“坑”。理解透這兩者不僅僅是記住定義更是為了在電路設(shè)計中做出正確的選擇避免信號沖突、功耗異常甚至芯片損壞。接下來我們就深入它們的電路內(nèi)部看看這個“大力士”和“單臂俠”到底是怎么工作的。2. 核心原理與電路結(jié)構(gòu)深度拆解要真正理解推挽和開漏必須從它們的晶體管級電路結(jié)構(gòu)入手。雖然現(xiàn)在多數(shù)時候我們是在MCU的軟件層面配置一個選項但背后的硬件原理決定了所有外在特性。2.1 推挽輸出互補對稱的“推”與“拉”推挽輸出的核心結(jié)構(gòu)通常由兩個MOSFET金屬-氧化物半導(dǎo)體場效應(yīng)晶體管以互補對稱的方式構(gòu)成。一個P-MOS管連接在電源VCC和輸出引腳之間另一個N-MOS管連接在輸出引腳和地GND之間。這兩個管子的柵極由內(nèi)部控制邏輯驅(qū)動但它們的控制信號通常是反相的。當(dāng)需要輸出高電平邏輯‘1’時內(nèi)部控制電路會關(guān)閉截止下方的N-MOS管切斷輸出到地的路徑。開啟導(dǎo)通上方的P-MOS管此時P-MOS的源極接VCC漏極接輸出引腳。由于P-MOS導(dǎo)通時源漏之間相當(dāng)于一個很小的電阻導(dǎo)通電阻Rds_on輸出引腳的電平就被迅速“上拉”到接近VCC的電壓。當(dāng)需要輸出低電平邏輯‘0’時則相反關(guān)閉截止上方的P-MOS管切斷輸出到VCC的路徑。開啟導(dǎo)通下方的N-MOS管輸出引腳通過N-MOS的低導(dǎo)通電阻被“下拉”到接近GND的電壓。為什么叫“推挽”這個名字非常形象。“推”指的是P-MOS管將電流從電源“推”向負(fù)載和輸出引腳“挽”或“拉”指的是N-MOS管將電流從輸出引腳“拉”向地。兩者一推一拉協(xié)同工作但永遠(yuǎn)不會同時導(dǎo)通否則會造成VCC到GND的直通短路產(chǎn)生大電流。這種結(jié)構(gòu)也被稱為“圖騰柱輸出”。關(guān)鍵特性與優(yōu)勢驅(qū)動能力強無論是輸出高還是低都通過一個低阻抗的MOS管直接連接至電源軌因此可以提供較大的拉電流Source Current和灌電流Sink Current。例如STM32的GPIO在推挽模式下驅(qū)動電流可達20mA甚至更高。高低電平明確輸出的高電平接近VCC低電平接近GND噪聲容限高信號質(zhì)量好。速度快由于輸出阻抗低對負(fù)載電容的充電放電速度快邊沿陡峭適合高速數(shù)字信號傳輸。注意推挽輸出的兩個MOS管像是一對緊密配合的開關(guān)但設(shè)計上必須確保它們存在一個極短的“死區(qū)時間”即兩者都處于關(guān)閉狀態(tài)以防止在狀態(tài)切換瞬間發(fā)生“穿通”短路這個由芯片內(nèi)部的預(yù)驅(qū)動電路保證。2.2 開漏輸出只負(fù)責(zé)“拉低”的謙遜角色開漏輸出的結(jié)構(gòu)就簡單多了它通常只包含一個N-MOS管對于開集輸出則是NPN三極管這個管子的漏極或集電極直接連接到輸出引腳而源極或發(fā)射極接地。它的柵極或基極由內(nèi)部控制邏輯驅(qū)動。當(dāng)內(nèi)部控制邏輯需要輸出低電平邏輯‘0’時它會打開N-MOS管輸出引腳通過導(dǎo)通的MOS管被強力下拉至GND。 當(dāng)需要輸出高電平邏輯‘1’時內(nèi)部控制邏輯會關(guān)閉N-MOS管。此時從輸出引腳看進去MOS管處于截止?fàn)顟B(tài)漏極是“懸空”的相當(dāng)于一個極高的阻抗連接到地。這個狀態(tài)被稱為“高阻態(tài)”。輸出引腳本身不會產(chǎn)生任何向上的驅(qū)動力。那么高電平從何而來這就是開漏輸出的關(guān)鍵它自己無法輸出高電平必須依賴外部電路。通常我們會在輸出引腳和電源VCC之間連接一個上拉電阻。當(dāng)內(nèi)部MOS管關(guān)閉時電流通過這個上拉電阻流向輸出引腳將其電壓拉至VCC從而實現(xiàn)高電平。為什么叫“開漏”“漏”指的是MOS管的漏極Drain?!伴_”意味著這個漏極是“開放”的沒有內(nèi)部連接到電源需要外部電路來完成回路。你可以想象這個MOS管是一個接地的開關(guān)開關(guān)的一端漏極引出了一根線這就是輸出引腳。關(guān)鍵特性與由此衍生的應(yīng)用電平轉(zhuǎn)換的利器由于高電平由外部上拉電阻提供這個上拉電源可以不和芯片的主電源VCC相同。比如一個3.3V的MCU其開漏引腳可以通過一個上拉電阻拉到5V電源上。當(dāng)它輸出低時引腳為0V當(dāng)它輸出高阻時引腳被拉到5V。這樣就輕松實現(xiàn)了3.3V到5V的電平轉(zhuǎn)換而不會損壞3.3V的IO口因為內(nèi)部MOS管耐壓足夠?!熬€與”功能的基礎(chǔ)這是開漏輸出最重要的特性之一。多個開漏輸出的引腳可以直接連接在一起并共用一個上拉電阻。這條共享的線路總線的電平狀態(tài)由所有連接在一起的輸出共同決定。只要其中任意一個輸出低電平導(dǎo)通下拉總線就被拉低為‘0’只有當(dāng)所有輸出都為高阻態(tài)時總線才被上拉電阻拉高為‘1’。這種邏輯關(guān)系是“線與”邏輯與。I2C、SMBus、1-Wire等總線協(xié)議都依賴此特性實現(xiàn)多主機仲裁和沖突檢測。減少沖突風(fēng)險在推挽輸出中如果兩個輸出直接相連一個輸出高另一個輸出低就會形成低阻抗的電源到地通路產(chǎn)生很大的短路電流可能損壞芯片。而開漏輸出在高電平時是高阻態(tài)即使兩個輸出一個試圖拉高實際是高阻一個拉低也不會發(fā)生電源短路只有正常的灌電流。3. 為什么推挽輸出不能“線與”——一個必須搞懂的硬件禁忌“為什么推挽輸出不能線與”這個問題直接點出了兩種輸出結(jié)構(gòu)最根本的沖突。我們通過一個場景來徹底解釋清楚。假設(shè)有兩個推挽輸出的GPIOPin_A和Pin_B它們直接連接在一起即“線與”連接。情況一Pin_A輸出高電平內(nèi)部P-MOS導(dǎo)通連接VCCPin_B輸出低電平內(nèi)部N-MOS導(dǎo)通連接GND。 此時從芯片內(nèi)部看Pin_A的P-MOS和Pin_B的N-MOS通過外部導(dǎo)線實際上在VCC和GND之間形成了一個非常低阻抗的路徑。這幾乎等同于用一根導(dǎo)線直接短路電源巨大的電流會從VCC通過Pin_A的P-MOS流經(jīng)導(dǎo)線再通過Pin_B的N-MOS灌入GND。后果瞬間產(chǎn)生遠(yuǎn)超MOS管承受能力的峰值電流導(dǎo)致局部過熱很可能永久性損壞這兩個輸出驅(qū)動器甚至危及整個芯片的電源網(wǎng)絡(luò)。情況二Pin_A和Pin_B都輸出高電平或都輸出低電平。 這種情況下雖然不會發(fā)生直接短路但兩個輸出驅(qū)動器在并聯(lián)“競爭”。由于制造公差它們的輸出電壓不可能完全一致。輸出高時電壓略高的那個會向電壓略低的那個灌入電流輸出低時電流分配也可能不均。這會導(dǎo)致不必要的功耗增加、發(fā)熱并且輸出電平不穩(wěn)定處于一種非定義的“中間態(tài)”邏輯混亂。核心原因總結(jié)推挽輸出在高低電平均為低阻抗源。將它們直接相連就如同將兩個都有強意志的“大力士”用繩子綁在一起讓他們朝相反方向用力結(jié)果要么繩子斷裂損壞電路要么在原地僵持功耗劇增、狀態(tài)不定。對比開漏的“線與”開漏輸出在高電平時是“松手”的高阻態(tài)不存在驅(qū)動能力。多個開漏連接時只有拉低是“有力”的拉高是“無力”的靠共同的上拉電阻。因此任何一個輸出都可以安全地將總線拉低而不會與其他輸出發(fā)生“力量對抗”。這正符合了總線“仲裁”的需求誰想占用總線發(fā)言拉低誰就可以覆蓋掉其他保持沉默高阻的設(shè)備。實操心得在設(shè)計電路或配置MCU時如果看到多個設(shè)備的數(shù)據(jù)線需要并聯(lián)在一起如I2C的SDA線那么這些引腳必須配置為開漏模式并加上拉電阻。如果錯誤地配置了某個設(shè)備為推挽輸出一旦它與其他設(shè)備輸出相反電平總線沖突和硬件損壞的風(fēng)險極高。這是我早期調(diào)試I2C多主機時用一塊開發(fā)板換來的教訓(xùn)。4. 典型應(yīng)用場景與選型指南理解了原理我們就能在具體場景中做出正確選擇。選型不是憑感覺而是基于明確的電氣特性和系統(tǒng)需求。4.1 何時選擇推挽輸出推挽輸出適用于需要強驅(qū)動、高速率、確定電平的單向或雙向但需分時控制信號場景。驅(qū)動LED、繼電器等負(fù)載LED需要穩(wěn)定的電流才能正常發(fā)光。推挽輸出可以提供足夠的拉電流或灌電流具體連接方式?jīng)Q定確保LED亮度穩(wěn)定。驅(qū)動繼電器線圈也需要瞬間的較大電流推挽模式能可靠吸合。高速數(shù)字通信如SPI、并行總線SPI的SCK、MOSI等信號頻率可達數(shù)十MHz要求快速的上升沿和下降沿。推挽輸出的低阻抗特性可以快速對線路電容充放電保證信號完整性減少時序錯誤。控制開關(guān)器件如MOSFET柵極快速、有力地打開或關(guān)閉一個功率MOSFET需要柵極電壓迅速達到閾值。推挽輸出能提供強大的拉電流充電和灌電流放電能力縮短開關(guān)時間降低開關(guān)損耗。通用數(shù)字輸入/輸出GPIO當(dāng)引腳僅用作簡單的數(shù)字輸出且不與其他輸出引腳直接相連時推挽模式是最常用、最直接的選擇因為它簡單可靠。配置示例以STM32 HAL庫為例GPIO_InitStruct.Pin GPIO_PIN_5; GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP; // 推挽輸出模式 GPIO_InitStruct.Pull GPIO_NOPULL; // 推挽輸出一般不需要上下拉 GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH; // 根據(jù)速度需求選擇 HAL_GPIO_Init(GPIOA, GPIO_InitStruct);4.2 何時選擇開漏輸出開漏輸出適用于需要電平轉(zhuǎn)換、總線共享、雙向通信或避免沖突的場景。雙向開漏總線I2C / SMBus / 1-Wire這是開漏輸出的經(jīng)典應(yīng)用。SDA數(shù)據(jù)線和SCL時鐘線都必須配置為開漏模式并連接上拉電阻。這允許多個主機和從機共享總線通過“線與”邏輯進行仲裁。同時主機在發(fā)送完地址或數(shù)據(jù)后可以釋放總線變?yōu)楦咦鑿臋C則可以通過拉低總線來產(chǎn)生應(yīng)答信號實現(xiàn)了真正的雙向通信。不同電壓域間的電平轉(zhuǎn)換如前所述用一個3.3V MCU的開漏引腳通過一個上拉電阻拉到5V系統(tǒng)即可與5V器件通信。這是一種簡單、低成本的電平轉(zhuǎn)換方案。注意上拉電阻的阻值需要計算需兼顧上升時間和功耗。中斷請求或喚醒信號線多個設(shè)備的中斷輸出引腳可以連接到一個開漏線上共用一個上拉電阻和MCU的中斷輸入引腳。任何一個設(shè)備產(chǎn)生中斷都能將線拉低觸發(fā)MCU中斷。MCU在中斷服務(wù)程序中再去查詢是哪個設(shè)備產(chǎn)生的中斷。這節(jié)省了MCU的IO口資源。驅(qū)動高于芯片電壓的負(fù)載例如用一顆3.3V的GPIO通過開漏模式控制一個5V的LED陽極陰極接地。GPIO拉低時LED兩端電壓為5V點亮GPIO高阻時LED兩端無壓差熄滅。但需要注意GPIO引腳在LED熄滅時承受的電壓是5V必須確認(rèn)其耐壓是否足夠。配置示例以STM32的I2C引腳為例// I2C的GPIO配置通常由CubeMX自動生成其本質(zhì)是 GPIO_InitStruct.Pin GPIO_PIN_9 | GPIO_PIN_10; // SDA, SCL GPIO_InitStruct.Mode GPIO_MODE_AF_OD; // 復(fù)用功能開漏模式 GPIO_InitStruct.Pull GPIO_NOPULL; // 外部已加上拉電阻內(nèi)部不使能 GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate GPIO_AF4_I2C1; // 復(fù)用為I2C功能 HAL_GPIO_Init(GPIOB, GPIO_InitStruct);外部上拉電阻計算電阻值R需要在總線電容C、上升時間Tr和功耗之間權(quán)衡。公式近似為 Tr ≈ 0.7 * R * C。對于標(biāo)準(zhǔn)模式100kHz的I2C上升時間要求小于1μs。假設(shè)總線電容為200pF則 R ≤ Tr / (0.7 * C) ≈ 1μs / (0.7 * 200pF) ≈ 7.1kΩ??紤]到留有余量和降低功耗常用4.7kΩ或10kΩ。快速模式400kHz下電阻需要更小如2.2kΩ但功耗會增加。5. 實戰(zhàn)配置、調(diào)試與深度問題排查理論懂了但在實際項目中依然會遇到各種稀奇古怪的問題。下面結(jié)合我的調(diào)試經(jīng)驗梳理幾個關(guān)鍵環(huán)節(jié)和常見坑點。5.1 上拉電阻的選擇與計算誤區(qū)為開漏輸出選擇上拉電阻不是隨便抓一個4.7kΩ就完事。它是一個權(quán)衡的藝術(shù)。阻值太小當(dāng)輸出拉低時根據(jù)歐姆定律 I Vcc / R流過MOS管和電阻的電流會很大。這會導(dǎo)致功耗增加對于電池供電設(shè)備是致命的。可能超過IO口的最大灌電流能力導(dǎo)致輸出電壓抬升不再是0V嚴(yán)重時損壞端口。在多個設(shè)備“線與”時拉低總線的設(shè)備需要“對抗”這個強上拉負(fù)擔(dān)更重。阻值太大當(dāng)MOS管關(guān)閉上拉電阻需要給總線電容充電以達到高電平。電阻越大RC時間常數(shù)越大上升沿越緩??赡軐?dǎo)致信號上升時間不滿足通信協(xié)議要求如I2C協(xié)議對上升時間有明確規(guī)定在高速下產(chǎn)生時序錯誤。更容易受到外部噪聲干擾因為高阻抗節(jié)點對噪聲更敏感。系統(tǒng)化計算步驟確定最大允許上升時間(Tr_max)從通信協(xié)議標(biāo)準(zhǔn)中查找如I2C規(guī)范。估算總線總電容(C_bus)包括所有連接器件的引腳電容、PCB走線寄生電容。通常估計在100pF到400pF之間高速或長走線系統(tǒng)更高。計算最大上拉電阻(Rmax)使用公式 Rmax ≤ Tr_max / (0.7 * C_bus)。這里的0.7是RC充電到約70%電壓通常作為邏輯高閾值的常數(shù)。確定最小上拉電阻(Rmin)基于電源電壓(Vcc)和IO口最大灌電流(I_sink_max)。公式 Rmin ≥ (Vcc - Vol) / I_sink_max。其中Vol是輸出低電平電壓約0.4V。同時要確保功耗可接受。在Rmin和Rmax之間選取標(biāo)準(zhǔn)值如果Rmin Rmax說明設(shè)計不滿足要求需要降低電容縮短走線、減少器件或選用驅(qū)動能力更強的器件。注意事項很多MCU的IO口在復(fù)用為I2C等外設(shè)時其最大灌電流可能與普通GPIO模式不同務(wù)必查閱數(shù)據(jù)手冊中對應(yīng)復(fù)用功能下的“輸出低電平電流”參數(shù)。5.2 電平轉(zhuǎn)換電路的實現(xiàn)與陷阱利用開漏輸出做電平轉(zhuǎn)換雖然簡單但有幾個細(xì)節(jié)容易忽略方向性問題開漏輸出結(jié)合上拉實現(xiàn)的是單向電平轉(zhuǎn)換從低壓側(cè)邏輯控制高壓側(cè)電平。對于像I2C這樣的雙向總線高壓側(cè)器件向低壓側(cè)發(fā)送數(shù)據(jù)即高壓側(cè)拉低總線時電流路徑會經(jīng)過低壓側(cè)芯片的內(nèi)部保護二極管如果存在流向其VCC這可能引發(fā)閂鎖效應(yīng)或?qū)е码娏鞒瑯?biāo)。安全的雙向電平轉(zhuǎn)換必須使用專用的雙向電平轉(zhuǎn)換芯片如TXB0104等或由MOS管搭建的經(jīng)典電路。速度限制依靠上拉電阻的RC充電速度有上限。對于MHz級別的信號如某些高速SPI這種簡單方法就不適用了需要用到推挽輸出的主動驅(qū)動型電平轉(zhuǎn)換器。未用引腳處理如果芯片的某個開漏輸出引腳暫時不用絕不能懸空。懸空的高阻態(tài)引腳會像天線一樣拾取噪聲導(dǎo)致功耗不穩(wěn)定甚至邏輯誤觸發(fā)。正確的做法是在芯片外部通過一個電阻如10kΩ上拉到適當(dāng)?shù)碾妷和ǔJ窃撘_所在電源域或者在軟件中將其設(shè)置為推挽輸出并輸出一個固定電平如果允許的話。5.3 混合電壓系統(tǒng)設(shè)計要點在一個系統(tǒng)中可能有3.3V、1.8V、5V等多種電壓的器件共存。設(shè)計IO互連時原則一先查絕對最大額定值。確保低壓器件的IO引腳能承受高壓器件可能施加的電壓。例如一個3.3V器件的引腳能否耐受5V這要看其數(shù)據(jù)手冊的“Absolute Maximum Ratings”中“Input Voltage”或“Pin Voltage”項。如果標(biāo)注為“-0.3 to VDD0.3”那么接入5V就可能損壞。原則二識別信號方向。如果是單向信號且電平方向正確如高壓側(cè)輸出到低壓側(cè)輸入最簡單的方法是使用電阻分壓網(wǎng)絡(luò)。如果是雙向或低壓側(cè)輸出到高壓側(cè)則需要電平轉(zhuǎn)換器。原則三開漏是廉價單向轉(zhuǎn)換方案。如前所述低壓側(cè)開漏輸出高壓側(cè)上拉可以實現(xiàn)低壓側(cè)控制高壓側(cè)總線電平。但需警惕上述的雙向風(fēng)險。原則四推挽輸出互聯(lián)必須同電壓。不同電壓域的推挽輸出絕對不能直接相連否則在輸出狀態(tài)不一致時會形成從高電壓到低電壓的電流倒灌路徑可能損壞低壓側(cè)芯片。6. 常見問題與排查技巧實錄即使設(shè)計時考慮周全調(diào)試階段也難免遇到問題。下面是一個基于真實項目經(jīng)驗的排查清單?,F(xiàn)象描述可能原因排查步驟與解決方案I2C總線一直為低電平無法通信1. 總線短路到地。2. 某個設(shè)備引腳配置錯誤如配置成推挽輸出且輸出低。3. 上拉電阻缺失或阻值過大在強干擾下表現(xiàn)為持續(xù)低。1.斷電用萬用表測量SDA/SCL對地電阻若接近0Ω則查找短路點。2.逐個斷開總線上的設(shè)備每斷開一個上電測試一次總線電壓是否恢復(fù)。找到問題設(shè)備后檢查其GPIO配置模式。3. 用示波器觀察上電瞬間總線電平看是否有短暫的上拉過程。確認(rèn)上拉電阻已焊接阻值符合計算要求。I2C通信不穩(wěn)定時好時壞或高速時失敗1. 上拉電阻阻值過大導(dǎo)致上升沿太慢。2. 總線電容過大走線過長、負(fù)載過多。3. 電源噪聲或地線干擾。1.用示波器測量SDA/SCL信號的上升時間與協(xié)議要求對比。若太慢可適當(dāng)減小上拉電阻如從10kΩ換為4.7kΩ。2. 檢查PCB布局I2C走線是否過長是否靠近高頻噪聲源。嘗試減少總線上的設(shè)備數(shù)量。3. 檢查電源紋波確保I2C總線上各設(shè)備共地良好??稍诳偩€靠近設(shè)備端增加小電容如10-100pF到地濾波但注意會增加總電容。推挽輸出驅(qū)動LED亮度不足1. GPIO驅(qū)動電流有限如僅8mA。2. LED限流電阻過大。3. 引腳配置為開漏模式且未加上拉。1. 查閱MCU數(shù)據(jù)手冊確認(rèn)該引腳在推挽模式下的最大拉/灌電流。STM32很多引腳可達20mA。2. 計算所需電流。例如紅色LED壓降約1.8V目標(biāo)電流10mA電源3.3V則限流電阻 R (3.3V - 1.8V) / 0.01A 150Ω。檢查電阻值是否過大。3.檢查GPIO配置代碼確認(rèn)模式為OUTPUT_PP而非OUTPUT_OD。兩個推挽輸出引腳相連其中一個發(fā)熱嚴(yán)重發(fā)生了輸出沖突形成短路電流。立即斷電檢查軟件邏輯確保相連的兩個引腳不會同時被設(shè)置為輸出相反的電平。如果必須互聯(lián)應(yīng)考慮改用開漏模式或者使用邏輯門、緩沖器進行隔離。開漏輸出高電平達不到預(yù)期電壓1. 上拉電源電壓不對或未連接。2. 負(fù)載電流過大在上拉電阻上產(chǎn)生壓降。3. 引腳內(nèi)部故障或配置錯誤如內(nèi)部下拉使能。1. 測量上拉電阻另一端電壓是否正確。2. 測量高電平時的實際電流。計算壓降 V_drop I_load * R_pullup。如果壓降太大需減小上拉電阻或減輕負(fù)載。3. 檢查GPIO配置確保內(nèi)部上下拉電阻被禁用GPIO_NOPULL。一個高級調(diào)試技巧用示波器看“線與”當(dāng)調(diào)試多設(shè)備開漏總線如I2C時可以利用示波器的無限余輝或分段存儲功能捕獲多次通信的波形疊加在一起。你會看到每一次成功的通信其波形尤其是起始、停止、應(yīng)答位的下降沿和低電平部分應(yīng)該是干凈、一致的。但如果某個設(shè)備偶爾異常拉低總線你會看到在非預(yù)期的位置出現(xiàn)“毛刺”或低電平脈沖。這能幫你快速定位是哪個設(shè)備在“亂說話”。我曾用這個方法定位過一個因電源毛刺而異常復(fù)位的從設(shè)備它在復(fù)位期間將I2C引腳初始化為了低電平輸出干擾了整個總線。最后關(guān)于PMOS開漏輸出它其實不常見。我們討論的通常是NMOS開漏。PMOS開漏在結(jié)構(gòu)上使用一個P-MOS管源極接VCC漏極開路。它只能主動“上拉”輸出輸出高電平而無法拉低需要外部下拉電阻來實現(xiàn)低電平。其特性與NMOS開漏正好互補在一些特定的電源控制或高端開關(guān)場景中可能會用到其“線或”邏輯也與“線與”相反。但在通用的數(shù)字IO和通信接口中NMOS開漏或NPN開集是絕對的主流。理解了一種另一種通過類比也能觸類旁通。

相關(guān)新聞

JDK23 安裝包(附安裝教程)

JDK23 安裝包(附安裝教程)

Java 是一種廣泛使用的高級編程語言,由 Sun Microsystems 于 1995 年推出,后被 Oracle 收購。它具有跨平臺性、面向?qū)ο?、高性能、安全性強等特點,廣泛應(yīng)用于企業(yè)級應(yīng)用開發(fā)、移動應(yīng)用(Android)、大數(shù)據(jù)處理、云計算等…

2026/8/1 3:59:44 閱讀更多
化工園區(qū)做AR安全巡檢推薦哪家供應(yīng)商

化工園區(qū)做AR安全巡檢推薦哪家供應(yīng)商

在化工園區(qū)數(shù)字化轉(zhuǎn)型的深水區(qū),傳統(tǒng)的安全巡檢模式正面臨嚴(yán)峻挑戰(zhàn)。紙質(zhì)記錄易篡改、專家資源調(diào)度難、隱患排查不直觀等問題,已成為制約安全生產(chǎn)效率的瓶頸。隨著“產(chǎn)業(yè)元宇宙”概念的落地,AR(增強現(xiàn)實)智慧運維解決方…

2026/8/1 3:59:44 閱讀更多
圖論算法:拓?fù)渑判蚺c最短路徑實戰(zhàn)指南

圖論算法:拓?fù)渑判蚺c最短路徑實戰(zhàn)指南

1. 圖論算法核心概念與應(yīng)用場景圖論作為計算機科學(xué)中最重要的數(shù)學(xué)基礎(chǔ)之一,廣泛應(yīng)用于路徑規(guī)劃、任務(wù)調(diào)度、網(wǎng)絡(luò)分析等領(lǐng)域。在實際工程中,掌握幾種核心圖算法往往能解決80%以上的相關(guān)問題。本文將重點解析拓?fù)渑判虻脑韺崿F(xiàn),并給出四大經(jīng)典…

2026/8/1 6:19:52 閱讀更多
PDF 文檔翻譯的工程化挑戰(zhàn):從 PDF 解析、版面還原到 LLM 翻譯的完整技術(shù)鏈路

PDF 文檔翻譯的工程化挑戰(zhàn):從 PDF 解析、版面還原到 LLM 翻譯的完整技術(shù)鏈路

引子:為什么 PDF 翻譯比想象難十倍 去年我接手一個文檔翻譯平臺的重構(gòu)項目,原以為"上傳 PDF → 調(diào)用 GPT → 輸出 PDF"就完事了。真正動手才發(fā)現(xiàn),PDF 翻譯是一個橫跨文檔解析、OCR、神經(jīng)翻譯、版面重建四大領(lǐng)域的系統(tǒng)工程。單個 P…

2026/8/1 6:19:52 閱讀更多
Elasticsearch中文搜索優(yōu)化:IK分詞器原理、安裝配置與實戰(zhàn)指南

Elasticsearch中文搜索優(yōu)化:IK分詞器原理、安裝配置與實戰(zhàn)指南

1. 項目概述:為什么我們需要IK分詞器?如果你正在使用Elasticsearch處理中文內(nèi)容,并且發(fā)現(xiàn)搜索“蘋果手機”時,連“蘋果公司”和“吃蘋果”的文檔都一股腦兒地蹦出來,那多半是分詞環(huán)節(jié)出了問題。Elasticsearch默認(rèn)的標(biāo)準(zhǔn)…

2026/8/1 6:19:52 閱讀更多
FreeRTOS任務(wù)延時:vTaskDelay與vTaskDelayUntil的精準(zhǔn)調(diào)度解析

FreeRTOS任務(wù)延時:vTaskDelay與vTaskDelayUntil的精準(zhǔn)調(diào)度解析

1. 從一次“詭異”的延時不準(zhǔn)說起在嵌入式實時操作系統(tǒng)(RTOS)的開發(fā)中,任務(wù)延時是最基礎(chǔ)、最高頻的操作之一。我剛開始接觸FreeRTOS時,也以為vTaskDelay()就是萬能的“休眠”函數(shù),直到在一個需要精確周期執(zhí)行的任務(wù)里栽…

2026/8/1 6:19:52 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設(shè)備及通用機械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/1 0:09:33 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設(shè)備及通用機械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/1 0:09:33 閱讀更多