[轉]SPI、UART、I2C三種串行總線簡介

SPI(Serial Peripheral Interface,串行外設接口)

SPI是一種高速、全雙工、同步、串行通信總線,3~4線接口,以主從模式工作,收發獨立,可以實現多個SPI設備互相連接。

提供SPI串行時鐘的SPI設備為SPI主機或主設備(Master),其他設備為SPI從機或從設備(Slave)。SPI總線由三條信號線組成,分別是SCLK(串行時鐘)、SDI(串行數據輸入)、SDO(串行數據輸出)。當有多個從設備時,還可以增加一條從設備選擇線,CS是控制芯片是否被選中的,這樣就可以實現在同一總線上多個SPI設備互相連接。

如果用GPIO口模擬SPI總線,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口則視實現的設備類型而定,如果要實現主從設備,則需輸入輸出口,若只實現主設備,則需輸出口即可,若只實現從設備,則只需輸入口即可。
SDI – 主設備數據輸入,從設備數據輸出;
SDO – 主設備數據輸出,從設備數據輸入;
SCLK – 時鐘信號,由主設備產生;
CS – 從設備使能信號,由主設備控制。

SPI 是一種允許一個主設備啟動一個與從設備同步通訊的協議,從而完成數據的交換。SPI是串行協議,也就是說數據是一位一位傳輸的,這就是SCLK時鐘線存在的原因,由SCLK提供時鐘脈沖,SDI、SDO則基于此脈沖完成數據傳輸。數據輸出通過 SDO線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。這樣的傳輸方式有一個優點,與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因為SCLK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數據。也就是說,主設備通過對SCLK時鐘線的控制可以完成對通訊的控制。

SPI還是一個數據交換協議:因為SPI的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。不同SPI設備的實現方式不盡相同,主要是數據改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。

最后,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據。

在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從設備的系統中,每個從設備需要獨立的使能信號,硬件上比I2C系統要稍微復雜一些。SPI接口主要應用在EEPROM、FLASH、實時時鐘、AD轉換器,還有數字信號處理器和數字信號解碼器之間。

UART(Universal Asynchronous Receiver Transmitter,通用異步收發器)

UART總線是兩線、全雙工、異步串口,速度慢。比SPI、I2C這兩種同步串口的結構要復雜很多,一般由波特率產生器(產生的波特率等于傳輸波特率的16倍)、UART接收器、UART發送器組成,硬件上有兩根線,一根用于發送,一根用于接收。數據是異步傳輸的,對雙方的時序要求比較嚴格,通信速度也不是很快,在多機通信上面用的最多。如果用GPIO口模擬UART總線,則需一個輸入口,一個輸出口。

UART是用于控制計算機與串行設備的芯片,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。大多數計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協議也可以用于獲取遠程采集設備的數據。串口通信的概念非常簡單,串口按位(bit)發送和接收字節。盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單并且能夠實現遠距離通信。作為接口的一部分,UART還提供以下功能:
將由計算機內部傳送過來的并行數據轉換為輸出的串行數據流;
將計算機外部來的串行數據轉換為字節,供計算機內部使用并行數據的器件使用;
在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進行奇偶校驗;
在輸出數據流中加入啟停標記,并從接收數據流中刪除啟停標記;
處理由鍵盤或鼠標發出的中斷信號;
可以處理計算機與外部串行設備的同步管理問題;
有一些比較高檔的UART還提供輸入輸出數據的緩沖區,現在比較新的UART是16550,它可以在計算機需要處理數據前在其緩沖區內存儲16字節數據。

I2C(Inter-Integrated Circuit)

I2C總線是雙向、兩線(SCL、SDA)、同步、串行、多主控(multi-master)接口標準,具有競爭檢測和總線仲裁機制,非常適合在器件之間進行近距離、非經常性的數據通信。在I2C的協議體系中,傳輸數據時都會帶上目的設備的設備地址,因此可以實現設備組網。

如果用GPIO口模擬I2C總線,并實現雙向傳輸,則需一個輸入輸出口(SDA),另外還需一個輸出口(SCL)。

I2C總線最主要的優點是其簡單性和有效性。I2C能用于替代標準的并行總線,能連接各種集成電路和功能模塊。只要求兩條總線線路:一條串行數據線SDA 一條串行時鐘線SCL。

I2C是多主控總線,總線上每一個設備都有一個獨一無二的地址,根據設備自己的能力,任何能夠進行發送和接收的設備都能像主控器一樣工作,并控制總線。當然,在任何時間點上只能有一個主控,如果兩個或更多主機同時初始化數據傳輸可以通過沖突檢測和仲裁,防止數據被破壞。
一個主控能夠控制信號的傳輸和時鐘頻率。同步時鐘允許器件通過總線以不同的波特率進行通信。同步時鐘可以作為停止和重新啟動串行口發送的握手方式。

由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數量,降低了互聯成本。總線的長度可高達25英尺,并且能夠以10Kbps的最大傳輸速率支持40個組件。

串行的8 位雙向數據傳輸位速率在標準模式下可達100kbit/s ,快速模式下可達400kbit/s ,高速模式下可達3.4Mbit/s。

片上的濾波器可以濾去總線數據線上的毛刺波保證數據完整。I2C使用上拉電阻,抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠距離通信。連接到相同總線的IC 數量只受到總線的最大電容400pF 限制。

文章轉載自:ivy_reny的博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • 姓名:周崇杰 學號:16040120059 專業:機械設計制造及其自動化 轉載自:http://blog.cs...
    CJbaby閱讀 2,898評論 0 5
  • 總線 計算機的各個功能部件通過總線連接在一起構成完整的計算機系統,總線是多個系統功能部件之間進行數據傳送的公共通路...
    羅蓁蓁閱讀 4,880評論 0 10
  • 1 嵌入式操作系統 為什么要用嵌入式操作系統 普通的單片機編程:程序(軟件)——單片機硬件; 嵌入式操作系統開發:...
    安安zoe閱讀 802評論 0 1
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo閱讀 3,757評論 1 20
  • ???本文主要介紹嵌入式系統的一些基礎知識,希望對各位有幫助。 嵌入式系統基礎 1、嵌入式系統的定義 (1)定義:...
    OpenJetson閱讀 3,340評論 0 13