ARM之I2C總線協議介紹

I2C總線協議

概述:I2C(Inter-Integrated Circuit)總線是由PHILIPS公司開發的兩線式串行總線,用於連接微控制器及其外圍設備,是微電子通信控制領域掛規範採用的一種總線標準。是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優點。Exynos4412芯片包含8個通用I2C接口控制器。
I2C主從機設備連接
在這裏插入圖片描述

I2C總線物理連接在這裏插入圖片描述
特點

  • 半雙工。
  • 只要求兩條總線線路:一條串行數據線SDA(Serial Data Address),一條串行時鐘線(Serial Clock Address)。
  • 每個連接到總線的器件都可以通過唯一的地址。
  • 真正的多主機總線,支持衝突檢測和仲裁,防止數據破壞。
  • 串行8位雙向數據傳輸位。
  • 速率在標準模式下可達100kbit/s、快速模式下可達400kbit/s、高速模式下可達3.4Mbit/s。
  • 片上的濾波器可以濾去總線數據線上的毛刺波保證數據完整。
  • 連接到相同總線的IC數量只受到總線的最大電容400pF限制。

I2C總線內容

I2C引腳

  • SDA(I2C數據引腳);
  • CLK(I2C時鐘引腳);
    在這裏插入圖片描述

I2C信號類型

I2C總線在數據傳輸過程中有三種信號,它們分別是:開始信號(S)、結束信號(P)、應答信號(ACK)。
在這裏插入圖片描述
開始信號:SCL爲高電平時,SDA由高電平向低電平跳變,開始傳送數據。
結束信號:SCL爲高電平時,SDA由低電平向高電平跳變,結束傳送數據。
應答信號:接收設備在接收到8bit數據後,在第9個時鐘週期,向發送設備發送低電平,表示成功收到數據。

I2C總線時序

當I2C總線是空閒的,SDA和SCL線都是高電平。I2C數據通信的主機發送開始信號(S)起始,到主機發送停止信號(P)結束。在開始信號和結束信號之間以字節爲單位傳輸數據,每個字節後必須跟一個響應位,每次傳輸可以發送的字節數量不受限制。數據是一位一位地進行傳輸,先傳輸高位(MSB),再傳輸低位(LSB)。
發送器作爲數據的發送方,接收器作爲數據的接收方。根據SCL上的時鐘信號進行數據傳輸同步,保證數據有效傳輸。SCL時鐘爲低電平週期時發送器發送數據,SDA線上數據可以發送變化,SCL時鐘爲高電平週期時接收器接收數據,SDA線上數據必須保持穩定。
在這裏插入圖片描述

I2C總線ACK信號

爲了完成一個字節的發送操作,接收器必須將一個ACK信號發送到發送器。ACK信號在SCL線的第9個時鐘週期產生。發送完一個字節後,第9個時鐘週期發送器釋放對SDA線的控制,SDA線由於上拉電阻的作用恢復到高電平。接收器如果接收數據成功,將SDA線置低電平作爲ACK信號。發送器收到ACK信號,繼續發送數據;接收器如果接收數據失敗,則在第9個時鐘週期不動作,SDA一直爲高電平、發送器沒有接收到ACK信號,就會發出停止信號停止本次通信或開始發送開始信號,重新發送。
在這裏插入圖片描述

I2C設備地址

在這裏插入圖片描述
I2C設備用一個7位或10位的數字,唯一標識自己。方便主機尋找自己,建立I2C通信。I2C設備地址由固定地址和可編程部分構成。這樣I2C總線就可以支持一個I2C總線上掛載多個同樣的器件,而地址不同。I2C地址的可編程部分最大數量就是可以連接到I2C總線上相同器件的數量。一般可編程的部分的值,由特定引腳的電器連接決定。

I2C總線地址尋址及數據傳輸方向控制

I2C總線的尋址過程是通常在起始信號後的第一個字節決定了主機選擇哪一個從機。例外的情況是可以尋址所有器件的廣播地址,使用這個地址時理論上所有器件都會發出一個響應,但是也可以使器件忽略這個地址。
第一個字節的頭7位組成了從機地址,第8位它決定了數據傳輸的方向,第一個字節的最低位是0表示主機會寫信息到被選中的從機;1表示主機會向從機讀信息;
7位尋址
在這裏插入圖片描述
10位尋址和7位尋址兼容,而且可以結合使用。10位尋址過程是起始信號後的頭兩個字節,通常決定了主機要尋址哪個從機。10位從機地址由在起始條件信號或重複起始信號後的頭兩個字節組成。第一個字節的頭7位是11110XX的組合,其中最後兩位XX是10位地址的兩個最高位(MSB)。第一個字節的第8位是R/W位,決定了數據傳輸的方向,第一個字節的最低位是=0,表示主機會寫信息到被選中的從機;1表示主機會向從機讀信息。
在這裏插入圖片描述

發佈了34 篇原創文章 · 獲贊 41 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章