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

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

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

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

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

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

介紹

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

界面如何使快樂(lè)的臉變成悲傷的臉?

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

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

“我的電腦討厭我,我的SPI總線在它想要的時(shí)候隨機(jī)做它想做的事。

基本 SPI 操作

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

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

pYYBAGQrm3CAUWpSAAAmF6kAjeE865.gif


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

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

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

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

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

表 1 顯示了最先加載的最高有效位 (MSB) 和最后加載的最低有效位 (LSB)。圖 2 顯示了首先加載的 4 位命令。請(qǐng)注意,僅使用了可能的 16 個(gè)控制字中的 <> 個(gè),并且有一條警告不要使用任何未列出的命令。如果使用未列出的命令,設(shè)備可能會(huì)也可能不會(huì)做出反應(yīng)。無(wú)論如何,不能保證會(huì)發(fā)生任何好事。事實(shí)上,很有可能會(huì)發(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 無(wú)操作;命令被忽略
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 進(jìn)入關(guān)機(jī);輸入和DAC寄存器保持不變。
1 1 0 0 XXXXXXXXXXXXX 退出關(guān)閉;輸入和DAC寄存器保持不變。

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

poYBAGQrm3CALIpiAAAU1KAw6V0081.gif


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

神秘噪音

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

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

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

噪聲如何影響IC?

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

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

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

這些主要噪聲源可能會(huì)破壞系統(tǒng)。Maxim擁有,并且有許多器件可用于保護(hù)電源、數(shù)據(jù)和接口。在極端情況下,還需要提供看門狗定時(shí)器電路來(lái)重新啟動(dòng)系統(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),僅舉幾例。(許多商標(biāo)由其發(fā)起人注冊(cè)。有太多相互競(jìng)爭(zhēng)的系統(tǒng)、協(xié)議、標(biāo)準(zhǔn)和部分標(biāo)準(zhǔn),很難選擇。8

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

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

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

GPIO 簡(jiǎn)單明了

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

結(jié)論

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

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    10772

    瀏覽量

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

    關(guān)注

    11

    文章

    2231

    瀏覽量

    82203
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1182

    瀏覽量

    51738
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPIO模擬I2C總線的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

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

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

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

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

    擴(kuò)展的處理器結(jié)構(gòu),以能最迅速地開展出滿足應(yīng)用的最高性能的嵌入式微處理器。4)嵌入式微處理器必須功耗很低,尤其是用于便攜式的無(wú)線及移動(dòng)的計(jì)算和通信設(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)常要實(shí)時(shí)響應(yīng)外界的激勵(lì)?! ∑涠瑧?yīng)用領(lǐng)域。微處理器通常作為微型計(jì)算機(jī)系統(tǒng)的CPU使用,其設(shè)計(jì)正是針對(duì)這樣的應(yīng)用,這也是
    發(fā)表于 10-27 15:51

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

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

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

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

    了解微處理器的基本操作

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

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

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

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

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

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

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

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

    STM32 模擬I2C實(shí)現(xiàn)#通用GPIO模擬I2C通信實(shí)現(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'>實(shí)現(xiàn)</b>

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

    最低的IC。本文解釋了I2C系統(tǒng)實(shí)現(xiàn)權(quán)衡取舍,并
    的頭像 發(fā)表于 06-10 10:15 ?1194次閱讀
    <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è)計(jì)的微處理器,它們是嵌入式系統(tǒng)的核心組件,負(fù)責(zé)執(zhí)行程序指令、處理數(shù)據(jù)和控制其他硬件設(shè)備。與通用
    的頭像 發(fā)表于 03-28 15:51 ?746次閱讀

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

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