0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

I2C系統(tǒng)實現(xiàn)中的權(quán)衡取舍和微處理器的GPIO通信的基本操作

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-04-04 11:37 ? 次閱讀

界面如何將快樂的面孔變成悲傷的面孔?當界面正常工作時,工程師會露出快樂的面孔。悲傷的面孔表示某處失敗。由于微處理器IC之間的接口很簡單,甚至很容易,所以它們經(jīng)常被忽略,直到接口故障導(dǎo)致周圍悲傷的面孔。在本文中,我們將討論一個常見的SPI錯誤,該錯誤在大型系統(tǒng)中幾乎不可能找到。提供了指向界面教程信息的鏈接以獲取完整信息。還描述了作為系統(tǒng)問題的噪聲以及將其影響降至最低的IC。

介紹

系統(tǒng)微處理器集成電路 (IC) 之間的通用接口包括 SPI、I2C 和 GPIO。本文討論一個常見的SPI錯誤,該錯誤在大型系統(tǒng)中幾乎不可能發(fā)現(xiàn)。本文討論了噪聲作為系統(tǒng)問題,并提到了將噪聲影響降至最低的IC。本文解釋了I2C系統(tǒng)實現(xiàn)中的權(quán)衡取舍,并描述了來自微處理器的GPIO通信的基本操作。提供了指向教程信息的鏈接以供進一步閱讀。

界面如何使快樂的臉變成悲傷的臉?

IC的通用接口包括SPI、I2C和GPIO。確定IC如何與微控制器CPU接口對于任何成功的設(shè)計都非常重要。然而,微處理器和IC之間的接口很簡單,甚至很容易,因此在許多設(shè)計中經(jīng)常被忽視。在項目早期似乎節(jié)省的時間和精力可以讓設(shè)計工程師感到高興......此刻。這種情況讓人想起已成為日常生活一部分的快樂臉或無處不在的可愛“笑臉”表情符號是我們這里的隱喻。

工程師的“悲傷”面孔通常在項目后期出現(xiàn)墨菲定律“任何可能出錯的東西,都會在最糟糕的時刻出錯”籠罩著設(shè)計師彎曲的肩膀。這篇文章講述了一個悲傷的SPI接口故事,令人驚訝的是,這并不罕見。這是一個關(guān)于界面的操作如何使快樂的臉悲傷的故事。

“我的電腦討厭我,我的SPI總線在它想要的時候隨機做它想做的事。

基本 SPI 操作

串行外設(shè)接口總線或摩托羅拉命名的SPI(發(fā)音為“間諜”)總線是在全雙工模式下運行的同步串行數(shù)據(jù)總線。3設(shè)備以主/從模式通信,主設(shè)備啟動數(shù)據(jù)幀。允許使用單獨的從選擇(即片選)線路使用多個從設(shè)備。有時,SPI接口稱為“三線”(即不從從機回讀)或“四線”串行總線。4具有單向信號的SPI接口提供輕松的電氣隔離,以減少工廠中的接地回路。這種SPI接口稱為單向接口,因為四根導(dǎo)線中的每一根都只在一個方向上傳遞信息。電流隔離可以通過光學、電容或變壓器耦合來實現(xiàn)。

一些設(shè)計人員犯的第一個錯誤是假設(shè)SPI總線具有智能。圖1解釋了SPI從站的工作原理;對于接收數(shù)據(jù),它只是一個串行輸入、并行輸出移位寄存器。

pYYBAGQrm3CAUWpSAAAmF6kAjeE865.gif


圖1.SPI從結(jié)構(gòu)框圖(串行輸入、并行輸出移位寄存器)。

SPI總線很簡單,甚至沒有任何錯誤檢查就很愚蠢,這一點怎么強調(diào)都不為過。它本質(zhì)上是一串串行編寫的寄存器。當芯片選擇被引發(fā)時,寄存器將一個并行字卸載到芯片中。SPI位本身沒有協(xié)議或意義。消息中甚至沒有設(shè)定數(shù)量的位;位數(shù)因從站的需求而異。為了使設(shè)計復(fù)雜化,可以將來自不同制造商的不同類型的多個設(shè)備菊花鏈連接在一起。當然,它們必須都具有相同的時鐘和數(shù)據(jù)關(guān)系(四種可能的格式之一)3).

現(xiàn)在想象菊花鏈中的三個設(shè)備。芯片 1 首先看到芯片 3 的命令通過,然后是芯片 2 的命令。只有在自己的命令移入后,芯片選擇線才會變高。然后,也只有這樣,任何命令對任何單個芯片都有意義。

隨著系統(tǒng)變得越來越大和繁忙,系統(tǒng)可能會發(fā)送部分SPI命令,這是致命的。當位加載到SPI移位寄存器的開頭時,就會發(fā)生死亡。然后,在位在移位寄存器中處于適當位置之前,芯片選擇變?yōu)楦唠娖?。寄存器中的任何?nèi)容都并聯(lián)移入芯片。因此,在 SPI 命令期間必須屏蔽中斷,以確保不發(fā)送部分 SPI 命令。

為了說明SPI接口的正確工作原理,我們使用MAX5312 12位數(shù)模轉(zhuǎn)換器DAC)。

表 1 顯示了最先加載的最高有效位 (MSB) 和最后加載的最低有效位 (LSB)。圖 2 顯示了首先加載的 4 位命令。請注意,僅使用了可能的 16 個控制字中的 <> 個,并且有一條警告不要使用任何未列出的命令。如果使用未列出的命令,設(shè)備可能會也可能不會做出反應(yīng)。無論如何,不能保證會發(fā)生任何好事。事實上,很有可能會發(fā)生不好的事情,所以不要使用任何未指定的命令。5MAX5312在數(shù)字引腳上還具有施密特觸發(fā)器輸入,以最大限度地降低噪聲影響。

表 1.串行數(shù)據(jù)格式
控制位 數(shù)據(jù)位
MSB 低音水平
C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
表 2.串行接口編程命令
控制位* 輸入數(shù)據(jù) 功能
C3 C2 C1 C0 D11–D0
0 0 0 0 XXXXXXXXXXXXX 無操作;命令被忽略
0 0 1 0 12 位 DAC 數(shù)據(jù) 從移位寄存器加載輸入寄存器;DAC 輸出不變。
0 1 0 0 12 位 DAC 數(shù)據(jù) 從移位寄存器加載輸入和DAC寄存器;DAC 輸出已更新。
0 1 1 0 XXXXXXXXXXXXX 從輸入寄存器加載DAC寄存器;DAC輸出已更新;輸入寄存器不變。
1 0 0 0 XXXXXXXXXXXXX 進入關(guān)機;輸入和DAC寄存器保持不變。
1 1 0 0 XXXXXXXXXXXXX 退出關(guān)閉;輸入和DAC寄存器保持不變。

X = 不在乎。
*所有未列出的命令均為保留命令。請勿使用。

poYBAGQrm3CALIpiAAAU1KAw6V0081.gif


圖2.MAX5312數(shù)據(jù)資料中的SPI接口示例

神秘噪音

有時,客戶擔心他們的系統(tǒng)中發(fā)生了奇怪的事情。很多時候,他們將噪音歸咎于原因。未必如此。

我們認為噪音不太可能。原因如下。如果未發(fā)生SPI傳輸,則芯片選擇(%-overbar_pre%CS%-overbar_post%)必須保持在零(無噪聲),而時鐘和數(shù)據(jù)在30%和70%電壓數(shù)據(jù)閾值之間顫振。如果在SPI消息期間芯片選擇為低電平,則數(shù)據(jù)和時鐘上的噪聲可能會侵入。經(jīng)驗表明,如果噪聲真的那么糟糕,那么沒有任何東西通過,或者想要的數(shù)據(jù)就會隨著DAC輸出的瘋狂跳躍而丟失。三行中的一條干凈(即%-overbar_pre%CS%-overbar_post%),時鐘和數(shù)據(jù)上的巨大噪聲是非常不尋常的。

有一句古老的格言告訴我們,在解決問題時,首先要尋找最簡單、最可能的答案。因此,在我們的示例中,這種“奇怪的活動”更有可能是部分或不完整的SPI消息。但是,它從何而來?在系統(tǒng)開發(fā)過程中,通常使用小型系統(tǒng)或最終大型系統(tǒng)的子集。由于處理器不是很忙,中斷很少截斷 SPI 命令。隨著系統(tǒng)的增長和處理器對更多設(shè)備的命令數(shù)量的增加,中斷截斷 SPI 命令的可能性也會增加。這正是在SPI傳輸期間必須屏蔽中斷的原因。

噪聲如何影響IC?

巨大的噪聲源會壓倒數(shù)字傳輸6, 7.因此,最大的潛在電路錯誤(如雷擊)必須在系統(tǒng)級解決,而較小的問題可以在芯片級處理。

普通IC無法修復(fù)的大系統(tǒng)錯誤之一是電源不穩(wěn)定。在3V至1V之間快速顫振的5V電源將導(dǎo)致IC無法處理的故障。誠然,這是一個極端的例子,但在我們周圍的世界中并不是獨一無二的。每天都有大型電機、電弧焊機、雷電引起的浪涌和變電站負載切換引起的電力線故障。大型輸電網(wǎng)必須通過在白天增加和移除發(fā)電設(shè)備來應(yīng)對不斷變化的需求。這種設(shè)備切換會導(dǎo)致電壓變化,從而在整個電網(wǎng)中產(chǎn)生漣漪。其他潛在的大噪聲源是射頻干擾 (RFI)、電磁干擾 (EMI) 和靜電放電 (ESD)。許多地區(qū)在夏季幾乎每天都會經(jīng)歷雷暴,冬季濕度低,ESD產(chǎn)生恒定。所有這些大的毛刺和錯誤都必須通過安全理由、屏蔽和浪涌抑制在系統(tǒng)層面進行預(yù)測和解決。

使用適當?shù)碾娫春徒拥匦切芜B接在芯片級別管理的小錯誤;單獨的PCB電源和接地層,用于清潔(模擬)和臟(數(shù)字)電壓;6以及串聯(lián)電阻器、電感器和鐵氧體磁珠以及并聯(lián)電容的功率去耦。7

這些主要噪聲源可能會破壞系統(tǒng)。Maxim擁有,并且有許多器件可用于保護電源、數(shù)據(jù)和接口。在極端情況下,還需要提供看門狗定時器電路來重新啟動系統(tǒng)微處理器。

接口海洋中的I2C

有大量的接口系統(tǒng):RS-232,RS-422 / RS-485,USB,以太網(wǎng)IEEE? 802及其字母湯,IO-Link?,LIN總線,1-Wire?,I2C,SMBus,SPI,MICROWIRE/? MICROWIRE PLUS,? M-Bus(EN1434)和CAN(ISO11898),僅舉幾例。(許多商標由其發(fā)起人注冊。有太多相互競爭的系統(tǒng)、協(xié)議、標準和部分標準,很難選擇。8

內(nèi)部集成電路(I2C)是一種多主站、串行、單端通信總線,用于將低速外設(shè)連接到電視機、消費類設(shè)備、手機或其他電子設(shè)備。對于電氣隔離不是問題的小面積、機箱或 PC 板中的通信,它是一個不錯的選擇。它還已擴展用于有線系統(tǒng)。

與大多數(shù)系統(tǒng)一樣,I2C接口也有其權(quán)衡取舍。其基本限制是電阻上拉和400pF的最大電容。理想情況下,總線將具有較低的功耗,特別是對于電池供電的設(shè)備。較低的功率也會轉(zhuǎn)化為較慢的總線速度。但有些應(yīng)用需要更快的通信。典型I2C時鐘速度在100kHz至3.4MHz之間;對于更快的速度,SPI時鐘可以在數(shù)十兆赫茲區(qū)域。I2C也稱為“雙線”串行總線,9I2C雙線數(shù)字接口非常適合速度較慢的系統(tǒng)。I2C使用雙向信號;單條數(shù)據(jù)線將數(shù)據(jù)從主站傳輸?shù)綇恼?,并從從站向從站進行確認。系統(tǒng)可以有多個主節(jié)點,并且由于時鐘來自當前活動的主節(jié)點,因此時鐘也可以是雙向的。這種雙向通信使電流隔離復(fù)雜化,這就是為什么I2C通常只用于系統(tǒng)的小區(qū)域。

有大量的IC器件使用許多接口。設(shè)計時,最好搜索所需的功能,例如ADC、DAC、溫度傳感器或數(shù)字電位計,然后考慮可用的接口。

GPIO 簡單明了

通用輸入輸出 (GPIO) 控制由來自微處理器的單個并行控制線組成。當簡單的設(shè)備僅由幾根電線控制時,就會使用它。GPIO 只是使用標準微處理器端口作為并行接口。同樣,今天您可以找到許多并行接口IC,包括ADC和DAC。

結(jié)論

當界面正常工作時,工程師會微笑(有快樂的面孔)。周圍悲傷的面孔表明某處失敗。那么,應(yīng)該吸取什么教訓(xùn)呢?老實說,它是如此簡單,以至于通常被忽視:注意細節(jié),特別是如果您不了解它們的全部重要性。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10807

    瀏覽量

    210856
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2244

    瀏覽量

    82267
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1189

    瀏覽量

    51839
收藏 人收藏

    評論

    相關(guān)推薦

    GPIO模擬I2C總線的驅(qū)動設(shè)計與實現(xiàn)

    I2C總線簡單方便,是我們經(jīng)常使用的一種總線。但有時候我們的MCU沒有足夠多的I2C控制實現(xiàn)我們的應(yīng)用,所幸我可以使用普通的GPIO引腳
    發(fā)表于 12-14 14:19 ?5307次閱讀
    <b class='flag-5'>GPIO</b>模擬<b class='flag-5'>I2C</b>總線的驅(qū)動設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    微處理器主要部件組成概述

    總線結(jié)構(gòu),即構(gòu)成微機的各功能部件(微處理器、存儲、I/O接口電路等)之間通過總線相連接,這是微型計算機系統(tǒng)結(jié)構(gòu)上的獨特之處。采用總線結(jié)構(gòu)之后,使
    發(fā)表于 04-13 09:52

    什么是嵌入式系統(tǒng)和嵌入式微處理器

    擴展的處理器結(jié)構(gòu),以能最迅速地開展出滿足應(yīng)用的最高性能的嵌入式微處理器。4)嵌入式微處理器必須功耗很低,尤其是用于便攜式的無線及移動的計算和通信設(shè)備
    發(fā)表于 08-12 14:35

    MiCO 基于微處理器的物聯(lián)網(wǎng)操作系統(tǒng)

    `MiCO 基于微處理器的物聯(lián)網(wǎng)操作系統(tǒng)介紹 :`
    發(fā)表于 01-26 10:42

    詳解微處理器和微控制區(qū)別

    面向控制的設(shè)備,微控制經(jīng)常要實時響應(yīng)外界的激勵?! ∑涠?,應(yīng)用領(lǐng)域。微處理器通常作為微型計算機系統(tǒng)的CPU使用,其設(shè)計正是針對這樣的應(yīng)用,這也是
    發(fā)表于 10-27 15:51

    【轉(zhuǎn)帖】詳解微處理器和微控制區(qū)別

    控制的設(shè)備,微控制經(jīng)常要實時響應(yīng)外界的激勵。二,應(yīng)用領(lǐng)域微處理器通常作為微型計算機系統(tǒng)的CPU使用,其設(shè)計正是針對這樣的應(yīng)用,這也是微處理器
    發(fā)表于 11-17 14:10

    處理器微處理器系統(tǒng)

    /單片機。世界上的微處理器系統(tǒng)的總數(shù)比人類總數(shù)還多得多。它的基本工作原理是用程序控制系統(tǒng)的行為。微處理器系統(tǒng)的基本
    發(fā)表于 02-07 11:41

    了解微處理器的基本操作

    1.主要學習嵌入式系統(tǒng)概述了解微處理器的基本操作。理解微處理器體系結(jié)構(gòu)的基本概念。機器語言程序的基礎(chǔ)知識。用匯編語言設(shè)計和編寫程序2.嵌入式系統(tǒng)
    發(fā)表于 12-17 07:50

    基于S3C44B0X微處理器的JFFS2件系統(tǒng)實現(xiàn)

    基于S3C44B0X微處理器的JFFS2件系統(tǒng)實現(xiàn)
    發(fā)表于 03-28 09:50 ?16次下載

    基于Linux操作系統(tǒng)和S3C2410微處理器實現(xiàn)GPS實時導(dǎo)航系統(tǒng)的設(shè)計

    這里提出一種實用的設(shè)計方案,通過對系統(tǒng)的各方面配置,實現(xiàn)GPS實時導(dǎo)航功能。系統(tǒng)主控器件采用韓國Samsung公司生產(chǎn)的ARM核32位RISC微處理器S3
    發(fā)表于 03-09 10:47 ?1055次閱讀
    基于Linux<b class='flag-5'>操作系統(tǒng)</b>和S3<b class='flag-5'>C</b>2410<b class='flag-5'>微處理器</b><b class='flag-5'>實現(xiàn)</b>GPS實時導(dǎo)航<b class='flag-5'>系統(tǒng)</b>的設(shè)計

    基于S3C4510B微處理器操作系統(tǒng)實現(xiàn)網(wǎng)絡(luò)通信工程的編寫設(shè)計

    Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“針對微控制領(lǐng)域而設(shè)計的Linux系統(tǒng)”。它也是針對無MMU(內(nèi)存管理單元模塊)的微處理器
    的頭像 發(fā)表于 10-04 17:37 ?1941次閱讀
    基于S3<b class='flag-5'>C</b>4510B<b class='flag-5'>微處理器</b>和<b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>實現(xiàn)</b>網(wǎng)絡(luò)<b class='flag-5'>通信</b>工程的編寫設(shè)計

    STM32 通用GPIO模擬I2C實現(xiàn)

    STM32 模擬I2C實現(xiàn)#通用GPIO模擬I2C通信實現(xiàn)樣例1 GPIO初始化``#ifdef
    發(fā)表于 11-29 15:21 ?28次下載
    STM32 通用<b class='flag-5'>GPIO</b>模擬<b class='flag-5'>I2C</b><b class='flag-5'>實現(xiàn)</b>

    微處理器GPIO通信的基本操作

    最低的IC。本文解釋了I2C系統(tǒng)實現(xiàn)權(quán)衡取舍,并
    的頭像 發(fā)表于 06-10 10:15 ?1223次閱讀
    <b class='flag-5'>微處理器</b>的<b class='flag-5'>GPIO</b><b class='flag-5'>通信</b>的基本<b class='flag-5'>操作</b>

    嵌入式微處理器的原理和應(yīng)用

    嵌入式微處理器是專為嵌入式系統(tǒng)設(shè)計的微處理器,它們是嵌入式系統(tǒng)的核心組件,負責執(zhí)行程序指令、處理數(shù)據(jù)和控制其他硬件設(shè)備。與通用
    的頭像 發(fā)表于 03-28 15:51 ?793次閱讀

    什么是嵌入式微處理器? 嵌入式微處理器的區(qū)別

    嵌入式微處理器(Embedded Microprocessor)是一種被用于控制和操作特定嵌入式系統(tǒng)微處理器。嵌入式系統(tǒng)是指內(nèi)部集成了特定
    的頭像 發(fā)表于 04-21 15:44 ?1434次閱讀