
直接上一顆冷門但好用的料MAX14595ETAT。名字念起來拗口本質(zhì)就是個雙通道、雙向、超低功耗的邏輯電平轉換器。如果你干嵌入式這幾年被“3.3V單片機接1.8V傳感器”這種破事折騰過或者調(diào)I2C時因為電平不匹配導致通訊時好時壞這玩意兒能幫你省掉一大半煩惱。先說清楚它到底解決了什么問題?,F(xiàn)在的芯片電壓越來越低1.8V甚至1.2V的內(nèi)核電壓很常見但外圍傳感器、屏幕、存儲芯片還大量停留在3.3V甚至5V。兩邊要通信電平標準不一樣直接懟上去輕則邏輯判錯、重則燒引腳。傳統(tǒng)的方案是拿MOS管加電阻搭分立轉換電路或者用電阻分壓硬湊但遇到雙向總線比如I2C就特別麻煩。MAX14595這種專用芯片把兩條通道的雙向轉換做進了一個SOT-23-8封裝里外部幾乎不用加任何東西還支持超低功耗關斷模式。適合做手機、可穿戴設備、電池供電的物聯(lián)網(wǎng)節(jié)點凡是講究“省電”和“小板子”的地方都用得上。這篇文章不講虛的直接把選型思路、電路設計、實測踩坑都寫清楚看完你能對照自己的項目直接抄作業(yè)。1. 整體設計與選型思路1.1 為什么需要專用電平轉換芯片先聊個基礎但關鍵的問題既然網(wǎng)上到處是分立MOS管電平轉換電路為什么還要買芯片2019年我做一個溫濕度采集器主控用nRF528321.8V/3.3V可配置傳感器是SHT30標準的I2C接口工作電壓3.3V。當時圖省事直接用了兩顆2N7002搭的經(jīng)典雙向轉換電路結果在常溫下跑得好好的一到低溫環(huán)境零下10度左右通訊就偶爾卡死。排查了很久最后發(fā)現(xiàn)是分立電路的上拉電阻和MOS管柵極電容在低溫下充放電時間變長導致I2C的上升沿斜率不達標時序邊緣超了規(guī)格。專用電平轉換芯片內(nèi)部是經(jīng)過設計的有源電路自帶驅動能力和邊沿整形不會出現(xiàn)分立MOS管那種“看溫度臉色”的問題。MAX14595這類的另一個優(yōu)勢是通道間一致性很好兩條通道參數(shù)基本一致不像自己挑的電阻、MOS管總有離散性。所以如果你做的是量產(chǎn)產(chǎn)品或者環(huán)境條件比較嚴苛直接用芯片反而整體成本更低——省下的調(diào)試時間遠比分立元件省下的幾毛錢值錢。1.2 MAX14595的核心參數(shù)解讀這顆料有幾個關鍵指標值得多看兩眼。第一是電壓范圍。VCC和VL兩個電源域各自支持1.2V到5.5V這意味著它能覆蓋目前主流的低壓和傳統(tǒng)高壓組合。比如1.2V轉1.8V、1.8V轉3.3V、2.5V轉5V全部通吃。你不需要針對每一種電壓組合買不同的料一顆搞定大部分場景。第二是靜態(tài)電流。正常工作時靜態(tài)電流在微安級別這已經(jīng)算很低了。更夸張的是關斷模式當EN引腳拉低后芯片進入關斷狀態(tài)靜態(tài)電流能降到納安級別對電池供電的設備來說這個數(shù)字基本可以忽略不計。這是它和普通緩沖器之間最大的區(qū)別。第三是速率。雖然它不是為高速信號設計的那是電平轉換器的另一個細分方向但應付I2C的標準模式100kbps和快速模式400kbps綽綽有余SPI的幾兆赫茲也沒問題。如果你的項目用到的是UART、I2C、低速SPI、GPIO按鍵檢測這類場景完全夠用。下面這個表是我整理的不同工作狀態(tài)下電流消耗的參考數(shù)據(jù)和注意事項工作狀態(tài)靜態(tài)電流典型值說明正常工作非翻轉微安級兩個通道都使能VL和VCC都供電動態(tài)翻轉隨頻率升高略有增加幾十kHz以下基本可以忽略關斷模式EN低電平納安級芯片內(nèi)部所有電路斷電輸出高阻1.3 兩個電源域的特殊行為這顆料和普通電平轉換器不太一樣的地方是它對兩個電源域的上電順序有一定的容忍度。有些芯片要求VCC必須先于VL上電不然會通過內(nèi)部的ESD保護二極管倒灌電流導致芯片損壞或者系統(tǒng)異常啟動。MAX14595的設計相對寬容一些用戶手冊里明確說兩個電源域哪個先上電都行內(nèi)部有防止倒灌的機制這在多電壓系統(tǒng)里非常實用因為很多時候電源時序不是設計者能完全控制的。不過我要提醒一句寬容不等于可以亂來VL和VCC的電壓差盡量不要超過5.5V的絕對最大值尤其是VL接5V、VCC接1.2V這種極端組合雖然芯片不會立刻壞但長期可靠性沒有保證。2. 核心原理與原理解析2.1 雙通道雙向傳輸?shù)墓ぷ鳈C制先說雙向。很多第一次接觸電平轉換的工程師會困惑一個引腳既要輸入又要輸出芯片怎么知道這個引腳現(xiàn)在是輸入還是輸出實際上MAX14595這類芯片不是“判斷”方向而是“自適應”方向。內(nèi)部采用類似模擬開關配合傳輸門的設計當一側總線被拉低時另一側也會被拉低當一側釋放為高阻時另一側由上拉電阻拉到高電平。方向是自動的不需要額外的方向控制引腳也不需要軟件配置。這種設計的典型受益場景就是I2C。I2C是漏極開路結構設備拉低總線來傳輸數(shù)據(jù)多主機時還要做仲裁。如果用方向控制的轉換器得先判斷當前是主設備在發(fā)還是從設備在回邏輯處理非常棘手。MAX14595這種無方向引腳的設計天然適合處理這種雙向半雙工總線。2.2 開漏與推挽兩種模式的區(qū)別電平轉換芯片通常會區(qū)分兩種信號類型開漏open-drain和推挽push-pull。開漏信號靠外部上拉電阻提供高電平芯片只需要把低電平傳遞過去推挽信號則是指芯片內(nèi)部有源驅動既能拉低也能拉高。MAX14595比較聰明的地方是它把通道做成了兩種模式都能支持。對于開漏信號芯片內(nèi)部會在低壓側和高壓側之間傳遞低電平狀態(tài)兩側各配合適的上拉電阻就能工作對于推挽信號芯片會主動驅動兩側不需要外部上拉電阻。這個特性讓它的適用范圍變得非常廣。我建議你這樣記憶如果你的總線是I2C或者SMBus那就是開漏模式兩側都要加上拉電阻如果是普通的GPIO按鍵、UART TX/RX、SPI的MOSI/MISO這類信號那就是推挽模式芯片自己就能驅動外部不需要額外元件。2.3 為什么能做到超低功耗芯片的低功耗設計來自幾個層面的協(xié)作。第一層是靜態(tài)電流控制內(nèi)部參考電路和偏置電路經(jīng)過優(yōu)化在保證正常工作的前提下把恒定消耗壓到最低。第二層是動態(tài)電流優(yōu)化信號翻轉時只在邊沿瞬間消耗電流電平穩(wěn)定時不額外耗電。第三層就是前面提到的關斷模式EN引腳直接切斷內(nèi)部主電路幾乎只剩下漏電流。打個比方普通電平轉換器像一盞一直亮著的白熾燈不管有沒有人經(jīng)過都耗著電MAX14595像感應燈有人來了才亮人走了自動滅而且感應器本身耗的電也極少。對于一年換一次紐扣電池的設備來說這種差異就是能用三個月和能用一年的區(qū)別。3. 實操過程與電路設計要點3.1 最小系統(tǒng)電路搭建下面是我在一個實際項目里用到的連接方式主控是1.8V的STM32L0系列外設是3.3V的BME280環(huán)境傳感器走I2C。這是參考連接關系以引腳功能為準VL - 1.8V低壓側電源 VCC - 3.3V高壓側電源 GND - 共同地 EN - 1.8V或3.3V使能高電平工作 VL端I/O - 接主控I2C引腳1.8V側 VCC端I/O - 接傳感器I2C引腳3.3V側芯片的VL側對應低壓電源域VCC側對應高壓電源域一一對應連好即可。EN引腳直接接到低壓側的電源上保證上電就工作。兩個I2C引腳都是開漏結構所以兩側都需要接上拉電阻。上拉電阻的取值有講究低壓1.8V側用2.2kΩ到4.7kΩ都可以高壓3.3V側用4.7kΩ到10kΩ具體根據(jù)I2C總線上掛了多少設備、總線電容多大來調(diào)整。如果兩側的總線上已經(jīng)各有了上拉電阻那就不用重復加。但要注意有些開發(fā)板上的I2C上拉電阻是已經(jīng)焊死的這時你需要在計算總線上拉強度時把兩邊的電阻并聯(lián)效果考慮進去避免上拉過強導致低電平拉不下去。3.2 上拉電阻的選型計算與實測上拉電阻太大邊沿變緩高速通信時波形就變形了上拉電阻太小低電平灌電流變大功耗升高芯片可能承受不住。以I2C快速模式400kbps為例上升沿時間要求不超過300ns上拉電阻的最大值取決于總線電容。通??梢杂靡粋€簡化公式估算R_pullup ≤ t_rise / (0.8473 × C_bus)假設總線電容C_bus是100pF上升沿要求300ns那R_pullup ≤ 300ns / (0.8473 × 100pF) ≈ 3.54kΩ。所以取值3.3kΩ或者2.2kΩ比較穩(wěn)。如果總線距離很長、設備很多C_bus往200pF以上走就得用小一點的上拉比如1.5kΩ到2.2kΩ。我在實際操作中習慣先在默認值低壓側2.2kΩ高壓側4.7kΩ下跑一遍通信測試然后用示波器看波形如果上升沿有明顯的梯形畸變就減小電阻如果低電平電壓超過0.4V對3.3V系統(tǒng)來說就加大電阻。示波器是調(diào)試電平轉換電路最好的工具沒有之一。3.3 針對I2C總線的完整配置示例這里給一個可以直接照抄的硬件配置參考針對最常見的1.8V主控和3.3V從設備元件推薦值備注VL側上拉電阻2.2kΩ 到 3.3kΩ如果VL側總線上已帶上拉可不加VCC側上拉電阻4.7kΩ 到 10kΩ3.3V側阻值可以略大EN引腳連接直接接VL電源如果需要軟件控制關斷接GPIO注意GPIO電平去耦電容VL和VCC各一個0.1μF靠近芯片引腳放置總線速率100kbps / 400kbps實測在400kbps下波形良好要注意的是EN引腳的電壓域。如果EN引腳接的是1.8V的GPIO那么EN的高電平就是1.8V這對芯片來說是有效的邏輯高沒問題。但如果你想直接用3.3V的GPIO來控制EN而VL是1.8V最好確認一下芯片的EN輸入是否兼容這個電壓否則建議串聯(lián)一個限流電阻或者用分壓的方式降一下再進去。3.4 推挽信號場景下的連接技巧推挽信號和開漏信號不一樣不需要上拉電阻但要注意輸入側不能有外部上拉把電平拽住否則會出現(xiàn)驅動力對抗的問題。比如UART的TX引腳如果外部有一顆10kΩ電阻上拉到3.3V而芯片這一側是1.8V的VL那就可能出現(xiàn)高電平無法完全拉到1.8V的情況導致接收端判斷不準確。正確的做法是把推挽信號直接接到轉換器的兩端確保輸入側沒有額外的上拉或者下拉電阻。如果主控的IO配置了內(nèi)部上拉要在軟件里把內(nèi)部上拉關掉再測這個坑我踩過一次。當時一個項目里GPIO內(nèi)部上拉默認開啟外部接了電平轉換后低電平被拉高到0.6V怎么調(diào)都調(diào)不好最后發(fā)現(xiàn)是內(nèi)部上拉在搗亂。4. 常見問題與排查技巧實錄4.1 通訊不穩(wěn)定時好時壞這種問題在電平轉換電路里最常見的三個原因電源去耦不良、上拉電阻不匹配、地平面連接不暢。先看電源。用示波器探頭夾在VL或者VCC引腳上看如果電壓在信號翻轉時有明顯的毛刺或者跌落多半是去耦電容不夠或者位置離芯片太遠。0.1μF的陶瓷電容應該盡可能靠近電源引腳走線短而粗最好再并聯(lián)一個1μF到10μF的電容穩(wěn)住低頻。再看上拉。前面講過I2C開漏信號靠上拉提供高電平如果上拉電阻選大了上升沿變緩在400kbps下就可能產(chǎn)生誤碼。把總線速率降到100kbps試試如果問題消失大概率是上拉太弱。最后看地。兩個電壓域的“地”必須是同一點最好通過星型連接匯聚到主控的GND上不要在兩側之間形成地環(huán)路。地環(huán)路會引起共模噪聲導致信號電壓的參考點漂移問題很隱蔽。4.2 輸出高電平電壓不對有次調(diào)試遇到一個奇怪的現(xiàn)象低壓側輸出高電平只有0.9V而預期是1.8V。查了半天發(fā)現(xiàn)VL側的總線上掛著一個內(nèi)部帶上拉的傳感器這個傳感器是3.3V供電它的內(nèi)置上拉把信號線拉到了3.3V然后通過芯片內(nèi)部的保護二極管反向倒灌到1.8V電源上直接把系統(tǒng)拉垮了。這種“不同電壓域之間意外連接”的問題在多設備系統(tǒng)里特別容易發(fā)生。排查方法是把總線上所有設備的引腳狀態(tài)逐一確認看有沒有哪顆芯片的引腳默認配置了上拉或者下拉。很多傳感器上電默認就是開漏加上拉模式這個狀態(tài)在初始化之前就可能影響總線電平。4.3 關斷模式下電流還是很大EN拉低以后芯片應該進入關斷模式納安級的電流。如果實測電流明顯超標先看EN引腳電壓是否真的低于閥值。有些萬用表測出來是0V但實際因為走線過長、受到串擾芯片引腳上的電壓可能有零點幾伏的波動導致芯片沒有完全關斷。另外如果電平轉換器兩側還接著其他芯片這些芯片的漏電流也會疊加到總電流里這鍋不能全讓轉換器背。測功耗的時候把其他負載斷開單獨測轉換器一路才能得到準確的數(shù)據(jù)。4.4 問題排查速查表故障現(xiàn)象可能原因排查方法與對策通訊完全不通電源接反或漏接先用萬用表量VL、VCC和GND對地電壓通訊時好時壞上拉電阻偏大或偏小示波器看上升沿調(diào)整上拉阻值低電平不為0總線外部有其他上拉逐一排查總線上所有設備的默認引腳狀態(tài)高電平偏低電壓域間異常導通檢查是否有內(nèi)部保護二極管被正向偏置功耗異常高EN沒有真正拉低確認EN電壓檢查走線串擾高速模式波形差總線電容過大減小上拉電阻或者降低速率4.5 關于“雙向rrt”這類熱詞的聯(lián)動思考最近在論壇里看到“雙向rrt”這種詞頻繁出現(xiàn)一開始還以為是電路術語后來發(fā)現(xiàn)是某個圈子里的黑話大概是“雙向認證”之類的東西。在電平轉換這個領域真正和“雙向”強相關的就是I2C這種半雙工總線的處理能力。MAX14595自適應的雙向能力讓我在做系統(tǒng)設計時少考慮了很多方向控制的邏輯這點對固件工程師來說很友好。如果換用需要方向控制腳的轉換芯片底層驅動就得頻繁切換方向不僅代碼變復雜還可能因為切換時機不對導致總線沖突。5. 選型對比與場景適配建議5.1 什么時候選MAX14595什么時候選別的市面上電平轉換方案很多MAX14595有自己合適的生態(tài)位也有不適合的場景。如果你的信號速率是幾十兆赫茲以上比如SDIO、DDR接口那別選它得找專門的高速轉換器。如果電壓組合超出1.2V到5.5V的范圍那也得另找。但它最適合的場景很明確低速雙向總線、電池供電、空間受限。具體來說I2C總線電平轉換首選1.8V/2.5V/3.3V混合系統(tǒng)里的低速GPIO信號合適SPI總線若速率在幾MHz以內(nèi)可以用紐扣電池供電的傳感器節(jié)點非常合適關斷模式太香了5.2 多通道需求怎么處理如果要轉的信號超過兩路有兩種做法一是用兩片MAX14595各自獨立供電和使能二是找四通道或者八通道的轉換器。用多片的好處是靈活性高壞處是占板面積和成本上升。我個人的習慣是如果信號數(shù)量是2的倍數(shù)且不是I2C這種總線型I2C只需兩組信號線優(yōu)先考慮集成度更高的方案如果只是偶爾需要把三四個GPIO轉一下電平用兩片MAX14595也很方便封裝小布局不困難。5.3 一個冷門但實用的細節(jié)MAX14595的低壓側VL可以支持到1.2V這在超低壓系統(tǒng)里特別有用。有些MCU的內(nèi)核電壓可以降到1.2V來省電但GPIO口在這種電壓下還能不能可靠工作要打問號。帶上電平轉換芯片后主控以低壓運行外設以高壓運行兩邊都工作在最佳狀態(tài)功耗和性能兼得。很多低功耗設計忽略了這個細節(jié)其實這是一個非常好的優(yōu)化方向。6. 一些實操中的個人體會6.1 波形測試比理論計算更重要電平轉換電路最忌諱“感覺沒問題”就上量。我自己的流程是先按經(jīng)驗值焊上電路然后用示波器同時觀察兩個通道的輸入和輸出波形重點看上升沿時間、低電平電壓、有沒有振鈴。只要波形干凈通訊測試基本不會有問題。反過來即使通訊暫時正常波形有異常我也會追查到底因為這些問題在溫度變化、電壓波動時隨時會暴露。6.2 量產(chǎn)品里省掉上拉電阻是常見坑很多開發(fā)板上自帶I2C上拉電阻所以原型調(diào)試時一切正常。但到了做量產(chǎn)品的時候你可能為了省幾個電阻的錢把板載上拉去掉了結果發(fā)現(xiàn)通訊開始出錯。根本原因就是原來開發(fā)板上的上拉承擔了電平轉換電路的上拉工作。做原理圖評審的時候一定要逐條確認總線上拉加了嗎加的阻值對嗎位置合適嗎三個方面缺一不可。6.3 這是一個“小料解決大問題”的典型回到開頭那個溫濕度采集器項目后來我把分立MOS管方案換成了MAX14595三塊測試板連續(xù)跑了三個月的低溫循環(huán)測試I2C通訊一次都沒有卡過。從那之后我在所有涉及混合電壓I2C的項目里都用它再也沒在電平轉換上熬夜調(diào)過波形。如果你也正被兩個電壓域之間的通信折磨不用糾結直接上這個方案省下來的時間干點別的不香嗎