SPI 總線
SPI(Serial Peripheral Interface,串行外設接口)是一種高速、全雙工、同步、串行通信總線,3~4線接口,以主從模式工作,收發(fā)獨立,可以實現(xiàn)多個SPI設備互相連接。
提供SPI串行時鐘的SPI設備為SPI主機或主設備(Master),其他設備為SPI從機或從設備(Slave)。
SPI總線由三條信號線組成,分別是SCLK(串行時鐘)、SDI(串行數(shù)據(jù)輸入)、SDO(串行數(shù)據(jù)輸出)。當有多個從設備時,還可以增加一條從設備選擇線,CS是控制芯片是否被選中的,這樣就可以實現(xiàn)在同一總線上多個SPI設備互相連接。
如果用GPIO口模擬SPI總線,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口則視實現(xiàn)的設備類型而定,如果要實現(xiàn)主從設備,則需輸入輸出口,若只實現(xiàn)主設備,則需輸出口即可,若只實現(xiàn)從設備,則只需輸入口即可。
SDI – 主設備數(shù)據(jù)輸入,從設備數(shù)據(jù)輸出;
SDO – 主設備數(shù)據(jù)輸出,從設備數(shù)據(jù)輸入;
SCLK – 時鐘信號,由主設備產(chǎn)生;
CS – 從設備使能信號,由主設備控制。
SPI 是一種允許一個主設備啟動一個與從設備同步通訊的協(xié)議,從而完成數(shù)據(jù)的交換。SPI是串行協(xié)議,也就是說數(shù)據(jù)是一位一位傳輸?shù)?,這就是SCLK時鐘線存在的原因,由SCLK提供時鐘脈沖,SDI、SDO則基于此脈沖完成數(shù)據(jù)傳輸。
數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。
這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸。
這樣的傳輸方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為SCLK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數(shù)據(jù)。也就是說,主設備通過對SCLK時鐘線的控制可以完成對通訊的控制。
SPI還是一個數(shù)據(jù)交換協(xié)議:因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。不同SPI設備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。
最后,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)。
在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從設備的系統(tǒng)中,每個從設備需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復雜一些。SPI接口主要應用在EEPROM、FLASH、實時時鐘、AD轉換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。
UART 總線
UART(Universal Asynchronous Receiver Transmitter,通用異步收發(fā)器)總線是兩線、全雙工、異步串口,速度慢。比SPI、I2C這兩種同步串口的結構要復雜很多,一般由波特率產(chǎn)生器(產(chǎn)生的波特率等于傳輸波特率的16倍)、UART接收器、UART發(fā)送器組成,硬件上有兩根線,一根用于發(fā)送,一根用于接收。
數(shù)據(jù)是異步傳輸?shù)模瑢﹄p方的時序要求比較嚴格,通信速度也不是很快,在多機通信上面用的最多。如果用GPIO口模擬UART總線,則需一個輸入口,一個輸出口。
UART是用于控制計算機與串行設備的芯片,它提供了RS-232C數(shù)據(jù)終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。
大多數(shù)計算機包含兩個基于RS232的串口。串口同時也是儀器儀表設備通用的通信協(xié)議;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協(xié)議也可以用于獲取遠程采集設備的數(shù)據(jù)。
串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠實現(xiàn)遠距離通信。
作為接口的一部分,UART還提供以下功能:
將由計算機內部傳送過來的并行數(shù)據(jù)轉換為輸出的串行數(shù)據(jù)流;
將計算機外部來的串行數(shù)據(jù)轉換為字節(jié),供計算機內部使用并行數(shù)據(jù)的器件使用;
在輸出的串行數(shù)據(jù)流中加入奇偶校驗位,并對從外部接收的數(shù)據(jù)流進行奇偶校驗;
在輸出數(shù)據(jù)流中加入啟停標記,并從接收數(shù)據(jù)流中刪除啟停標記;
處理由鍵盤或鼠標發(fā)出的中斷信號;
可以處理計算機與外部串行設備的同步管理問題;
有一些比較高檔的UART還提供輸入輸出數(shù)據(jù)的緩沖區(qū),現(xiàn)在比較新的UART是16550,它可以在計算機需要處理數(shù)據(jù)前在其緩沖區(qū)內存儲16字節(jié)數(shù)據(jù)。
IIC 總線
IIC(Inter-Integrated Circuit)總線是雙向、兩線(SCL、SDA)、同步、串行、多主控(multi-master)接口標準,具有競爭檢測和總線仲裁機制,非常適合在器件之間進行近距離、非經(jīng)常性的數(shù)據(jù)通信。
在IIC的協(xié)議體系中,傳輸數(shù)據(jù)時都會帶上目的設備的設備地址,因此可以實現(xiàn)設備組網(wǎng)。
如果用GPIO口模擬IIC總線,并實現(xiàn)雙向傳輸,則需一個輸入輸出口(SDA),另外還需一個輸出口(SCL)。
IIC總線最主要的優(yōu)點是其簡單性和有效性。I2C能用于替代標準的并行總線,能連接各種集成電路和功能模塊。只要求兩條總線線路:一條串行數(shù)據(jù)線SDA 一條串行時鐘線SCL。
IIC是多主控總線,總線上每一個設備都有一個獨一無二的地址,根據(jù)設備自己的能力,任何能夠進行發(fā)送和接收的設備都能像主控器一樣工作,并控制總線。當然,在任何時間點上只能有一個主控,如果兩個或更多主機同時初始化數(shù)據(jù)傳輸可以通過沖突檢測和仲裁,防止數(shù)據(jù)被破壞。
一個主控能夠控制信號的傳輸和時鐘頻率。同步時鐘允許器件通過總線以不同的波特率進行通信。同步時鐘可以作為停止和重新啟動串行口發(fā)送的握手方式。
由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本。總線的長度可高達25英尺,并且能夠以10Kbps的最大傳輸速率支持40個組件。
串行的8位雙向數(shù)據(jù)傳輸位速率標準模式下可達100kbit/s 快速模式下可達400kbit/s 高速模式下可達3.4Mbit/s
片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整。IIC使用上拉電阻,抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠距離通信。連接到相同總線的IC 數(shù)量只受到總線的最大電容400pF 限制。
編輯:jq
- 
                                SPI
                                +關注
關注
17文章
1846瀏覽量
99253 - 
                                IIC
                                +關注
關注
11文章
306瀏覽量
40253 - 
                                CS
                                +關注
關注
0文章
55瀏覽量
25370 - 
                                SDO
                                +關注
關注
0文章
5瀏覽量
6138 
原文標題:SPI、UART、IIC總線的區(qū)別與聯(lián)系
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
知識分享 | 功能安全vsSOTIF:區(qū)別與聯(lián)系
    
請問CYW2019B2的SPI1與SPI2有什么區(qū)別?
HSE子系統(tǒng)HSE_H、HSE_M和HSE_B之間有什么區(qū)別?
私有云和公有云有什么區(qū)別
AIGC和AI有什么區(qū)別
TXB0104與TXS0102兩者之間有什么區(qū)別嗎?
云計算和人工智能有什么區(qū)別和聯(lián)系
iic協(xié)議與spi協(xié)議的區(qū)別
ADC的接口有Serial SPI和SPI兩種,它們之間有什么區(qū)別?
滲壓計和水位計之間有什么區(qū)別?
    
          
        
        
SPI、UART、IIC總線之間有什么區(qū)別與聯(lián)系
                
 
           
            
            
                
            
評論