當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式微處理器
[導(dǎo)讀]現(xiàn)今,在低端數(shù)字通信應(yīng)用領(lǐng)域,我們隨處可見IIC(Inter-Integrated Circuit)和 SPI(Serial Peripheral Interface)的身影。原因是這兩種通信協(xié)議非常適合近距離低速芯片間通信。Philips(for IIC)和Motorola(for SPI)出于不同背景和市場(chǎng)需求制定了這兩種標(biāo)準(zhǔn)通


現(xiàn)今,在低端數(shù)字通信應(yīng)用領(lǐng)域,我們隨處可見IIC(Inter-Integrated Circuit)和 SPI(Serial Peripheral Interface)的身影。原因是這兩種通信協(xié)議非常適合近距離低速芯片間通信。Philips(for IIC)和Motorola(for SPI)出于不同背景和市場(chǎng)需求制定了這兩種標(biāo)準(zhǔn)通信協(xié)議。

IIC開發(fā)于1982年,當(dāng)時(shí)是為了給電視機(jī)內(nèi)的CPU和外圍芯片提供更簡(jiǎn)易的互聯(lián)方式。電視機(jī)是最早的嵌入式系統(tǒng)之一,而最初的嵌入系統(tǒng)是使用內(nèi)存映射(memory-mapped I/O)的方式來(lái)互聯(lián)微控制器和外圍設(shè)備的。要實(shí)現(xiàn)內(nèi)存映射,設(shè)備必須并聯(lián)入微控制器的數(shù)據(jù)線和地址線,這種方式在連接多個(gè)外設(shè)時(shí)需大量線路和額外地址解碼芯片,很不方便并且成本高。

為了節(jié)省微控制器的引腳和和額外的邏輯芯片,使印刷電路板更簡(jiǎn)單,成本更低,位于荷蘭的Philips實(shí)驗(yàn)室開發(fā)了“Inter-Integrated Circuit”,IIC或I2C ,一種只使用二根線接連所有外圍芯片的總線協(xié)議。最初的標(biāo)準(zhǔn)定義總線速度為100kbps。經(jīng)歷幾次修訂,主要是1995年的400kbps,1998的3.4Mbps。

有跡象表明,SPI總線首次推出是在1979年,Motorola公司將SPI總線集成在他們第一支改自68000微處理器的微控制器芯片上。SPI總線是微控制器四線的外部總線(相對(duì)于內(nèi)部總線)。與IIC不同,SPI沒(méi)有明文標(biāo)準(zhǔn),只是一種事實(shí)標(biāo)準(zhǔn),對(duì)通信操作的實(shí)現(xiàn)只作一般的抽象描述,芯片廠商與驅(qū)動(dòng)開發(fā)者通過(guò)data sheets和application notes溝通實(shí)現(xiàn)上的細(xì)節(jié)。

SPI總線介紹

對(duì)于有經(jīng)驗(yàn)的數(shù)字電子工程師來(lái)說(shuō),用SPI互聯(lián)兩支數(shù)字設(shè)備是相當(dāng)直觀的。SPI是一種四根信號(hào)線協(xié)議(如圖1):
SCLK:Serial Clock (output from master);
MOSI;SIMO:Master Output,Slave Input;
MISO;SOMI:Master Input,Slave Output;
SS:Slave Select (active low)。

圖1

SPI是單主設(shè)備(single-master)通信協(xié)議,這意味著總線中的只有一支中心設(shè)備能發(fā)起通信。當(dāng)SPI主設(shè)備想讀/寫從設(shè)備時(shí),它首先拉低從設(shè)備對(duì)應(yīng)的SS線(SS是低電平有效),接著開始發(fā)送工作脈沖到時(shí)鐘線上,在相應(yīng)的脈沖時(shí)間上,主設(shè)備把信號(hào)發(fā)到MOSI實(shí)現(xiàn)“寫”,同時(shí)可對(duì)MISO采樣而實(shí)現(xiàn)“讀”,如圖2:

圖2

SPI有四種操作模式:模式0、模式1、模式2和模式3.它們的區(qū)別是定義了在時(shí)鐘脈沖的哪條邊沿轉(zhuǎn)換(toggles)輸出信號(hào),哪條邊沿采樣輸入信號(hào),還有時(shí)鐘脈沖的穩(wěn)定電平值(即時(shí)鐘信號(hào)無(wú)效時(shí)是高還是低)。每種模式由一對(duì)參數(shù)刻畫,它們稱為時(shí)鐘極(clock polarity)CPOL與時(shí)鐘期(clock phase)CPHA。

主從設(shè)備必須使用相同的工作參數(shù)——SCLK\CPOL和CPHA,才能正常工作。如果有多個(gè)從設(shè)備,并且它們使用了不同的工作參數(shù),那么主設(shè)備必須在讀寫不同從設(shè)備間重新配置這些參數(shù)。

SPI不規(guī)定最大傳輸速率,沒(méi)有地址方案;SPI也沒(méi)規(guī)定通信應(yīng)答機(jī)制,沒(méi)有規(guī)定流控制規(guī)則。事實(shí)上,SPI主設(shè)備甚至并不知道指定的從設(shè)備是否存在。這些通信控制都得通過(guò)SPI協(xié)議以外自行實(shí)現(xiàn)。例如,要用SPI連接一支“命令-響應(yīng)控制型”解碼芯片,則必須在SPI的基礎(chǔ)上實(shí)現(xiàn)更高級(jí)的通信協(xié)議。

SPI并不關(guān)心物理接口的電氣特性,例如信號(hào)的標(biāo)準(zhǔn)電壓。在最初,大多數(shù)SPI應(yīng)用都是使用間斷性時(shí)鐘脈沖和以字節(jié)為單位傳輸數(shù)據(jù)的,但現(xiàn)在有很多變種實(shí)現(xiàn)了連續(xù)性時(shí)間脈沖和任意長(zhǎng)度的數(shù)據(jù)幀。

IIC總線介紹

與SPI的單主設(shè)備不同,IIC是多主設(shè)備的總線,IIC沒(méi)有物理的芯片選擇信號(hào)線,沒(méi)有仲裁邏輯電路,只使用兩條信號(hào)線——serial data(SDA)和serial clock(SCL)。

IIC協(xié)議規(guī)定:
  • 每一支IIC設(shè)備都有一個(gè)唯一的七位設(shè)備地址。
  • 數(shù)據(jù)幀大小為8位的字節(jié)。
  • 數(shù)據(jù)(幀)中的某些數(shù)據(jù)位,用于控制通信的開始、停止、方向(讀寫)和應(yīng)答機(jī)制。

IIC數(shù)據(jù)傳輸速率有標(biāo)準(zhǔn)模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps),另外一些變種實(shí)現(xiàn)了低速模式(10kbps)和快速+模式(1Mbps)。

物理實(shí)現(xiàn)上,IIC總線由兩根信號(hào)線和一根地線組成。兩根信號(hào)線都是雙向傳輸?shù)模瑓⒖紙D3。IIC協(xié)議標(biāo)準(zhǔn)規(guī)定發(fā)起通信的設(shè)備稱為主設(shè)備,主設(shè)備發(fā)起一次通信后,其它設(shè)備均為從設(shè)備。

圖3

IIC通信過(guò)程大概如下。首先,主設(shè)備發(fā)一個(gè)START信號(hào),這個(gè)信號(hào)就像對(duì)所有其它設(shè)備喊:請(qǐng)大家注意!然后其它設(shè)備開始監(jiān)聽總線以準(zhǔn)備接收數(shù)據(jù)。接著,主設(shè)備發(fā)送一個(gè)7位設(shè)備地址加一位的讀寫操作的數(shù)據(jù)幀。當(dāng)所設(shè)備接收數(shù)據(jù)后,比對(duì)地址自己是否目標(biāo)設(shè)備。如果比對(duì)不符,設(shè)備進(jìn)入等待狀態(tài),等待STOP信號(hào)的來(lái)臨;如果比對(duì)相符,設(shè)備會(huì)發(fā)送一個(gè)應(yīng)答信號(hào)——ACKNOWLEDGE作回應(yīng)。

當(dāng)主設(shè)備收到應(yīng)答后便開始傳送或接收數(shù)據(jù)。數(shù)據(jù)幀大小為8位,尾隨一位的應(yīng)答信號(hào)。主設(shè)備發(fā)送數(shù)據(jù),從設(shè)備應(yīng)答;相反主設(shè)備接數(shù)據(jù),主設(shè)備應(yīng)答。當(dāng)數(shù)據(jù)傳送完畢,主設(shè)備發(fā)送一個(gè)STOP信號(hào),向其它設(shè)備宣告釋放總線,其它設(shè)備回到初始狀態(tài)。

圖4

基于IIC總線的物理結(jié)構(gòu),總線上的START和STOP信號(hào)必定是唯一的。另外,IIC總線標(biāo)準(zhǔn)規(guī)定:SDA線的數(shù)據(jù)轉(zhuǎn)換必須在SCL線的低電平期,在SCL線的高電平期,SDA線的上數(shù)據(jù)是穩(wěn)定的。

圖5

在物理實(shí)現(xiàn)上,SCL線和SDA線都是漏極開路(open-drain),通過(guò)上拉電阻外加一個(gè)電壓源。當(dāng)把線路接地時(shí),線路為邏輯0,當(dāng)釋放線路,線路空閑時(shí),線路為邏輯1。基于這些特性,IIC設(shè)備對(duì)總線的操作僅有“把線路接地”——輸出邏輯0。

IIC總線設(shè)計(jì)只使用了兩條線,但相當(dāng)優(yōu)雅地實(shí)現(xiàn)任意數(shù)目設(shè)備間無(wú)縫通信,堪稱完美。我們?cè)O(shè)想一下,如果有兩支設(shè)備同時(shí)向SCL線和SDA線發(fā)送信息會(huì)出現(xiàn)什么情況。

基于IIC總線的設(shè)計(jì),線路上不可能出現(xiàn)電平?jīng)_突現(xiàn)象。如果一支設(shè)備發(fā)送邏輯0,其它發(fā)送邏輯1,那么線路看到的只有邏輯0。也就是說(shuō),如果出現(xiàn)電平?jīng)_突,發(fā)送邏輯0的始終是“贏家”。

總線的物理結(jié)構(gòu)亦允許主設(shè)備在往總線寫數(shù)據(jù)的同時(shí)讀取數(shù)據(jù)。這樣,任何設(shè)備都可以檢測(cè)沖突的發(fā)生。當(dāng)兩支主設(shè)備競(jìng)爭(zhēng)總線的時(shí)候,“贏家”并不知道競(jìng)爭(zhēng)的發(fā)生,只有“輸家”發(fā)現(xiàn)了沖突——當(dāng)它寫一個(gè)邏輯1,卻讀到0時(shí)——而退出競(jìng)爭(zhēng)。

十位設(shè)備地址

任何IIC設(shè)備都有一個(gè)7位地址,理論上,現(xiàn)實(shí)中只能有127種不同的IIC設(shè)備。實(shí)際上,已有IIC的設(shè)備種類遠(yuǎn)遠(yuǎn)多于這個(gè)限制,在一條總線上出現(xiàn)相同的地址的IIC設(shè)備的概率相當(dāng)高。為了突破這個(gè)限制,很多設(shè)備使用了雙重地址——7位地址加引腳地址(external configuration pins)。IIC標(biāo)準(zhǔn)也預(yù)知了這種限制,提出10位的地址方案。

10位的地址方案對(duì)IIC協(xié)議的影響有兩點(diǎn):
  • 第一,地址幀為兩個(gè)字節(jié)長(zhǎng),原來(lái)的是一個(gè)字節(jié)。
  • 第二,第一個(gè)字節(jié)前五位最高有效位用作10位地址標(biāo)識(shí),約定是“11110”。

圖56

除了10位地址標(biāo)識(shí),標(biāo)準(zhǔn)還預(yù)留了一些地址碼用作其它用途,如下表:

圖7

時(shí)鐘拉伸

在IIC通信中,主設(shè)備決定了時(shí)鐘速度。因?yàn)闀r(shí)鐘脈沖信號(hào)是由主設(shè)備顯式發(fā)出的。但是,當(dāng)從設(shè)備沒(méi)辦法跟上主設(shè)備的速度時(shí),從設(shè)備需要一種機(jī)制來(lái)請(qǐng)求主設(shè)備慢一點(diǎn),這種機(jī)制稱為時(shí)鐘拉伸。而基于IIC結(jié)構(gòu)的特殊性,這種機(jī)制得到實(shí)現(xiàn)。當(dāng)從設(shè)備需要降低傳輸?shù)乃俣鹊臅r(shí)候,它可以按下時(shí)鐘線,逼迫主設(shè)備進(jìn)入等待狀態(tài),直到從設(shè)備釋放時(shí)鐘線,通信才繼續(xù)。

高速模式

原理上講,使用上拉電阻來(lái)設(shè)置邏輯1,會(huì)限制總線的最大傳輸速度。而速度是限制總線應(yīng)用的因素之一。這也說(shuō)明為什么要引入高速模式(3.4Mbps)。在發(fā)起一次高速模式傳輸前,主設(shè)備必須先在低速的模式下(例如快速模式)發(fā)出特定的“High Speed Master”信號(hào)。為縮短信號(hào)的周期和提高總線速度,高速模式必須使用額外的I/O緩沖區(qū)。另外,總線仲裁在高速模式下可屏蔽掉。更多的信息請(qǐng)參與總線標(biāo)準(zhǔn)文檔。

IIC與SPI對(duì)比

我們來(lái)對(duì)比一下IIC和SPI的一些關(guān)鍵點(diǎn)。

1 總線拓?fù)浣Y(jié)構(gòu)\信號(hào)路由\硬件資源耗費(fèi)

IIC只需兩根信號(hào)線,而標(biāo)準(zhǔn)SPI至少四根信號(hào),如果有多個(gè)從設(shè)備,信號(hào)需要更多。一些SPI變種雖然只使用三根線——SCLK、SS和雙向的MISO/MOSI,但SS線還是要和從設(shè)備一對(duì)一根。另外,如果SPI要實(shí)現(xiàn)多主設(shè)備結(jié)構(gòu),總線系統(tǒng)需額外的邏輯和線路。用IIC構(gòu)建系統(tǒng)總線唯一的問(wèn)題是有限的7位地址空間,但這個(gè)問(wèn)題新標(biāo)準(zhǔn)已經(jīng)解決——使用10位地址。從第一點(diǎn)上看,IIC是明顯的大贏家。

2 數(shù)據(jù)吞吐\傳輸速度

如果應(yīng)用中必須使用高速數(shù)據(jù)傳輸,那么SPI是必然的選擇。因?yàn)镾PI是全雙工,IIC的不是。SPI沒(méi)有定義速度限制,一般的實(shí)現(xiàn)通常能達(dá)到甚至超過(guò)10Mbps。IIC最高的速度也就快速+模式(1Mbps)和高速模式(3.4Mbps),后面的模式還需要額外的I/O緩沖區(qū),還并不是總是容易實(shí)現(xiàn)的。

3 優(yōu)雅性

IIC常被稱更優(yōu)雅于SPI。公正的說(shuō),筆者更傾向于認(rèn)為兩者同等優(yōu)雅和健壯。IIC的優(yōu)雅在于它的特色——用很輕盈的架構(gòu)實(shí)現(xiàn)了多主設(shè)備仲裁和設(shè)備路由。但是對(duì)使用的工程師來(lái)講,理解總線結(jié)構(gòu)更費(fèi)勁,而且總線的性能不高。

SPI的優(yōu)點(diǎn)在于它的結(jié)構(gòu)相當(dāng)?shù)闹庇^簡(jiǎn)單,容易實(shí)現(xiàn),并且有很好擴(kuò)展性。SPI的簡(jiǎn)單性不足稱其優(yōu)雅,因?yàn)橐肧PI搭建一個(gè)有用的通信平臺(tái),還需要在SPI之上構(gòu)建特定的通信協(xié)議軟件。也就是說(shuō)要想獲得SPI特有而IIC沒(méi)有的特性——高速性能,工程師們需要付出更多的勞動(dòng)。另外,這種自定的工作是完全自由的,這也說(shuō)明為什么SPI沒(méi)有官方標(biāo)準(zhǔn)。IIC和SPI都對(duì)低速設(shè)備通信提供了很好的支持,不過(guò),SPI適合數(shù)據(jù)流應(yīng)用,而IIC更適合“字節(jié)設(shè)備”的多主設(shè)備應(yīng)用。

結(jié)語(yǔ)

在數(shù)字通信協(xié)議簇中,IIC和SPI常稱為“小”協(xié)議,相對(duì)Ethernet、USB、SATA、PCI-Express等傳輸速度達(dá)數(shù)百上千兆字節(jié)每秒的總線。但是,我們不能忘記的是各種總線的用途是什么。“大”協(xié)議是用于系統(tǒng)外的整個(gè)系統(tǒng)之間通信的,“小”協(xié)議是用于系統(tǒng)內(nèi)各芯片間的通信,沒(méi)有跡象表明“大”協(xié)議有必要取代“小”協(xié)議。IIC和SPI的存在和流行體現(xiàn)了“夠用就好”的哲學(xué)。回應(yīng)文首,IIC和SPI如此流行,它是任何一位嵌入式工程師必備的工具。

-END-



推薦閱讀



【01】淺談I2C總線,有時(shí)候它也叫 IIC
【02】考一考!嵌入式ARM面試題之IIC總線協(xié)議
【03】嵌入式開發(fā)必備SPI、IIC,高手帶你理解SPI中的極性CPOL和相位CPHA
【04】教你簡(jiǎn)單理解IIC協(xié)議「總結(jié)篇」
【05】嵌入式ARM學(xué)習(xí)總結(jié)--IIC


免責(zé)聲明:整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉