I2C、SPI、UART都是常見的低速板級(jí)通信協(xié)議 ,目前主流的SoC都內(nèi)置了這些通訊協(xié)議的控制器,同樣,各種傳感器、Touch控制器、指紋模塊、藍(lán)牙模塊、WIFI模塊也都兼容這三種通信方式的一種或幾種。對(duì)于這三種通信協(xié)議的差別,可以區(qū)分到非常細(xì),包括信號(hào)的單位、傳輸協(xié)議中的封包格式等。
UART一般由TXD、RXD、GND三根線組成,是一種異步傳輸協(xié)議。無論是主機(jī)還是從機(jī),均可以自由發(fā)送數(shù)據(jù),但是由于UART總線并沒有時(shí)鐘線,所以需要提前約定對(duì)應(yīng)的波特率,這是一種很簡(jiǎn)單的傳輸協(xié)議,以此基礎(chǔ)再搭電路可以實(shí)現(xiàn)RS-232、RS-242、RS-485等通信協(xié)議。 過去老式電腦是具備RS-232接口的,但近10年的電腦都只具備USB,因此通常需要透過一個(gè)UART轉(zhuǎn)USB的轉(zhuǎn)接電路才能互相連接 。
UART比較簡(jiǎn)單,所以CPU輸出log一般都是通過一個(gè)UART口來輸出,是目前最常用的調(diào)試接口,其傳輸速度比較慢, 傳統(tǒng)的傳輸速度在115200bps或以下,不過現(xiàn)在大部分UART控制器也能支持到4Mbps或者8Mbps了** 。
I2C是兩根線,SDA(數(shù)據(jù))和SCL(時(shí)鐘),是一種半雙工同步傳輸協(xié)議。主機(jī)在發(fā)送開始信號(hào)之后,先發(fā)送7個(gè)比特的地址位和1個(gè)比特的讀寫位,每個(gè)從機(jī)有自己的I2C地址,當(dāng)發(fā)現(xiàn)該條指令是發(fā)給自己的時(shí)候,拉低SDA線(即回復(fù)ACK信號(hào)),然后主機(jī)發(fā)送或接收數(shù)據(jù),完成傳輸。
傳輸完成之后,主機(jī)發(fā)送停止位,完成該次傳輸。 I2C最早是由PHILIPS提出來的,用于晶片間的傳輸,理論上可以連接128個(gè)從機(jī)(一般最多只接10個(gè)) ,原則上只能以PCB板上的銅箔線路來走,然而目前許多應(yīng)用卻是把I2C纜線化。
另外,I2C總線的管腳都是開漏輸出,必須外接上拉電阻,阻值可以根據(jù)總線速度來推算,一般我們常用400kbps傳輸速率(標(biāo)準(zhǔn)模式:100kbps,快速模式:400kbps,高速模式:3.4Mbps),上拉電阻選用2.2K。
SPI是四根線,分別是CS(片選)、MOSI(主發(fā)從收)、MISO(從發(fā)主收)、CLK(時(shí)鐘),是一種全雙工同步傳輸協(xié)議。主機(jī)送出CLK信號(hào),主機(jī)到從機(jī)的數(shù)據(jù)在MOSI線上傳輸,從機(jī)到主機(jī)的數(shù)據(jù)在MISO線上傳輸。在啟動(dòng)傳輸之前,需要先拉低(一般是這樣,也有各別芯片是CS高有效)對(duì)應(yīng)從機(jī)的CS管腳,在傳輸完成之后,再拉高CS管腳,從機(jī)的SPI Slave模塊進(jìn)入休眠。
SPI由Motorola發(fā)明,與I2C相同可以接多個(gè)從機(jī),只是每增加一個(gè)從機(jī),線路至少要增加一條,其發(fā)送與接收可以同時(shí)進(jìn)行,傳輸速度可達(dá)到幾Mbps水平,比I2C快 。
UART和后面兩者最大的區(qū)別在于后面兩者是同步的,要有統(tǒng)一的時(shí)鐘線,而UART不需要 ,接線方便,但收發(fā)雙方都需要配置相同的波特率,即設(shè)備要有自己的時(shí)鐘源; I2C協(xié)議中是有地址規(guī)則的,因此在一對(duì)多通信的時(shí)候更有優(yōu)勢(shì)。常用來連接傳感器 ;SPI編程簡(jiǎn)單,在設(shè)備不多,端口充足,對(duì)通信速度要求不高的場(chǎng)合可以應(yīng)用,較常用來連接EEPROM、FLASH或液晶顯示器。
-
控制器
+關(guān)注
關(guān)注
112文章
16367瀏覽量
178108 -
SPI
+關(guān)注
關(guān)注
17文章
1706瀏覽量
91597 -
I2C
+關(guān)注
關(guān)注
28文章
1487瀏覽量
123786 -
uart
+關(guān)注
關(guān)注
22文章
1235瀏覽量
101404
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論