<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > uart,spi,i2c總線(xiàn)的區別

uart,spi,i2c總線(xiàn)的區別

作者: 時(shí)間:2016-12-14 來(lái)源:網(wǎng)絡(luò ) 收藏
I2C的數據輸入輸出用的是一根線(xiàn),SPI則分為dataIN和dataOUT。由于這個(gè)原因,采用I2C時(shí)CPU的端口占用少,SPI多一根。但是由于I2C的數據線(xiàn)是雙向的,所以隔離比較復雜,SPI則比較容易。所以系統內部通信可用I2C,若要與外部通信則最好用SPI帶隔離(可以提高抗干擾能力)。但是I2C和SPI都不適合長(cháng)距離傳輸。長(cháng)距離時(shí)就要用485了。

第一:
SPI(Serial Peripheral Interface:串行外設接口); I2C(INTER IC BUS);UART(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)器)
第二,區別在電氣信號線(xiàn)上:
SPI總線(xiàn)由三條信號線(xiàn)組成:串行時(shí)鐘(SCLK)、串行數據輸出(SDO)、串行數據輸入(SDI)。SPI總線(xiàn)可以實(shí)現多個(gè)SPI設備互相連接。提供SPI串行時(shí)鐘的SPI設備為SPI主機或主設備(Master),其他設備為SPI從機或從設備(Slave)。主從設備間可以實(shí)現全雙工通信,當有多個(gè)從設備時(shí),還可以增加一條從設備選擇線(xiàn)。 如果用通用IO口模擬SPI總線(xiàn),必須要有一個(gè)輸出口(SDO),一個(gè)輸入口(SDI),另一個(gè)口則視實(shí)現的設備類(lèi)型而定,如果要實(shí)現主從設備,則需輸入輸出口,若只實(shí)現主設備,則需輸出口即可,若只實(shí)現從設備,則只需輸入口即可。
I2C總線(xiàn)是雙向、兩線(xiàn)(SCL、SDA)、串行、多主控(multi-master)接口標準,具有總線(xiàn)仲裁機制,非常適合在器件之間進(jìn)行近距離、非經(jīng)常性的數據通信。在它的協(xié)議體系中,傳輸數據時(shí)都會(huì )帶上目的設備的設備地址,因此可以實(shí)現設備組網(wǎng)。 如果用通用IO口模擬I2C總線(xiàn),并實(shí)現雙向傳輸,一條串行數據線(xiàn)SDA,一條串行時(shí)鐘線(xiàn)SCL

本文引用地址:http://dyxdggzs.com/article/201612/329826.htm

UART總線(xiàn)是異步串口,因此一般比前兩種同步串口的結構要復雜很多,一般由波特率產(chǎn)生器(產(chǎn)生的波特率等于傳輸波特率的16倍)、UART接收器、UART發(fā)送器組成,硬件上由兩根線(xiàn),一根用于發(fā)送,一根用于接收。顯然,如果用通用IO口模擬UART總線(xiàn),則需一個(gè)輸入口,一個(gè)輸出口。
第三,從第二點(diǎn)明顯可以看出,SPI和UART可以實(shí)現全雙工,但I2C不行;
個(gè)人認為:
I2C線(xiàn)更少,我覺(jué)得比UART、SPI更為強大,但是技術(shù)上也更加麻煩些,因為I2C需要有雙向IO的支持,而且使用上拉電阻,我覺(jué)得抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較少用于遠距離通信。SPI實(shí)現要簡(jiǎn)單一些,UART需要固定的波特率,就是說(shuō)兩位數據的間隔要相等,而SPI則無(wú)所謂,因為它是有時(shí)鐘的協(xié)議。
I2C的速度比SPI慢一點(diǎn),協(xié)議比SPI復雜一點(diǎn),但是連線(xiàn)也比標準的SPI要少。
SPI總線(xiàn)系統是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進(jìn)行通信以交換信息。外圍設置FLASHRAM、網(wǎng)絡(luò )控制器、LCD顯示驅動(dòng)器、A/D轉換器和MCU等。SPI總線(xiàn)系統可直接與各個(gè)廠(chǎng)家生產(chǎn)的多種標準外圍器件直接接口,該接口一般使用4條線(xiàn):串行時(shí)鐘線(xiàn)(SCK)、主機輸入/從機輸出數據線(xiàn)MISO、主機輸出/從機輸入數據線(xiàn)MOST和低電平有效的從機選擇線(xiàn)SS(有的SPI接口芯片帶有中斷信號線(xiàn)INT或INT、有的SPI接口芯片沒(méi)有主機輸出/從機輸入數據線(xiàn)MOSI)。
SPI的通信原理很簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設備和一個(gè)或多個(gè)從設備,需要至少4根線(xiàn),事實(shí)上3根也可以(單向傳輸時(shí))。也是所有基于SPI的設備共有的,它們是SDI(數據輸入),SDO(數據輸出),SCK(時(shí)鐘),CS(片選)。
(1)SDO – 主設備數據輸出,從設備數據輸入
(2)SDI – 主設備數據輸入,從設備數據輸出
(3)SCLK – 時(shí)鐘信號,由主設備產(chǎn)生
(4)CS – 從設備使能信號,由主設備控制
其中CS是控制芯片是否被選中的,也就是說(shuō)只有片選信號為預先規定的使能信號時(shí)(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線(xiàn)上連接多個(gè)SPI設備成為可能。
接下來(lái)就負責通訊的3根線(xiàn)了。通訊是通過(guò)數據交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說(shuō)數據是一位一位的傳輸的。這就是SCK時(shí)鐘線(xiàn)存在的原因,由SCK提供時(shí)鐘脈沖,SDI,SDO則基于此脈沖完成數據傳輸。數據輸出通過(guò) SDO線(xiàn),數據在時(shí)鐘上升沿或下降沿時(shí)改變,在緊接著(zhù)的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時(shí)鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。
要注意的是,SCK信號線(xiàn)只由主設備控制,從設備不能控制信號線(xiàn)。同樣,在一個(gè)基于SPI的設備中,至少有一個(gè)主控設備。這樣傳輸的特點(diǎn):這樣的傳輸方式有一個(gè)優(yōu)點(diǎn),與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因為SCK時(shí)鐘線(xiàn)由主控設備控制,當沒(méi)有時(shí)鐘跳變時(shí),從設備不采集或傳送數據。也就是說(shuō),主設備通過(guò)對SCK時(shí)鐘線(xiàn)的控制可以完成對通訊的控制。SPI還是一個(gè)數據交換協(xié)議:因為SPI的數據輸入和輸出線(xiàn)獨立,所以允許同時(shí)完成數據的輸入和輸出。不同的SPI設備的實(shí)現方式不盡相同,主要是數據改變和采集的時(shí)間不同,在時(shí)鐘信號上沿或下沿采集有不同定義,具體請參考相關(guān)器件的文檔。
在點(diǎn)對點(diǎn)的通信中,SPI接口不需要進(jìn)行尋址操作,且為全雙工通信,顯得簡(jiǎn)單高效。在多個(gè)從設備的系統中,每個(gè)從設備需要獨立的使能信號,硬件上比I2C系統要稍微復雜一些。
最后,SPI接口的一個(gè)缺點(diǎn):沒(méi)有指定的流控制,沒(méi)有應答機制確認是否接收到數據。
AT91RM9200的SPI接口主要由4個(gè)引腳構成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整個(gè)SPI總線(xiàn)的公用時(shí)鐘,MOSI、MISO作為主機,從機的輸入輸出的標志,MOSI是主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS是從機的標志管腳,在互相通信的兩個(gè)SPI總線(xiàn)的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。在一個(gè)SPI通信系統中,必須有主機。SPI總線(xiàn)可以配置成單主單從,單主多從,互為主從。SPI的片選可以擴充選擇16個(gè)外設,這時(shí)PCS輸出=NPCS,說(shuō)NPCS0~3接4-16譯碼器,這個(gè)譯碼器是需要外接4-16譯碼器,譯碼器的輸入為NPCS0~3,輸出用于16個(gè)外設的選擇。
SPI協(xié)議舉例
SPI是一個(gè)環(huán)形總線(xiàn)結構,由ss(cs)、sck、sdi、sdo構成,其時(shí)序其實(shí)很簡(jiǎn)單,主要是在sck的控制下,兩個(gè)雙向移位寄存器進(jìn)行數據交換。
假設下面的8位寄存器裝的是待發(fā)送的數據10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。
那么第一個(gè)上升沿來(lái)的時(shí)候數據將會(huì )是sdo=1;寄存器=0101010x。下降沿到來(lái)的時(shí)候,sdi上的電平將所存到寄存器中去,那么這時(shí)寄存器=0101010sdi,這樣在 8個(gè)時(shí)鐘脈沖以后,兩個(gè)寄存器的內容互相交換一次。這樣就完成里一個(gè)spi時(shí)序。
舉例:
假設主機和從機初始化就緒:并且主機的sbuff=0xaa,從機的sbuff=0x55,下面將分步對spi的8個(gè)時(shí)鐘周期的數據情況演示一遍:假設上升沿發(fā)送數據
這樣就完成了兩個(gè)寄存器8位的交換,,sdi、sdo相對于主機而言的。其中ss引腳作為主機的時(shí)候,從機可以把它拉底被動(dòng)選為從機,作為從機的是時(shí)候,可以作為片選腳用。根據以上分析,一個(gè)完整的傳送周期是16位,即兩個(gè)字節,因為,首先主機要發(fā)送命令過(guò)去,然后從機根據主機的命令準備數據,主機在下一個(gè)8位時(shí)鐘周期才把數據讀回來(lái)。 SPI 總線(xiàn)是Motorola公司推出的三線(xiàn)同步接口,同步串行3線(xiàn)方式進(jìn)行通信:一條時(shí)鐘線(xiàn)SCK,一條數據輸入線(xiàn)OSI,一條數據輸出線(xiàn)MISO;用于CPU與各種外圍器件進(jìn)行全雙工、同步串行通訊。SPI主要特點(diǎn)有:可以同時(shí)發(fā)出和接收串行數據;可以當作主機或從機工作;提供頻率可編程時(shí)鐘;發(fā)送結束中斷標志;寫(xiě)沖突保護;總線(xiàn)競爭保護等。下圖示出SPI總線(xiàn)工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式 (實(shí)線(xiàn)表示):
SPI總線(xiàn)四種工作方式 SPI 模塊為了和外設進(jìn)行數據交換,根據外設工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性(CPOL)對傳輸協(xié)議沒(méi)有重大的影響。如果 CPOL=0,串行同步時(shí)鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平。時(shí)鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數據傳輸。如果CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數據被采樣;如果CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數據被采樣。SPI主模塊和與之通信的外設備時(shí)鐘相位和極性應該一致。
SPI總線(xiàn)包括1根串行同步時(shí)鐘信號線(xiàn)以及2根數據線(xiàn)。
SPI模塊為了和外設進(jìn)行數據交換,根據外設工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性(CPOL)對傳輸協(xié)議沒(méi)有重大的影響。如果CPOL=0,串行同步時(shí)鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平。時(shí)鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數據傳輸。如果CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數據被采樣;如果CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數據被采樣。SPI主模塊和與之通信的外設音時(shí)鐘相位和極性應該一致。
補充:
上文中最后一句話(huà):SPI主模塊和與之通信的外設備時(shí)鐘相位和極性應該一致。個(gè)人理解這句話(huà)有2層意思:其一,主設備SPI時(shí)鐘和極性的配置應該由外設來(lái)決定;其二,二者的配置應該保持一致,即主設備的SDO同從設備的SDO配置一致,主設備的SDI同從設備的SDI配置一致。因為主從設備是在SCLK的控制下,同時(shí)發(fā)送和接收數據,并通過(guò)2個(gè)雙向移位寄存器來(lái)交換數據。
上升沿主機SDO發(fā)送數據1,同時(shí)從設備SDO發(fā)送數據0;緊接著(zhù)在SCLK的下降沿的時(shí)候從設備的SDI接收到了主機發(fā)送過(guò)來(lái)的數據1,同時(shí)主機也接收到了從設備發(fā)送過(guò)來(lái)的數據0.
SPI協(xié)議心得
SPI接口時(shí)鐘配置心得:
在主設備這邊配置SPI接口時(shí)鐘的時(shí)候一定要弄清楚從設備的時(shí)鐘要求,因為主設備這邊的時(shí)鐘極性和相位都是以從設備為基準的。因此在時(shí)鐘極性的配置上一定要搞清楚從設備是在時(shí)鐘的上升沿還是下降沿接收數據,是在時(shí)鐘的下降沿還是上升沿輸出數據。但要注意的是,由于主設備的SDO連接從設備的SDI,從設備的SDO連接主設備的SDI,從設備SDI接收的數據是主設備的SDO發(fā)送過(guò)來(lái)的,主設備SDI接收的數據是從設備SDO發(fā)送過(guò)來(lái)的,所以主設備這邊SPI時(shí)鐘極性的配置(即SDO的配置)跟從設備的SDI接收數據的極性是相反的,跟從設備SDO發(fā)送數據的極性是相同的。下面這段話(huà)是Sychip Wlan8100 Module Spec上說(shuō)的,充分說(shuō)明了時(shí)鐘極性是如何配置的:
The 81xx module will always input data bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock.
意思是:主設備在時(shí)鐘的下降沿發(fā)送數據,從設備在時(shí)鐘的上升沿接收數據。因此主設備這邊SPI時(shí)鐘極性應該配置為下降沿有效。
又如,下面這段話(huà)是摘自L(fǎng)CD Driver IC SSD1289:
SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.
意思是:從設備SSD1289在時(shí)鐘的上升沿接收數據,而且是按照從高位到地位的順序接收數據的。因此主設備的SPI時(shí)鐘極性同樣應該配置為下降沿有效。
時(shí)鐘極性和相位配置正確后,數據才能夠被準確的發(fā)送和接收。因此應該對照從設備的SPI接口時(shí)序或者Spec文檔說(shuō)明來(lái)正確配置主設備的時(shí)鐘。
軟件過(guò)程改進(jìn)
SPI: Software Process Improvement. 軟件過(guò)程改進(jìn)。是軟件企業(yè)項目過(guò)程質(zhì)量的改進(jìn),CMM,ISO9000-3說(shuō)的就是這個(gè)。
UART
開(kāi)放分類(lèi): 計算機、通信、信息
UART: Universal Asynchronous Receiver/Transmitter,通用異步接收/發(fā)送裝置,UART是一個(gè)并行輸入成為串行輸出的芯片,通常集成在主板上,多數是16550AFN芯片。因為計算機內部采用并行數據數據,不能直接把數據發(fā)到Modem,必須經(jīng)過(guò)UART整理才能進(jìn)行異步傳輸,其過(guò)程為:CPU先把準備寫(xiě)入串行設備的數據放到UART的寄存器(臨時(shí)內存塊)中,再通過(guò)FIFO(First Input First Output,先入先出隊列)傳送到串行設備,若是沒(méi)有FIFO,信息將變得雜亂無(wú)章,不可能傳送到Modem。
它是用于控制計算機與串行設備的芯片。有一點(diǎn)要注意的是,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。作為接口的一部分,UART還提供以下功能:將由計算機內部傳送過(guò)來(lái)的并行數據轉換為輸出的串行數據流。將計算機外部來(lái)的串行數據轉換為字節,供計算機內部使用并行數據的器件使用。在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進(jìn)行奇偶校驗。在輸出數據流中加入啟停標記,并從接收數據流中刪除啟停標記。處理由鍵盤(pán)或鼠標發(fā)出的中斷信號(鍵盤(pán)和鼠標也是串行設備)??梢蕴幚碛嬎銠C與外部串行設備的同步管理問(wèn)題。有一些比較高檔的UART還提供輸入輸出數據的緩沖區,現在比較新的UART是16550,它可以在計算機需要處理數據前在其緩沖區內存儲16字節數據,而通常的UART是8250?,F在如果您購買(mǎi)一個(gè)內置的調制解調器,此調制解調器內部通常就會(huì )有16550 UART。

區別在電氣信號線(xiàn)上:

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

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

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

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

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

顯然,如果用通用IO口模擬UART總線(xiàn),則需一個(gè)輸入口,一個(gè)輸出口。

從以上很明顯可以看出,SPI和UART可以實(shí)現全雙工,但I2C不行;

第四,看看牛人們的意見(jiàn)吧!

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

B:I2C的速度比SPI慢一點(diǎn),協(xié)議比SPI復雜一點(diǎn),但是連線(xiàn)也比標準的SPI要少。

-----------------------------------------------------------------------------------------------------------------------------------

SPI 是一種允許一個(gè)主設備啟動(dòng)一個(gè)與從設備的同步通訊的協(xié)議,從而完成數據的交換。也就是SPI是一種規定好的通訊方式。這種通信方式的優(yōu)點(diǎn)是占用端口較少,一般4根就夠基本通訊了。同時(shí)傳輸速度也很高。一般來(lái)說(shuō)要求主設備要有SPI控制器(但可用模擬方式),就可以與基于SPI的芯片通訊了。

SPI 的通信原理很簡(jiǎn)單,它需要至少4根線(xiàn),事實(shí)上3根也可以。也是所有基于SPI的設備共有的,它們是SDI(數據輸入),SDO(數據輸出),SCK(時(shí)鐘),CS(片選)。其中CS是控制芯片是否被選中的,也就是說(shuō)只有片選信號為預先規定的使能信號時(shí)(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線(xiàn)上連接多個(gè)SPI設備成為可能。

接下來(lái)就負責通訊的3根線(xiàn)了。通訊是通過(guò)數據交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說(shuō)數據是一位一位的傳輸的。這就是SCK時(shí)鐘線(xiàn)存在的原因,由SCK提供時(shí)鐘脈沖,SDI,SDO則基于此脈沖完成數據傳輸。數據輸出通過(guò)SDO線(xiàn),數據在時(shí)鐘上沿或下沿時(shí)改變,在緊接著(zhù)的下沿或上沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時(shí)鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。

要注意的是,SCK信號線(xiàn)只由主設備控制,從設備不能控制信號線(xiàn)。同樣,在一個(gè)基于SPI的設備中,至少有一個(gè)主控設備。

這樣傳輸的特點(diǎn):這樣的傳輸方式有一個(gè)優(yōu)點(diǎn),與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因為SCK時(shí)鐘線(xiàn)由主控設備控制,當沒(méi)有時(shí)鐘跳變時(shí),從設備不采集或傳送數據。也就是說(shuō),主設備通過(guò)對SCK時(shí)鐘線(xiàn)的控制可以完成對通訊的控制。

SPI還是一個(gè)數據交換協(xié)議:因為SPI的數據輸入和輸出線(xiàn)獨立,所以允許同時(shí)完成數據的輸入和輸出。

不同的SPI設備的實(shí)現方式不盡相同,主要是數據改變和采集的時(shí)間不同,在時(shí)鐘信號上沿或下沿采集有不同定義,具體請參考相關(guān)器件的文檔。

I2C

? 只要求兩條總線(xiàn)線(xiàn)路:一條串行數據線(xiàn)SDA 一條串行時(shí)鐘線(xiàn)SCL

? 每個(gè)連接到總線(xiàn)的器件都可以通過(guò)唯一的地址和一直存在的簡(jiǎn)單的主機從機關(guān)系軟件設定地址主機可以作為主機發(fā)送器或主機接收器

? 它是一個(gè)真正的多主機總線(xiàn)如果兩個(gè)或更多主機同時(shí)初始化數據傳輸可以通過(guò)沖突檢測和仲裁,防止數據被破壞

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

? 片上的濾波器可以濾去總線(xiàn)數據線(xiàn)上的毛刺波保證數據完整

? 連接到相同總線(xiàn)的IC 數量只受到總線(xiàn)的最大電容400pF 限制

UART

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

顯然,如果用通用IO口模擬UART總線(xiàn),則需一個(gè)輸入口,一個(gè)輸出口。

UART常用于控制計算機與串行設備的芯片。有一點(diǎn)要注意的是,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。

明顯可以看出,SPI和UART可以實(shí)現全雙工,但I2C不行。



關(guān)鍵詞: uartspii2c總

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>