UART,I2C,SPI 介面總結

huntershuai發表於2018-05-26

UART

一直好奇UART 一根線就能通訊的背後原理,看了一些文章,其實一直沒說到根本原因,uart拋開了clock 訊號,如果採用常規方式進行取樣,在接收端無法定位資料訊號的起始點和結束點,也就無從判決資料訊號的真實電平,所以,與其他介面的區別在於,uart訊號在接收端需要通過過取樣進行電平判決,也正因為此,在享受到uart 單訊號線便利的同時,引入了相應的缺點:

傳輸速率不能過高: 通過過取樣的方式將引入噪聲,降低訊雜比,根據夏農定理,其通道容量也相應下降。

這裡寫圖片描述

I2C

I2C 是單工通訊協議,以其訊號線簡單,廣泛應用於低速率資料傳輸或者是控制訊號傳輸,拓撲結構:
master–>slave0
+++++–>slave 1
+++++–>slave 2
….
+++++–>slave n
多slave拓撲通過slave address 進行區分

寫入過程:
1. master傳送起始位
2. master傳送裝置地址和寫選擇位,slave 傳送ack訊號
3. master傳送內部暫存器地址,slaveack訊號
4. master傳送資料,
5. mater傳送停止位

這裡寫圖片描述
讀取過程:
1. master 傳送起始位
2. master 傳送slave 地址+寫選擇位
3. 傳送內部暫存器地址
4. 傳送起始位,restart
5. 傳送slave 地址和讀選擇位
6. 讀取資料
這裡寫圖片描述

SPI

SPI匯流排系統是一種同步序列外設介面,它可以使MCU與各種外圍裝置以序列方式進行通訊以交 換資訊。外圍設定FLASHRAM、網路控制器、LCD顯示驅動器、A/D轉換器和MCU等。SPI匯流排系統可直接與各個廠家生產的多種標準外圍器件直接 介面,該介面一般使用4條線:序列時鐘線(SCK)、主機輸入/從機輸出資料線MISO、主機輸出/從機輸入資料線MOSI和低電平有效的從機選擇線 SS(有的SPI介面晶片帶有中斷訊號線INT或INT、有的SPI介面晶片沒有主機輸出/從機輸入資料線MOSI)。
  SPI的通訊原理很簡單,它以主從方式工作,這種模式通常有一個主裝置和一個或多個從裝置,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於SPI的裝置共有的,它們是SDI(資料輸入),SDO(資料輸出),SCK(時鐘),CS(片選)。
  (1)SDO – 主裝置資料輸出,從裝置資料輸入
  (2)SDI – 主裝置資料輸入,從裝置資料輸出
  (3)SCLK – 時鐘訊號,由主裝置產生
  (4)CS – 從裝置使能訊號,由主裝置控制
  其中CS是控制晶片是否被選中的,也就是說只有片選訊號為預先規定的使能訊號時(高電位或低電位),對此晶片的操作才有效。這就允許在同一匯流排上連線多個SPI裝置成為可能。
  接下來就負責通訊的3根線了。通訊是通過資料交換完成的,這裡先要知道SPI是序列通訊協議, 也就是說資料是一位一位的傳輸的。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈衝,SDI,SDO則基於此脈衝完成資料傳輸。資料輸出通過 SDO線,資料在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位資料傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘訊號的改變 (上沿和下沿為一次),就可以完成8位資料的傳輸。

轉載圖片:

這裡寫圖片描述

相關文章