UART、I2C、SPI都是常見的低速板級通信協議,目前主流的SoC都內置了這些通訊協議的控制器,同樣,各種傳感器、Touch控制器、指紋模塊、藍牙模塊、WIFI模塊也都兼容這三種通信方式的一種或幾種。
下面分別說下:
UART
UART一般由TXD、RXD、GND三根線組成,是一種異步傳輸協議。
無論是主機還是從機,均可以自由發送數據,但是由于UART總線并沒有時鐘線,所以需要提前約定對應的波特率,這是一種很簡單的傳輸協議。
I2C
I2C是兩根線,SDA(數據)和SCL(時鐘),也是一種同步傳輸協議。主機在發送開始信號之后,先發送7個比特的地址位和1個比特的讀寫位,每個從機有自己的I2C地址,當發現該條指令是發給自己的時候,拉低SDA線(即回復ACK信號),然后主機發送或接收數據,完成傳輸。傳輸完成之后,主機發送停止位,完成該次傳輸。
SPI
SPI是四根線,分別是CS(片選)、MOSI(主發從收)、MISO(從發主收)、CLK(時鐘),是一種同步傳輸協議。主機送出CLK信號,主機到從機的數據在MOSI線上傳輸,從機到主機的數據在MISO線上傳輸。在啟動傳輸之前,需要先拉低(一般是這樣,也有各別芯片是CS高有效)對應從機的CS管腳,在傳輸完成之后,再拉高CS管腳,從機的SPI Slave模塊進入休眠。
使用場景
首先,I2C和SPI都是同步協議,都有時鐘信號,在一條總線上也都可以掛多個從設備,但是I2C的從設備是通過地址來區分的,SPI的從設備是通過片選線來區分的,所以SPI總線上,每多掛一個從設備,就要多用一個線作為片選線,而I2C則不用,只要地址不沖突,可以隨便掛設備。
但是,I2C總線速度一般普遍慢于SPI,I2C一般的速度是100kbs、400kbps和1Mbps,而SPI的速度可以在幾Mbps,也可以10+Mbps。所以看使用場合,低速的話,I2C就挺合適的,如果速度快一些,則一般都要選用SPI。另外,I2C總線的管腳都是開漏輸出,必須外接上拉電阻,阻值可以根據總線速度來推算,一般我們常用400kbps傳輸速率,上拉電阻選用2.2K。
UART和SPI、I2C不同,他是異步傳輸的,一般來說傳輸速度比較慢,傳統的傳輸速度一般在115200bps或以下,不過現在大部分UART控制器也能支持到4Mbps或者8Mbps了。UART目前最常用的就是調試接口,因為UART比較簡單,所以CPU輸出log一般都通過一個UART口來輸出。
-
傳感器
+關注
關注
2560文章
52134瀏覽量
761296 -
通信協議
+關注
關注
28文章
970瀏覽量
40827 -
SPI
+關注
關注
17文章
1748瀏覽量
93937 -
I2C
+關注
關注
28文章
1511瀏覽量
126389 -
uart
+關注
關注
22文章
1250瀏覽量
102737
原文標題:一文搞懂UART、I2C、SPI協議
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
SPI,UART,I2C區別與特點
低速板級通信協議:UART、I2C、SPI協議
I2C與SPI與UART:如何布局這些通用總線

評論