I2C、SPI、UART都是常見的低速板級通信協(xié)議,目前主流的SoC都內(nèi)置了這些通訊協(xié)議的控制器,同樣,各種傳感器、Touch控制器、指紋模塊、藍牙模塊、WIFI模塊也都兼容這三種通信方式的一種或幾種。對于這三種通信協(xié)議的差別,可以區(qū)分到非常細,包括信號的單位、傳輸協(xié)議中的封包格式等。
UART一般由TXD、RXD、GND三根線組成,是一種異步傳輸協(xié)議。無論是主機還是從機,均可以自由發(fā)送數(shù)據(jù),但是由于UART總線并沒有時鐘線,所以需要提前約定對應(yīng)的波特率,這是一種很簡單的傳輸協(xié)議,以此基礎(chǔ)再搭電路可以實現(xiàn)RS-232、RS-242、RS-485等通信協(xié)議。過去老式電腦是具備RS-232接口的,但近10年的電腦都只具備USB,因此通常需要透過一個UART轉(zhuǎn)USB的轉(zhuǎn)接電路才能互相連接。UART比較簡單,所以CPU輸出log一般都是通過一個UART口來輸出,是目前最常用的調(diào)試接口,其傳輸速度比較慢,傳統(tǒng)的傳輸速度在115200bps或以下,不過現(xiàn)在大部分UART控制器也能支持到4Mbps或者8Mbps了。

I2C是兩根線,SDA(數(shù)據(jù))和SCL(時鐘),是一種半雙工同步傳輸協(xié)議。主機在發(fā)送開始信號之后,先發(fā)送7個比特的地址位和1個比特的讀寫位,每個從機有自己的I2C地址,當發(fā)現(xiàn)該條指令是發(fā)給自己的時候,拉低SDA線(即回復(fù)ACK信號),然后主機發(fā)送或接收數(shù)據(jù),完成傳輸。傳輸完成之后,主機發(fā)送停止位,完成該次傳輸。I2C最早是由PHILIPS提出來的,用于晶片間的傳輸,理論上可以連接128個從機(一般最多只接10個),原則上只能以PCB板上的銅箔線路來走,然而目前許多應(yīng)用卻是把I2C纜線化。另外,I2C總線的管腳都是開漏輸出,必須外接上拉電阻,阻值可以根據(jù)總線速度來推算,一般我們常用400kbps傳輸速率(標準模式:100kbps,快速模式:400kbps,高速模式:3.4Mbps),上拉電阻選用2.2K。

SPI是四根線,分別是CS(片選)、MOSI(主發(fā)從收)、MISO(從發(fā)主收)、CLK(時鐘),是一種全雙工同步傳輸協(xié)議。主機送出CLK信號,主機到從機的數(shù)據(jù)在MOSI線上傳輸,從機到主機的數(shù)據(jù)在MISO線上傳輸。在啟動傳輸之前,需要先拉低(一般是這樣,也有各別芯片是CS高有效)對應(yīng)從機的CS管腳,在傳輸完成之后,再拉高CS管腳,從機的SPI Slave模塊進入休眠。SPI由Motorola發(fā)明,與I2C相同可以接多個從機,只是每增加一個從機,線路至少要增加一條,其發(fā)送與接收可以同時進行,傳輸速度可達到幾Mbps水平,比I2C快。
UART和后面兩者最大的區(qū)別在于后面兩者是同步的,要有統(tǒng)一的時鐘線,而UART不需要,接線方便,但收發(fā)雙方都需要配置相同的波特率,即設(shè)備要有自己的時鐘源;I2C協(xié)議中是有地址規(guī)則的,因此在一對多通信的時候更有優(yōu)勢。常用來連接傳感器;SPI編程簡單,在設(shè)備不多,端口充足,對通信速度要求不高的場合可以應(yīng)用,較常用來連接EEPROM、FLASH或液晶顯示器。
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
114文章
17106瀏覽量
184275 -
SPI
+關(guān)注
關(guān)注
17文章
1804瀏覽量
95959 -
I2C
+關(guān)注
關(guān)注
28文章
1541瀏覽量
127836 -
uart
+關(guān)注
關(guān)注
22文章
1276瀏覽量
103944 -
通訊協(xié)議
+關(guān)注
關(guān)注
10文章
289瀏覽量
20850
發(fā)布評論請先 登錄
I2C總線通信原理 如何設(shè)計I2C總線電路
基于I2C總線的智能家居應(yīng)用
I2C總線的優(yōu)缺點分析
I2C總線與SPI總線的比較
CAN總線與其他串行通信協(xié)議比較
I2C協(xié)議的基礎(chǔ)知識

物聯(lián)網(wǎng)嵌入式軟件中的I2C總線設(shè)計詳解

DHT11用的是SPI還是I2C
I2C轉(zhuǎn)UART子系統(tǒng)設(shè)計

評論