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