tft每日頭條

 > 職場

 > 簡述i2c總線

簡述i2c總線

職場 更新时间:2024-09-30 23:57:41

如果您正在使用OLED顯示器,氣壓傳感器或陀螺儀/加速度計模塊的項目,您可能會發現正在使用I2C總線。

I2C總線簡介

I2C結合了SPI和UART的優點。使用I2C,您可以将多個從設備連接到單個主設備上(如SPI),并且可以讓多個主器件控制單個或多個從器件。當您希望有多個微控制器記錄數據到單個存儲卡或将文本顯示到單個LCD時,這非常有用。

與UART通信一樣,I2C僅使用兩條線在設備之間傳輸數據:

簡述i2c總線(一文了解I2C總線工作原理)1

SDA(串行數據) - 主站和從站發送和接收數據的線路。

SCL(串行時鐘) - 承載時鐘信号的線路。

I2C是一種串行通信協議,因此數據沿着單線(SDA線)逐位傳輸。

與SPI一樣,I2C是同步的,因此位輸出通過主機和從機之間共享的時鐘信号與位采樣同步。時鐘信号始終由主機控制。

簡述i2c總線(一文了解I2C總線工作原理)2

I2C如何工作

使用I2C時,數據被轉換成messages,messages則被分解為數據幀。每條messages都有一個地址幀,其中包含從站的二進制地址,以及一個或多個包含正在傳輸的數據的數據幀。該消息還包括每個數據幀之間的啟動和停止條件,讀/寫位和ACK / NACK位:

簡述i2c總線(一文了解I2C總線工作原理)3

啟動條件:在SCL線路從高電平切換到低電平之前,SDA線路從高電平切換到低電平。

停止條件:SCL線路從低電平切換到高電平後,SDA線路從低電平切換到高電平。

地址幀:每個從站唯一的7或10位序列,用于在主站想與之通信時識别從站。

讀/寫位:單個位,指定主器件是向從器件發送數據(低電壓電平)還是從器件請求數據(高電壓電平)。

ACK / NACK位:消息中的每個幀後跟一個應答/不應答位。如果成功接收到地址幀或數據幀,則從接收設備向發送方返回ACK位。

地址

I2C沒有像SPI這樣的從選擇線,因此它需要另一種方法讓從器件知道數據正在發送給它,而不是另一個從器件。它通過地址來做到這一點。地址幀始終是新消息中起始位之後的第一幀。

主設備将與其通信的從設備的地址發送給與其連接的每個從設備。然後,每個從設備将從主設備發送的地址與其自己的地址進行比較。如果地址匹配,則将低電壓ACK位發送回主機。如果地址不匹配,則從器件不執行任何操作,SDA線保持高電平。

讀/寫位

地址幀在末尾包括一個位,用于通知從設備,主設備是想要向其寫入數據還是從主設備接收數據。如果主設備想要向從設備發送數據,則讀/寫位是低電平。如果主設備向從設備請求數據,則該位是高電平。

數據框架

在主設備檢測到來自從設備的ACK位之後,準備好發送第一個數據幀。

數據幀始終為8位長,并以最高有效位先發送。緊接着每個數據幀的ACK / NACK位以驗證幀已被成功接收。在發送下一個數據幀之前,主機或從機必須接收ACK位(取決于發送數據的人)。

在發送了所有數據幀之後,主設備可以向從設備發送停止條件以停止傳輸。停止條件是SCL線上從低電平到高電平轉換後,SDA線上從低電平變為高電平,SCL線保持高電平。

I2C數據傳輸步驟

1.主機向每一個連接的從設備發送數據,然後将SDA信号從高切換到低,之後在将SCL從高切換到低電平。

簡述i2c總線(一文了解I2C總線工作原理)4

2.主設備向每個從設備發送它想要與之通信的從設備的7或10位地址,以及讀/寫位:

簡述i2c總線(一文了解I2C總線工作原理)5

3.每個從設備将主設備發送的地址與其自己的地址進行比較。如果地址匹配,則從器件通過将SDA線拉低一位來返回ACK位。如果主設備的地址與從設備的地址不匹配,則從設備将SDA線保持為高電平。

簡述i2c總線(一文了解I2C總線工作原理)6

4.主設備發送或接收數據幀:

簡述i2c總線(一文了解I2C總線工作原理)7

5.在傳輸了每個數據幀之後,接收設備将另一個ACK位返回給發送方以确認成功接收到該幀:

簡述i2c總線(一文了解I2C總線工作原理)8

6.要停止數據傳輸,主機通過在将SDA切換為高電平之前切換SCL為高電平來向從機發送停止條件:

簡述i2c總線(一文了解I2C總線工作原理)9

有多個從設備的單一主設備

由于I2C使用尋址,因此可以從單個主設備控制多個從設備。使用7位地址,可以使用128(27)個唯一地址。使用10位地址并不常見,但提供1,024(210)個唯一地址。要将多個從器件連接到單個主器件,請像這樣連接它們,使用4.7K歐姆上拉電阻将SDA和SCL線連接到Vcc:

簡述i2c總線(一文了解I2C總線工作原理)10

有多個從設備及多個主設備

多個主設備可以連接到單個從設備或多個從設備。當兩個主設備嘗試通過SDA線同時發送或接收數據時,同一系統中出現多個主設備的問題。為了解決這個問題,每個主設備需要在發送消息之前檢測SDA線路是低還是高。如果SDA線為低電平,則表示另一個主控制器已控制總線,主控制器應等待發送消息。如果SDA線路很高,那麼傳輸信息是安全的。要将多個主設備連接到多個從設備,請使用下圖,使用4.7K歐姆上拉電阻将SDA和SCL線路連接到Vcc:

簡述i2c總線(一文了解I2C總線工作原理)11

I2C的優點和缺點

與其他協議相比,I2C聽起來很複雜,不容易在程序中實現而導緻數據丢失、無應答、“死等”等問題。但卻有很多優點:

優點

隻使用兩根電線

支持多個主服務器和多個從服務器

ACK / NACK位确認每個幀都已成功傳輸

硬件沒有UART那麼複雜

衆所周知且廣泛使用的協議

缺點

數據傳輸速率比SPI慢

數據幀的大小限制為8位

實現比SPI更複雜的硬件

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved