1. 程式人生 > >CAN、I2S、I2C、SPI、SSP匯流排對比

CAN、I2S、I2C、SPI、SSP匯流排對比

一、SPI匯流排說明

  序列外圍裝置介面SPI(serial peripheral interface)匯流排技術是Motorola公司推出的一種同步序列介面,Motorola公司生產的絕大多數MCU(微控制器)都配有SPI硬體介面,如68系列MCU。SPI 用於CPU與各種外圍器件進行全雙工、同步序列通訊。SPI可以同時發出和接收序列資料。它只需四條線就可以完成MCU與各種外圍器件的通訊,這四條線是:序列時鐘線(CSK)、主機輸入/從機輸出資料線(MISO)、主機輸出/從機輸入資料線(MOSI)、低電平有效從機選擇線CS。這些外圍器件可以是簡單的TTL移位暫存器,複雜的LCD顯示驅動器,A/D、D/A轉換子系統或其他的MCU。當SPI工作時,在移位暫存器中的資料逐位從輸出引腳(MOSI)輸出(高位在前),同時從輸入引腳(MISO)接收的資料逐位移到移位暫存器(高位在前)。傳送一個位元組後,從另一個外圍器件接收的位元組資料進入移位暫存器中。主SPI的時鐘訊號(SCK)使傳輸同步。其典型系統

框圖如下圖所示。

  SPI主要特點有: 可以同時發出和接收序列資料;
  可以當作主機或從機工作;
  提供頻率可程式設計時鐘;
  傳送結束中斷標誌;
  寫衝突保護;
  匯流排競爭保護等。
  圖2示出SPI匯流排工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式(實線表示):

  SPI 模組為了和外設進行資料交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果 CPOL=0,串行同步時鐘的空閒狀態為低電平;如果CPOL=1,串行同步時鐘的空閒狀態為高電平。時鐘相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行資料傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)資料被取樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)資料被取樣。SPI主模組和與之通訊的外設音時鐘相位和極性應該一致。SPI匯流排介面時序如圖所示。

  什麼是CAN匯流排?
  ===========================
  CAN 全稱為Controller Area Network,即控制器區域網,由德國Bosch 公司最先提出,是國際上應用最廣泛的現場匯流排之一。CAN 是一種多主方式的序列通訊匯流排,基本設計規範要求有高的位速率、高抗電磁干擾性,而且要能夠檢測出匯流排的任何錯誤。當訊號傳輸距離達10Km 時CAN 仍可提供高達50Kbit/s 的資料傳輸速率。CAN 具有十分優越的特點:
  A、較低的成本與極高的匯流排利用率;
  B、 資料傳輸距離可長達10Km,傳輸速率可高達1Mbit/s;
  C、可靠的錯誤處理和檢錯機制,傳送的資訊遭到破壞後可自動重發;
  D、節點在錯誤嚴重的情況下具有自動退出匯流排的功能;
  E、報文不包含源地址或目標地址僅用標誌符來指示功能資訊和優先順序資訊;
  由於人為、自然、其它外界環境的影響和人們對公交系統的安全可靠性、真實、實時性的追求,使得我們對通訊方式,通訊裝置有了更高的要求,基於CAN匯流排的網路則成為我們最佳的選擇
  -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  CAN匯流排
  現場匯流排是當今自動化領域技術發展的熱點之一,被譽為自動化領域的計算機區域網。它的出現為分散式控制系統實現各節點之間實時、可靠的資料通訊提供了強有力的技術支援。CAN(Controller Area Network)屬於現場匯流排的範疇,它是一種有效支援分散式控制或實時控制的序列

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

  圖(3)
  I2S格式的訊號無論有多少位有效資料,資料的最高位總是出現在LRCK變化(也就是一幀開始)後的第2個SCLK脈衝處。這就使得接收端與傳送端的有效位數可以不同。如果接收端能處理的有效位數少於傳送端,可以放棄資料幀中多餘的低位資料;如果接收端能處理的有效位數多於傳送端,可以自行補足剩餘的位。這種同步機制使得數字音訊裝置的互連更加方便,而且不會造成資料錯位。
  隨著技術的發展,在統一的 I2S介面下,出現了多種不同的資料格式。根據SDATA資料相對於LRCK和SCLK的位置不同,分為左對齊(較少使用)、I2S格式(即飛利浦規定的格式)和右對齊(也叫日本格式、普通格式)。這些不同的格式見圖4和圖5。(圖4 幾種非I2S格式)圖4(圖5 幾種I2S格式)圖5

  為了保證數字音訊訊號的正確傳輸,傳送端和接收端應該採用相同的資料格式和長度。當然,對I2S格式來說資料長度可以不同。
  SSP 匯流排
  SSP 匯流排相容SPI,SSI 和Microwire 匯流排的介面。