新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SPI、I2C、UART三種串行總線協(xié)議的區(qū)別和SPI接口介紹

SPI、I2C、UART三種串行總線協(xié)議的區(qū)別和SPI接口介紹

作者: 時間:2016-12-15 來源:網(wǎng)絡(luò) 收藏

SPI、I2C、UART三種串行總線協(xié)議的區(qū)別

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

第一個區(qū)別當(dāng)然是名字:

SPI(Serial Peripheral Interface:串行外設(shè)接口);

I2C(INTER IC BUS)

UART(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)器)

第二,區(qū)別在電氣信號線上:

SPI總線由三條信號線組成:串行時鐘(SCLK)、串行數(shù)據(jù)輸出(SDO)、串行數(shù)據(jù)輸入(SDI)。SPI總線可以實(shí)現(xiàn)多個SPI設(shè)備互相連接。提供SPI串行時鐘的SPI設(shè)備為SPI主機(jī)或主設(shè)備(Master),其他設(shè)備為SPI從機(jī)或從設(shè)備(Slave)。主從設(shè)備間可以實(shí)現(xiàn)全雙工通信,當(dāng)有多個從設(shè)備時,還可以增加一條從設(shè)備選擇線。

如果用通用IO口模擬SPI總線,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口則視實(shí)現(xiàn)的設(shè)備類型而定,如果要實(shí)現(xiàn)主從設(shè)備,則需輸入輸出口,若只實(shí)現(xiàn)主設(shè)備,則需輸出口即可,若只實(shí)現(xiàn)從設(shè)備,則只需輸入口即可。

I2C總線是雙向、兩線(SCL、SDA)、串行、多主控(multi-master)接口標(biāo)準(zhǔn),具有總線仲裁機(jī)制,非常適合在器件之間進(jìn)行近距離、非經(jīng)常性的數(shù)據(jù)通信。在它的協(xié)議體系中,傳輸數(shù)據(jù)時都會帶上目的設(shè)備的設(shè)備地址,因此可以實(shí)現(xiàn)設(shè)備組網(wǎng)。

如果用通用IO口模擬I2C總線,并實(shí)現(xiàn)雙向傳輸,則需一個輸入輸出口(SDA),另外還需一個輸出口(SCL)。(注:I2C資料了解得比較少,這里的描述可能很不完備)

UART總線是異步串口,因此一般比前兩種同步串口的結(jié)構(gòu)要復(fù)雜很多,一般由波特率產(chǎn)生器(產(chǎn)生的波特率等于傳輸波特率的16倍)、UART接收器、UART發(fā)送器組成,硬件上由兩根線,一根用于發(fā)送,一根用于接收。

顯然,如果用通用IO口模擬UART總線,則需一個輸入口,一個輸出口。

第三,從第二點(diǎn)明顯可以看出,SPI和UART可以實(shí)現(xiàn)全雙工,但I(xiàn)2C不行;

第四,看看牛人們的意見吧!

wudanyu:I2C線更少,我覺得比UART、SPI更為強(qiáng)大,但是技術(shù)上也更加麻煩些,因?yàn)镮2C需要有雙向IO的支持,而且使用上拉電阻,我覺得抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠(yuǎn)距離通信。SPI實(shí)現(xiàn)要簡單一些,UART需要固定的波特率,就是說兩位數(shù)據(jù)的間隔要相等,而SPI則無所謂,因?yàn)樗怯袝r鐘的協(xié)議。

quickmouse:I2C的速度比SPI慢一點(diǎn),協(xié)議比SPI復(fù)雜一點(diǎn),但是連線也比標(biāo)準(zhǔn)的SPI要少。

SPI接口介紹(轉(zhuǎn))

這幾天碰到了使用SPI接口的flash,才知道flash還可以是串行的,看來以前真是井底之蛙啊,找了一些SPI接口的資料都不全,后來找到一點(diǎn)英文資料,翻譯了一下,加上我的個人理解,湊成一篇了,希望對初學(xué)者有點(diǎn)幫助。

SPI接口的全稱是"Serial Peripheral Interface",意為串行外圍接口,是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應(yīng)用在EEPROM,FLASH,實(shí)時時鐘,AD轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。

SPI接口是在CPU和外圍低速器件之間進(jìn)行同步串行數(shù)據(jù)傳輸,在主器件的移位脈沖下,數(shù)據(jù)按位傳輸,高位在前,地位在后,為全雙工通信,數(shù)據(jù)傳輸速度總體來說比I2C總線要快,速度可達(dá)到幾Mbps。

SPI接口是以主從方式工作的,這種模式通常有一個主器件和一個或多個從器件,其接口包括以下四種信號:

(1)MOSI – 主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入
(2)MISO – 主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出
(3)SCLK – 時鐘信號,由主器件產(chǎn)生
(4)/SS – 從器件使能信號,由主器件控制

在點(diǎn)對點(diǎn)的通信中,SPI接口不需要進(jìn)行尋址操作,且為全雙工通信,顯得簡單高效。
在多個從器件的系統(tǒng)中,每個從器件需要獨(dú)立的使能信號,硬件上比I2C系統(tǒng)要稍微復(fù)雜一些。

SPI接口在內(nèi)部硬件實(shí)際上是兩個簡單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產(chǎn)生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。如下圖所示,在SCLK的下降沿上數(shù)據(jù)改變,同時一位數(shù)據(jù)被存入移位寄存器。

SPI接口內(nèi)部硬件圖示:

最后,SPI接口的一個缺點(diǎn):沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。


上一頁 1 2 下一頁

評論


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

關(guān)閉