新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > CAN、I2S、I2C、SPI、SSP總線對比

CAN、I2S、I2C、SPI、SSP總線對比

作者: 時間:2016-12-12 來源:網(wǎng)絡(luò) 收藏
  一、SPI總線說明

  串行外圍設(shè)備接口SPI(serial peripheral interface)總線技術(shù)是Motorola公司推出的一種同步串行接口,Motorola公司生產(chǎn)的絕大多數(shù)MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI 用于CPU與各種外圍器件進行全雙工、同步串行通訊。SPI可以同時發(fā)出和接收串行數(shù)據(jù)。它只需四條線就可以完成MCU與各種外圍器件的通訊,這四條線是:串行時鐘線(CSK)、主機輸入/從機輸出數(shù)據(jù)線(MISO)、主機輸出/從機輸入數(shù)據(jù)線(MOSI)、低電平有效從機選擇線CS。這些外圍器件可以是簡單的TTL移位寄存器,復(fù)雜的LCD顯示驅(qū)動器,A/D、D/A轉(zhuǎn)換子系統(tǒng)或其他的MCU。當(dāng)SPI工作時,在移位寄存器中的數(shù)據(jù)逐位從輸出引腳(MOSI)輸出(高位在前),同時從輸入引腳(MISO)接收的數(shù)據(jù)逐位移到移位寄存器(高位在前)。發(fā)送一個字節(jié)后,從另一個外圍器件接收的字節(jié)數(shù)據(jù)進入移位寄存器中。主SPI的時鐘信號(SCK)使傳輸同步。其典型系統(tǒng)框圖如下圖所示。

本文引用地址:http://butianyuan.cn/article/201612/328828.htm

  SPI主要特點有: 可以同時發(fā)出和接收串行數(shù)據(jù);
  可以當(dāng)作主機或從機工作;
  提供頻率可編程時鐘;
  發(fā)送結(jié)束中斷標志;
  寫沖突保護;
  總線競爭保護等。
  圖2示出SPI總線工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式(實線表示):

  SPI 模塊為了和外設(shè)進行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果 CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)音時鐘相位和極性應(yīng)該一致。SPI總線接口時序如圖所示。

  什么是CAN總線?
  ===========================
  CAN 全稱為Controller Area Network,即控制器局域網(wǎng),由德國Bosch 公司最先提出,是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。CAN 是一種多主方式的串行通訊總線,基本設(shè)計規(guī)范要求有高的位速率、高抗電磁干擾性,而且要能夠檢測出總線的任何錯誤。當(dāng)信號傳輸距離達10Km 時CAN 仍可提供高達50Kbit/s 的數(shù)據(jù)傳輸速率。CAN 具有十分優(yōu)越的特點:
  A、較低的成本與極高的總線利用率;
  B、 數(shù)據(jù)傳輸距離可長達10Km,傳輸速率可高達1Mbit/s;
  C、可靠的錯誤處理和檢錯機制,發(fā)送的信息遭到破壞后可自動重發(fā);
  D、節(jié)點在錯誤嚴重的情況下具有自動退出總線的功能;
  E、報文不包含源地址或目標地址僅用標志符來指示功能信息和優(yōu)先級信息;
  由于人為、自然、其它外界環(huán)境的影響和人們對公交系統(tǒng)的安全可靠性、真實、實時性的追求,使得我們對通信方式,通信設(shè)備有了更高的要求,基于CAN總線的網(wǎng)絡(luò)則成為我們最佳的選擇
  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  CAN總線
  現(xiàn)場總線是當(dāng)今自動化領(lǐng)域技術(shù)發(fā)展的熱點之一,被譽為自動化領(lǐng)域的計算機局域網(wǎng)。它的出現(xiàn)為分布式控制系統(tǒng)實現(xiàn)各節(jié)點之間實時、可靠的數(shù)據(jù)通信提供了強有力的技術(shù)支持。CAN(Controller Area Network)屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。較之目前許多RS-485基于R線構(gòu)建的分布式控制系統(tǒng)而言, 基于CAN總線的分布式控制系統(tǒng)在以下方面具有明顯的優(yōu)越性:
  首先,CAN控制器工作于多主方式,網(wǎng)絡(luò)中的各節(jié)點都可根據(jù)總線訪問優(yōu)先權(quán)(取決于報文標識符)采用無損結(jié)構(gòu)的逐位仲裁的方式競爭向總線發(fā)送數(shù)據(jù),且CAN協(xié)議廢除了站地址編碼,而代之以對通信數(shù)據(jù)進行編碼,這可使不同的節(jié)點同時接收到相同的數(shù)據(jù),這些特點使得CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點之間的數(shù)據(jù)通信實時性強,并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。而利用RS-485只能構(gòu)成主從式結(jié)構(gòu)系統(tǒng),通信方式也只能以主站輪詢的方式進行,系統(tǒng)的實時性、可靠性較差;
  其次,CAN總線通過CAN控制器接口芯片82C250的兩個輸出端CANH和CANL與物理總線相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。這就保證不會出現(xiàn)象在RS-485網(wǎng)絡(luò)中,當(dāng)系統(tǒng)有錯誤,出現(xiàn)多節(jié)點同時向總線發(fā)送數(shù)據(jù)時,導(dǎo)致總線呈現(xiàn)短路,從而損壞某些節(jié)點的現(xiàn)象。而且CAN節(jié)點在錯誤嚴重的情況下具有自動關(guān)閉輸出功能,以使總線上其他節(jié)點的操作不受影響,從而保證不會出現(xiàn)象在網(wǎng)絡(luò)中,因個別節(jié)點出現(xiàn)問題,使得總線處于“死鎖”狀態(tài)。
  而且,CAN具有的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來實現(xiàn),從而大大降低系統(tǒng)開發(fā)難度,縮短了開發(fā)周期,這些是只僅僅有電氣協(xié)議的RS-485所無法比擬的。另外,與其它現(xiàn)場總線比較而言,CAN總線是具有通信速率高、容易實現(xiàn)、且性價比高等諸多特點的一種已形成國際標準的現(xiàn)場總線。這些也是目前 CAN總線應(yīng)用于眾多領(lǐng)域,具有強勁的市場競爭力的重要原因。
  CAN (Controller Area Network)即控制器局域網(wǎng)絡(luò),屬于工業(yè)現(xiàn)場總線的范疇。與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性。由于其良好的性能及獨特的設(shè)計,CAN總線越來越受到人們的重視。它在汽車領(lǐng)域上的應(yīng)用是最廣泛的,世界上一些著名的汽車制造廠商,如BENZ(奔馳)、BMW(寶馬)、PORSCHE(保時捷)、ROLLS-ROYCE(勞斯萊斯)和JAGUAR(美洲豹)等都采用了CAN總線來實現(xiàn)汽車內(nèi)部控制系統(tǒng)與各檢測和執(zhí)行機構(gòu)間的數(shù)據(jù)通信。同時,由于CAN總線本身的特點,其應(yīng)用范圍目前已不再局限于汽車行業(yè),而向自動控制、航空航天、航海、過程工業(yè)、機械工業(yè)、紡織機械、農(nóng)用機械、機器人、數(shù)控機床、醫(yī)療器械及傳感器等領(lǐng)域發(fā)展。CAN已經(jīng)形成國際標準,并已被公認為幾種最有前途的現(xiàn)場總線之一。其典型的應(yīng)用協(xié)議有: SAE j1939/ISO11783、canopen、CANaerospace、devicenet、NMEA 2000等。
  什么是CAN總線?
  CAN意為Controller Area Network的縮寫,意為控制區(qū)域網(wǎng)絡(luò)。是國際上流行的現(xiàn)場總線中的一種。是一種特別適合于組建互連的設(shè)備網(wǎng)絡(luò)系統(tǒng)或子系統(tǒng)。
  2. CAN總線特點?
  l CAN是到目前為止為數(shù)不多的有國際標準的現(xiàn)場總線
  l CAN通訊距離最大是10公里(設(shè)速率為5Kbps),或最大通信速率為1Mbps(設(shè)通信距離為40米)。
  CAN總線上的節(jié)點數(shù)可達110個。通信介質(zhì)可在雙絞線,同軸電纜,光纖中選擇。
  CAN采用非破壞性的總線仲裁技術(shù),當(dāng)多個節(jié)點同時發(fā)送數(shù)據(jù)時,優(yōu)先級低的節(jié)點會主動退出發(fā)送,高優(yōu)先級的節(jié)點可繼續(xù)發(fā)送,節(jié)省總線仲裁時間。
  CAN是多主方式工作,網(wǎng)上的任一節(jié)點均可在任意時刻主動地向網(wǎng)絡(luò)上其他節(jié)點發(fā)送信息。
  CAN采用報文識別符識別網(wǎng)絡(luò)上的節(jié)點,從而把節(jié)點分成不同的優(yōu)先級,高優(yōu)先級的節(jié)點享有傳送報文的優(yōu)先權(quán)。
  報文是短幀結(jié)構(gòu),短的傳送時間使其受干擾概率低,CAN有很好的效驗機制,這些都保證了CAN通信的可靠性。
  3. CAN總線應(yīng)用領(lǐng)域
  CAN總線最初是德國BOSCH為汽車行業(yè)的監(jiān)測,控制而設(shè)計的。現(xiàn)已應(yīng)用到鐵路、交通、國防、工程、工業(yè)機械、紡織、農(nóng)用機械、數(shù)控、醫(yī)療器械機器人、樓宇、安防等方面。
  I2C(Inter-Integrated Circuit)總線
  I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個組件狀態(tài)的通信。例如管理員可對各個組件進行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇。可隨時監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個參數(shù),增加了系統(tǒng)的安全性,方便了管理。
  1 I2C總線特點
  I2C總線最主要的優(yōu)點是其簡單性和有效性。由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本??偩€的長度可高達25英尺,并且能夠以10Kbps的最大傳輸速率支持40個組件。I2C總線的另一個優(yōu)點是,它支持多主控(multimastering), 其中任何能夠進行發(fā)送和接收的設(shè)備都可以成為主總線。一個主控能夠控制信號的傳輸和時鐘頻率。當(dāng)然,在任何時間點上只能有一個主控。
  2 I2C總線工作原理
  2.1 總線的構(gòu)成及信號類型
  I2C總線是由數(shù)據(jù)線SDA和時鐘SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間進行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址,在信息的傳輸過程中,I2C總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調(diào)整的類別(如對比度、亮度等)及需要調(diào)整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨立,互不相關(guān)。
  I2C總線在傳送數(shù)據(jù)過程中共有三種類型信號, 它們分別是:開始信號、結(jié)束信號和應(yīng)答信號。
  開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。
  結(jié)束信號:SCL為低電平時,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。
  應(yīng)答信號:接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應(yīng)答信號,CPU接收到應(yīng)答信號后,根據(jù)實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。
  目前有很多半導(dǎo)體集成電路上都集成了I2C接口。帶有I2C接口的單片機有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲器、監(jiān)控芯片等也提供I2C接口。
  3 總線基本操作
  I2C規(guī)程運用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。 總線必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來表示起始和停止條件。
  3.1 控制字節(jié)
  在起始條件之后,必須是器件的控制字節(jié),其中高四位為器件類型識別符(不同的芯片類型有不同的定義,EEPROM一般應(yīng)為1010),接著三位為片選,最后一位為讀寫位,當(dāng)為1時為讀操作,為0時為寫操作。
  3.2 寫操作
  寫操作分為字節(jié)寫和頁面寫兩種操作,對于頁面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同。
  3.3 讀操作
  讀操作有三種基本操作:當(dāng)前地址讀、隨機讀和順序讀。圖4給出的是順序讀的時序圖。應(yīng)當(dāng)注意的是:最后一個讀操作的第9個時鐘周期不是“不關(guān)心”。為了結(jié)束讀操作,主機必須在第9個周期間發(fā)出停止條件或者在第9個時鐘周期內(nèi)保持SDA為高電平、然后發(fā)出停止條件。
  在I2C總線的應(yīng)用中應(yīng)注意的事項總結(jié)為以下幾點 :
  1) 嚴格按照時序圖的要求進行操作,
  2) 若與口線上帶內(nèi)部上拉電阻的單片機接口連接,可以不外加上拉電阻。
  3) 程序中為配合相應(yīng)的傳輸速率,在對口線操作的指令后可用NOP指令加一定的延時。
  4) 為了減少意外的干擾信號將EEPROM內(nèi)的數(shù)據(jù)改寫可用外部寫保護引腳(如果有),或者在EEPROM內(nèi)部沒有用的空間寫入標志字,每次上電時或復(fù)位時做一次檢測,判斷EEPROM是否被意外改寫。
  添加:I2C 總線
  在現(xiàn)代電子系統(tǒng)中,有為數(shù)眾多的IC 需要進行相互之間以及與外界的通信。為了提供
  硬件的效率和簡化電路的設(shè)計,PHILIPS 開發(fā)了一種用于內(nèi)部IC 控制的簡單的雙向兩線串
  行總線I2C(inter IC 總線)。I2C 總線支持任何一種IC 制造工藝,并且PHILIPS 和其他廠商
  提供了種類非常豐富的I2C 兼容芯片。作為一個專利的控制總線,I2C 已經(jīng)成為世界性的工
  業(yè)標準。
  每個I2C 器件都有一個唯一的地址,而且可以是單接收的器件(例如:LCD 驅(qū)動
  器)或者可以接收也可以發(fā)送的器件(例如:存儲器)。發(fā)送器或接收器可以在主模式
  或從模式下操作,這取決于芯片是否必須啟動數(shù)據(jù)的傳輸還是僅僅被尋址。I2C 是一個
  多主總線,即它可以由多個連接的器件控制。
  早期的I2C 總線數(shù)據(jù)傳輸速率最高為100Kbits/s,采用7 位尋址。但是由于數(shù)據(jù)傳
  輸速率和應(yīng)用功能的迅速增加,I2C 總線也增強為快速模式(400Kbits/s)和10 位尋址
  以滿足更高速度和更大尋址空間的需求。
  I2C 總線始終和先進技術(shù)保持同步,但仍然保持其向下兼容性。并且最近還增加了
  高速模式,其速度可達3.4Mbits/s。它使得I2C 總線能夠支持現(xiàn)有以及將來的高速串行
  傳輸應(yīng)用,例如EEPROM 和Flash 存儲器。
  I2S總線
  I2S有3個主要信號:1.串行時鐘SCLK,也叫位時鐘(BCLK),即對應(yīng)數(shù)字音頻的每一位數(shù)據(jù),SCLK都有1個脈沖。SCLK的頻率=2×采樣頻率×采樣位數(shù) 2. 幀時鐘LRCK,用于切換左右聲道的數(shù)據(jù)。LRCK為“1”表示正在傳輸?shù)氖亲舐暤赖臄?shù)據(jù),為“0”則表示正在傳輸?shù)氖怯衣暤赖臄?shù)據(jù)。LRCK的頻率等于采樣頻率。3.串行數(shù)據(jù)SDATA,就是用二進制補碼表示的音頻數(shù)據(jù)。I2S(Inter-IC Sound Bus)是飛利浦公司為數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而制定的一種總線標準。在飛利浦公司的I2S標準中,既規(guī)定了硬件接口規(guī)范,也規(guī)定了數(shù)字音頻數(shù)據(jù)的格式。I2S有3個主要信號:1.串行時鐘SCLK,也叫位時鐘(BCLK),即對應(yīng)數(shù)字音頻的每一位數(shù)據(jù),SCLK都有1個脈沖。SCLK的頻率=2×采樣頻率×采樣位數(shù) 2. 幀時鐘LRCK,用于切換左右聲道的數(shù)據(jù)。LRCK為“1”表示正在傳輸?shù)氖亲舐暤赖臄?shù)據(jù),為“0”則表示正在傳輸?shù)氖怯衣暤赖臄?shù)據(jù)。LRCK的頻率等于采樣頻率。3.串行數(shù)據(jù)SDATA,就是用二進制補碼表示的音頻數(shù)據(jù)。
  有時為了使系統(tǒng)間能夠更好地同步,還需要另外傳輸一個信號MCLK,稱為主時鐘,也叫系統(tǒng)時鐘(Sys Clock),是采樣頻率的256倍或384倍。一個典型的I2S信號見圖3。(圖3 I2S信號)圖3

  圖(3)
  I2S格式的信號無論有多少位有效數(shù)據(jù),數(shù)據(jù)的最高位總是出現(xiàn)在LRCK變化(也就是一幀開始)后的第2個SCLK脈沖處。這就使得接收端與發(fā)送端的有效位數(shù)可以不同。如果接收端能處理的有效位數(shù)少于發(fā)送端,可以放棄數(shù)據(jù)幀中多余的低位數(shù)據(jù);如果接收端能處理的有效位數(shù)多于發(fā)送端,可以自行補足剩余的位。這種同步機制使得數(shù)字音頻設(shè)備的互連更加方便,而且不會造成數(shù)據(jù)錯位。
  隨著技術(shù)的發(fā)展,在統(tǒng)一的 I2S接口下,出現(xiàn)了多種不同的數(shù)據(jù)格式。根據(jù)SDATA數(shù)據(jù)相對于LRCK和SCLK的位置不同,分為左對齊(較少使用)、I2S格式(即飛利浦規(guī)定的格式)和右對齊(也叫日本格式、普通格式)。這些不同的格式見圖4和圖5。(圖4 幾種非I2S格式)圖4(圖5 幾種I2S格式)圖5

  為了保證數(shù)字音頻信號的正確傳輸,發(fā)送端和接收端應(yīng)該采用相同的數(shù)據(jù)格式和長度。當(dāng)然,對I2S格式來說數(shù)據(jù)長度可以不同。
  SSP 總線
  SSP 總線兼容SPI,SSI 和Microwire 總線的接口。



關(guān)鍵詞: CANI2SI2CSPISSP總線對

評論


技術(shù)專區(qū)

關(guān)閉