IIC vs SPI,小協(xié)議隱含大智慧

發(fā)布時(shí)間:2018-12-25 14:59    發(fā)布者:小編
關(guān)鍵詞: IIC , SPI
IIC vs SPI

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

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

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

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

SPI

對于有經(jīng)驗的數字電子工程師來(lái)說(shuō),用SPI互聯(lián)兩支數字設備是相當直觀(guān)的。SPI是種四根信號線(xiàn)協(xié)議(如圖):



SCLK: Serial Clock (output from master);
MOSI; SIMO: Master Output, Slave Input(output from master);
MISO; SOMI: Master Input, Slave Output(output from slave);
SS: Slave Select (active low, outputfrom master).

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



SPI有四種操作模式——模式0、模式1、模式2和模式3,它們的區別是定義了在時(shí)鐘脈沖的哪條邊沿轉換(toggles)輸出信號,哪條邊沿采樣輸入信號,還有時(shí)鐘脈沖的穩定電平值(就是時(shí)鐘信號無(wú)效時(shí)是高還是低)。每種模式由一對參數刻畫(huà),它們稱(chēng)為時(shí)鐘極(clock polarity)CPOL與時(shí)鐘期(clock phase)CPHA。



[主從設備]必須使用相同的工作參數——SCLK、CPOL 和 CPHA,才能正常工作。如果有多個(gè)[從設備],并且它們使用了不同的工作參數,那么[主設備]必須在讀寫(xiě)不同[從設備]間重新配置這些參數。以上SPI總線(xiàn)協(xié)議的主要內容。SPI不規定最大傳輸速率,沒(méi)有地址方案;SPI也沒(méi)規定通信應答機制,沒(méi)有規定流控制規則。事實(shí)上,SPI[主設備]甚至并不知道指定的[從設備]是否存在。這些通信控制都得通過(guò)SPI協(xié)議以外自行實(shí)現。例如,要用SPI連接一支[命令-響應控制型]解碼芯片,則必須在SPI的基礎上實(shí)現更高級的通信協(xié)議。SPI并不關(guān)心物理接口的電氣特性,例如信號的標準電壓。在最初,大多數SPI應用都是使用間斷性時(shí)鐘脈沖和以字節為單位傳輸數據的,但現在有很多變種實(shí)現了連續性時(shí)間脈沖和任意長(cháng)度的數據幀。

IIC

與SPI的單主設備不同,IIC 是多主設備的總線(xiàn),IIC沒(méi)有物理的芯片選擇信號線(xiàn),沒(méi)有仲裁邏輯電路,只使用兩條信號線(xiàn)—— ‘serial data’ (SDA) 和 ‘serial clock’ (SCL)。IIC協(xié)議規定:

第一,每一支IIC設備都有一個(gè)唯一的七位設備地址;

第二,數據幀大小為8位的字節;

第三,數據(幀)中的某些數據位用于控制通信的開(kāi)始、停止、方向(讀寫(xiě))和應答機制。

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

物理實(shí)現上,IIC 總線(xiàn)由兩根信號線(xiàn)和一根地線(xiàn)組成。兩根信號線(xiàn)都是雙向傳輸的,參考下圖。IIC協(xié)議標準規定發(fā)起通信的設備稱(chēng)為主設備,主設備發(fā)起一次通信后,其它設備均為從設備。



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

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



基于IIC總線(xiàn)的物理結構,總線(xiàn)上的START和STOP信號必定是唯一的。另外,IIC總線(xiàn)標準規定SDA線(xiàn)的數據轉換必須在SCL線(xiàn)的低電平期,在SCL線(xiàn)的高電平期,SDA線(xiàn)的上數據是穩定的。



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

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

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

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

10位設備地址

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

10位的地址方案對 IIC協(xié)議的影響有兩點(diǎn):

第一,地址幀為兩個(gè)字節長(cháng),原來(lái)的是一個(gè)字節;

第二,第一個(gè)字節前五位最高有效位用作10位地址標識,約定是“11110”。



除了10位地址標識,標準還預留了一些地址碼用作其它用途,如下表:



時(shí)鐘拉伸

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


高速模式

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



IIC vs SPI: 哪位是贏(yíng)家?

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

第一,總線(xiàn)拓撲結構/信號路由/硬件資源耗費

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

第二,數據吞吐/傳輸速度

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

第三,優(yōu)雅性

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

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

小結

在數字通信協(xié)議簇中,IIC和SPI常稱(chēng)為“小”協(xié)議,相對Ethernet, USB, SATA, PCI-Express等傳輸速度達數百上千兆字節每秒的總線(xiàn)。但是,我們不能忘記的是各種總線(xiàn)的用途是什么!按蟆眳f(xié)議是用于系統外的整個(gè)系統之間通信的,“小”協(xié)議是用于系統內各芯片間的通信,沒(méi)有跡象表明“大”協(xié)議有必要取代“小”協(xié)議。IIC和SPI的存在和流行體現了“夠用就好”的哲學(xué);貞氖,IIC和SPI如此流行,它是任何一位嵌入式工程師必備的工具。
本文地址:http://selenalain.com/thread-558934-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页