SPI--(Serial Peripheral Interface:串行外設接口)串行外圍設備接口,是Motorola公司推出的一種同步串行通訊方式,是一種三線同步總線,因其硬件功能很強,與SPI有關的軟件就相當簡單,使CPU有更多的時間處理其他事務。
I2C--(INTER IC BUS:意為IC之間總線)串行總線的縮寫,是PHILIPS公司推出的芯片間串行傳輸總線。它以1根串行數據線(SDA)和1根串行時鐘線(SCL)實現了雙工的同步數據傳輸。具有接口線少,控制方式簡化,器件封裝形式小,通信速率較高等優點。在主從通信中,可以有多個I2C總線器件同時接到I2C總線上,通過地址來識別通信對象。
能用于替代標準的并行總線,能連接的各種集成電路和功能模塊。I2C是多主控總線,所以任何一個設備都能像主控器一樣工作,并控制總線??偩€上每一個設備都有一個獨一無二的地址,根據設備它們自己的能力,它們可以作為發射器或接收器工作。多路微控制器能在同一個I2C總線上共存。
最主要的優點是其簡單性和有效性。它支持多主控(multimastering),其中任何能夠進行發送和接收的設備都可以成為主總線。一個主控能夠控制信號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。
UART--(Universal Asynchronous Receiver Transmitter:通用異步收發器)單端,遠距離傳輸。大多數計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協議也可以用于獲取遠程采集設備的數據。串口通信的概念非常簡單,串口按位(bit)發送和接收字節。盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單并且能夠實現遠距離通信。比如IEEE488定義并行通行狀態時,規定設備線總常不得超過20米,并且任意兩個設備間的長度不得超過2米;而對于串口而言,長度可達1200米。
-----------------------------------------------------------------------------------------------------------------------------------
區別在電氣信號線上:
SPI總線由三條信號線組成:串行時鐘(SCLK)、串行數據輸出(SDO)、串行數據輸入(SDI)。SPI總線可以實現多個SPI設備互相連接。提供SPI串行時鐘的SPI設備為SPI主機或主設備(Master),其他設備為SPI從機或從設備(Slave)。主從設備間可以實現全雙工通信,當有多個從設備時,還可以增加一條從設備選擇線。
如果用通用IO口模擬SPI總線,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口則視實現的設備類型而定,如果要實現主從設備,則需輸入輸出口,若只實現主設備,則需輸出口即可,若只實現從設備,則只需輸入口即可。
I2C總線是雙向、兩線(SCL、SDA)、串行、多主控(multi-master)接口標準,具有總線仲裁機制,非常適合在器件之間進行近距離、非經常性的數據通信。在它的協議體系中,傳輸數據時都會帶上目的設備的設備地址,因此可以實現設備組網。
如果用通用IO口模擬I2C總線,并實現雙向傳輸,則需一個輸入輸出口(SDA),另外還需一個輸出口(SCL)。(注:I2C資料了解得比較少,這里的描述可能很不完備)
UART總線是異步串口,因此一般比前兩種同步串口的結構要復雜很多,一般由波特率產生器(產生的波特率等于傳輸波特率的16倍)、UART接收器、UART發送器組成,硬件上由兩根線,一根用于發送,一根用于接收。
顯然,如果用通用IO口模擬UART總線,則需一個輸入口,一個輸出口。
從以上很明顯可以看出,SPI和UART可以實現全雙工,但I2C不行;
-----------------------------------------------------------------------------------------------------------------------------------
看看牛人們的意見吧!
A:I2C線更少,我覺得比UART、SPI更為強大,但是技術上也更加麻煩些,因為I2C需要有雙向IO的支持,而且使用上拉電阻,我覺得抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠距離通信。SPI實現要簡單一些,UART需要固定的波特率,就是說兩位數據的間隔要相等,而SPI則無所謂,因為它是有時鐘的協議。
B:I2C的速度比SPI慢一點,協議比SPI復雜一點,但是連線也比標準的SPI要少。
-----------------------------------------------------------------------------------------------------------------------------------
SPI 是一種允許一個主設備啟動一個與從設備的同步通訊的協議,從而完成數據的交換。也就是SPI是一種規定好的通訊方式。這種通信方式的優點是占用端口較少,一般4根就夠基本通訊了。同時傳輸速度也很高。一般來說要求主設備要有SPI控制器(但可用模擬方式),就可以與基于SPI的芯片通訊了。
SPI 的通信原理很簡單,它需要至少4根線,事實上3根也可以。也是所有基于SPI的設備共有的,它們是SDI(數據輸入),SDO(數據輸出),SCK(時 鐘),CS(片選)。其中CS是控制芯片是否被選中的,也就是說只有片選信號為預先規定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許 在同一總線上連接多個SPI設備成為可能。
接下來就負責通訊的3根線了。通訊是通過數據交換完成的,這里先要知道SPI是串行通訊協議,也就是說數據是一位一位的傳輸的。這就是SCK時鐘線存在的原 因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數據傳輸。數據輸出通過SDO線,數據在時鐘上沿或下沿時改變,在緊接著的下沿或上沿被讀取。 完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。
要注意的是,SCK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于SPI的設備中,至少有一個主控設備。
這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數據。也就是說,主設備通過對SCK時鐘線的控制可以完成對通訊的控制。
SPI還是一個數據交換協議:因為SPI的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。
不同的SPI設備的實現方式不盡相同,主要是數據改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。
-----------------------------------------------------------------------------------------------------------------------------------
I2C
只要求兩條總線線路:一條串行數據線SDA 一條串行時鐘線SCL
每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機從機關系軟件設定地址主機可以作為主機發送器或主機接收器
它是一個真正的多主機總線如果兩個或更多主機同時初始化數據傳輸可以通過沖突檢測和仲裁,防止數據被破壞
串行的8 位雙向數據傳輸位速率在標準模式下可達100kbit/s 快速模式下可達400kbit/s 高速模式下可達3.4Mbit/s
片上的濾波器可以濾去總線數據線上的毛刺波保證數據完整
連接到相同總線的IC 數量只受到總線的最大電容400pF 限制
-----------------------------------------------------------------------------------------------------------------------------------
UART
UART總線是異步串口,因此一般比前兩種同步串口的結構要復雜很多,一般由波特率產生器(產生的波特率等于傳輸波特率的16倍)、UART接收器、UART發送器組成,硬件上由兩根線,一根用于發送,一根用于接收。
顯然,如果用通用IO口模擬UART總線,則需一個輸入口,一個輸出口。
UART常用于控制計算機與串行設備的芯片。有一點要注意的是,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。
明顯可以看出,SPI和UART可以實現全雙工,但I2C不行。
-----------------------------------------------------------------------------------------------------------------------------------
什么是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、DeviceNet、NMEA 2000等。
什么是CAN總線?
CAN意為Controller Area Network的縮寫,意為控制區域網絡。是國際上流行的現場總線中的一種。是一種特別適合于組建互連的設備網絡系統或子系統。
2. CAN總線特點?
l CAN是到目前為止為數不多的有國際標準的現場總線
l CAN通訊距離最大是10公里(設速率為5Kbps),或最大通信速率為1Mbps(設通信距離為40米)。
CAN總線上的節點數可達110個。通信介質可在雙絞線,同軸電纜,光纖中選擇。
CAN采用非破壞性的總線仲裁技術,當多個節點同時發送數據時,優先級低的節點會主動退出發送,高優先級的節點可繼續發送,節省總線仲裁時間。
CAN是多主方式工作,網上的任一節點均可在任意時刻主動地向網絡上其他節點發送信息。
CAN采用報文識別符識別網絡上的節點,從而把節點分成不同的優先級,高優先級的節點享有傳送報文的優先權。
報文是短幀結構,短的傳送時間使其受干擾概率低,CAN有很好的效驗機制,這些都保證了CAN通信的可靠性。
-----------------------------------------------------------------------------------------------------------------------------------
SPI通常有SCK時鐘,STB片選,DATA數據信號三個信號。 I2C通常有 SDA數據和SCL時鐘兩個信號。
SPI:Motorola推出的同步串行通訊方式,三線同步總線,硬件強大,軟件相對簡單,cpu有更多時間處理其他事務。SCK時鐘,STB片選,DATA數據信號三信號。多了一個片選信號
I2C:PHilips推出的串行總線,一根SDA串行數據線,一根串行時鐘線SCL。按照地址來計算的
UART
Universival Asychronous Receiver/Transmitter(通用異步串行口),UART是一種較為通用的數據傳輸的方法(即Start Bit+Data+Check+StopBit),而COM口中Rx、Tx的數據格式即為UART。UART和RS232是兩種異步數據傳輸標準.計算機中的COM1和COM2都是RS232串行通信標準接口。當Uart接口連到PC機上時,需要接RS232電平轉換電路。
UART使用發送數據線TXD和接收數據線RXD來傳送數據,接收和發送可以單獨進行也可以同時進行。它傳送數據的格式有嚴格的規定,每個數據以相同的位串形式傳送,每個串行數據由起始位,數據位,奇偶校驗位和停止位組成。從起始位到停止位結束的時間稱為一幀(frame),即一個字符的完整通信格式。
SPI
Serial Perheral Interface,是一種全雙工同步串行接口標準,串行通信的雙方用四根線進行通信,這四根連線分別是:片選信號,I/O時鐘,串行輸入,串行輸出,這種接口的特點是快速,高效,并且操作起來比I2C要簡單一些,接線也比較簡單,TLC2543提供SPI接口。
I2C
Inter-Integrated Circuit(集成電路之間), I2C總線是一種由PHILIPS公司開發的兩線式雙向串行總線,用于連接微控制器及其外圍設備。I2C總線產生于在80年代,最初為音頻和視頻設備開發,如今主要在服務器管理中使用,其中包括單個組件狀態的通信。例如管理員可對各個組件進行查詢,以管理系統的配置或掌握組件的功能狀態,如電源和系統風扇??呻S時監控內存、硬盤、網絡、系統溫度等多個參數,增加了系統的安全性,方便了管理。I2C屬于兩線式串行總線,它由數據線SDA和時鐘SCL構成的串行總線,可發送和接收數據。在CPU與被控IC之間、IC與IC之間進行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址,在信息的傳輸過程中,IC2總線上并接的每一模塊電路既是主控器(或被控器),又是發送器(或接收器),這取決于它所要完成的功能。CPU發出的控制信號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調整的類別(如對比度、亮度等)及需要調整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨立,互不相關。
CAN
Controller Area Network(區域網絡控制器),CAN 全稱為Controller Area Network,即控制器局域網,由德國Bosch 公司最先提出,是國際上應用最廣泛的現場總線之一。CAN 是一種多主方式的串行通訊總線,基本設計規范要求有高的位速率、高抗電磁干擾性,而且要能夠檢測出總線的任何錯誤。當信號傳輸距離達10Km 時CAN 仍可提供高達50Kbit/s 的數據傳輸速率?,F場總線是當今自動化領域技術發展的熱點之一,被譽為自動化領域的計算機局域網。它的出現為分布式控制系統實現各節點之間實時、可靠的數據通信提供了強有力的技術支持。CAN屬于現場總線的范疇,它是一種有效支持分布式控制或實時控制的串行通信網絡。較之目前許多RS-485基于R線構建的分布式控制系統而言, 基于CAN總線的分布式控制系統具有明顯的優越性。
------------------------------------------------------------------------------------------------------------------------------------
SPI來源于MOTOROLA、I2C來源于PHILIPS.
SPI(Serial PeripheralInterface--串行外設接口)總線系統是一種同步串行外設接口,它可以使 MCU與各種外圍設備以串行方式進行通信以 交換信息。外圍設置FLASH、RAM、 網絡控制器、LCD顯示驅動器、A/D轉換器和MCU等。SPI總線系統可直接與各個廠家生產的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI和低電平有效的從機選擇線CS(有的SPI接口芯片帶有中斷信號線INT或INT、有的SPI接口芯片沒有主機輸出/從機輸入數據線MOSI)。
I2C的數據輸入輸出用的是一根線,SPI則分為dataIN和dataOUT。由于這個原因,采用I2C時CPU的端口占用少,SPI多一根。但是由于I2C的數據線是雙向的,所以隔離比較復雜,SPI則比較容易。所以系統內部通信可用I2C,若要與外部通信則最好用SPI帶隔離(可以提高抗干擾能力)。但是I2C和SPI都不適合長距離傳輸。長距離時就要用485了。
I2C和SPI,UART的區別(轉) - 喧鬧的寂寞 - 喧鬧的寂寞
SPI最高速度達5M位/秒.
I2C(Inter-IntegratedCircuit)總線是一種由PHILIPS公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。I2C總線產生于在80年代,最初為音頻和視頻設備開發,如今主要在服務器管理中使用,其中包括單個組件狀態的通信。例如管理員可對各個組件進行查詢,以管理系統的配置或掌握組件的功能狀態,如電源和系統風扇。可隨時監控內存、硬盤、網絡、系統溫度等多個參數,增加了系統的安全性,方便了管理。
I2C速度在10--400K,數據的傳輸速度可以由主機的時鐘速度決定,但如果從機不愿意,也可以以自己的方式----拉低SCL來阻止主機時鐘速度過快。當然,從機能阻止主機的前提是主機要檢測總線SCL線電平后才決定是否發、什么時候發下一個時鐘脈沖的。其中,在硬件上必須使用“線與”才能解決從機拉低時能阻止主機時鐘速度的功能。