I2C協議學習

????????I2C Bus(Inter-Integrated Circuit Bus)?最早是由Philips半導體(現被NXP收購)開發的兩線式串行總線,常用于微控制器與外設之間的連接。

一、概述

????????以下是 I2C 總線的一些特性:

  • 只需要兩條總線;一條串行數據線 (SDA) 和一條串行時鐘線 (SCL)。
  • ?連接到總線的每個設備都可以通過唯一的地址進行尋址,并且始終存在簡單的主/從關系;master可以作為主發送器或主接收器運行。
  • 沒有嚴格的波特率要求,例如 RS232,主機生成總線時鐘
  • 多主機總線,包括沖突檢測和仲裁,以防止兩個或多個主機同時啟動數據傳輸時數據損壞。
  • 串行、面向 8 位的雙向數據傳輸在標準模式(standard mode)下最高可達 100 kbit/s,在快速模式(fast mode)下最高可達 400 kbit/s,在快速模式 Plus 下最高可達 1 Mbit/s ,或在高速模式(high-speed mode)下高達 3.4 Mbit/s。
  • 在超快速模式下,面向 8 位的串行單向數據傳輸速度高達 5 Mbit/s。
  • 片上濾波可抑制總線數據線上的尖峰信號,以保持數據完整性。
  • ?可連接到同一總線的IC 數量僅受最大總線電容的限制。 在某些條件下可能允許更大的電容。

? ? ? ? 一個I2C應用如下:

二、I2C協議

?1、標準模式與快速模式協議

????????兩線一一串行數據(SDA)和串行時鐘(SCL)線在連接到總線的器件間傳輸信息。每個器件都有一個唯一的地址識別(無論是微控制器、LCD驅動器、存儲器或鍵盤接囗),而且都可以作為一個發送器或接收器(由器件的功能決定),很明顯,LCD驅動器只是一個接收器,而存儲器則既可以接收又可以發送數。除了發送器和接收器外,器件在執行數據傳輸時也可以被看作是主機或從機,主機是初始化總線的數據傳輸并產生允許傳輸的時鐘信號的器件,此時,任何被尋址的器件都被認為是從機。

????????SDA和SCL都是雙向線路,都通過一個電流源或上拉電阻連接到正的電源電壓,當總線空
閑時,這兩條線都是高電平

????????連接到總線的器件輸出級必須是漏極開路集電極開路才能執行線與的功能。

????????I2C 總線規范的強制要求和可選部分的使用以總結如下:

1) 數據有效性

????????在時鐘的高電平期間(SCL為高),SDA 線上的數據必須是穩定的。 只有當 SCL 線上的時鐘信號為 LOW 時,數據線的 HIGH 或 LOW 狀態才能改變。 每一個時鐘脈沖傳輸一個數據位。

2)啟動和停止條件

????????所有傳輸都以 START (S) 開始,并以 STOP (P) 結束。

  • 啟動條件:SCL為高電平時,SDA 線上的高電平到低電平轉換。
  • 停止條件:SCL為高電平時,SDA 線上的低電平到高電平轉換。

?

????????START 和 STOP 條件始終由主機生成。 在 START 條件之后,總線被認為是忙碌的。 在 STOP 條件之后的某個時間,總線被認為再次空閑。

????????如果生成重復的 START (Sr) 而不是 STOP 條件,則總線保持忙碌。 在這方面,START (S) 和重復 START (Sr) 條件在功能上是相同的。

3)字節格式

????????SDA 線上的每個字節都必須是 8 位。 每次傳輸可傳輸的字節數不受限制。 每個字節后必須跟一個確認位(ack)。 數據首先以最高有效位 (MSB)傳輸。 如果從機在執行其他功能(例如服務內部中斷)之前無法接收或發送另一個完整字節的數據,則它可以將時鐘線 SCL 保持為低電平以強制主機進入等待狀態。 當從設備準備好接收另一個字節的數據并釋放時鐘線 SCL 時,數據傳輸將繼續。

4)確認位

????????確認位(ACK)在每個字節之后發送。確認位允許接收器通知發送器該字節已成功接收并且可以發送另一個字節。主機生成所有時鐘脈沖,包括確認位的第九個時鐘脈沖。

????????確認信號定義如下:發送器在確認時鐘脈沖期間釋放 SDA 線,因此接收器可以將 SDA 線拉低,并在該時鐘脈沖的高電平期間保持穩定的低電平。還必須考慮建立和保持時間。

????????當 SDA 在第 9 個時鐘脈沖期間保持高電平時,這被定義為未確認信號。然后,主機可以生成一個停止條件來中止傳輸,或者生成一個重復的 START 條件來開始新的傳輸。有五個條件會導致 未確認信號(NACK) 的產生:

  1. 發送地址的總線上沒有接收器,因此沒有設備響應確認。
  2. 接收器無法接收或發送,因為它正在執行一些實時功能,還沒有準備好開始與主設備的通信。
  3. ?在傳輸過程中,接收方得到了它不理解的數據或命令。
  4. 在傳輸過程中,接收方不能再接收任何數據字節。
  5. 主接收器必須向從發送器發出傳輸結束信號。

5)時鐘同步

????????兩個主機可以同時在空閑總線上開始傳輸,并且必須有一種方法來決定哪一個控制總線并完成其傳輸。 這是通過時鐘同步和仲裁完成的。

????????在單主系統中,不需要時鐘同步和仲裁。

????????使用 I2C 接口與 SCL 線的線與連接來執行時鐘同步

????????這意味著 SCL 線上的高電平到低電平轉換會導致相關主設備開始對它們的低電平周期進行計數,并且一旦主時鐘變為低電平,它就會將 SCL 線保持在該狀態,直到達到時鐘高電平狀態。 但是,如果另一個時鐘仍在其低電平周期內,則該時鐘從低電平到高電平的轉換可能不會改變 SCL 線的狀態。 因此,SCL 線由具有最長低電平周期的主機保持低電平。 具有較短低電平周期的主機在此期間進入 高電平的等待狀態。

????????當所有相關的主機都計完它們的低電平周期時,時鐘線被釋放并變為高電平。 這樣主時鐘和 SCL 線的狀態之間就沒有區別了,所有的主時鐘開始計數它們的高電平周期。 第一個完成其高電平周期的主機再次將 SCL 線拉低。 這樣,一個同步的SCL時鐘就產生了,它的低電平周期由時鐘低電平周期最長的主機決定,高電平周期由時鐘高電平周期最短的主機決定

6)仲裁

????????仲裁與同步一樣,是指僅當系統中使用多個主設備時才需要的協議的一部分。從設備不參與仲裁程序。?只有當總線空閑時,主機才可以開始傳輸。

????????兩個主設備可以在 START 條件的最小保持時間內生成一個 START 條件,從而在總線上產生一個有效的 START 條件。然后需要仲裁來確定哪個主機將完成其傳輸。

????????仲裁是一位一位進行的。在每一位進行傳輸期間,當 SCL 為高電平時,每個主機都會檢查 SDA 電平是否與其發送的電平相匹配。這個過程可能需要很多位。只要傳輸相同,兩個主機實際上可以無誤地完成整個事務。第一次主機嘗試發送高電平,但檢測到 SDA 電平為低電平時,主機知道它已失去仲裁并關閉其 SDA 輸出驅動器。另一個主節點繼續完成其事務。在仲裁過程中不會丟失任何信息。失去仲裁的主機可以生成時鐘脈沖,直到失去仲裁的字節結束,并且必須在總線空閑時重新開始其事務。如果主機還包含從機功能并且在尋址階段失去仲裁,則獲勝的主機可能正在嘗試對其進行尋址。因此,丟失的主設備必須立即切換到其從設備模式。

?????????由于 I2C 總線的控制完全取決于競爭主機發送的地址和數據,因此沒有中央主機,也沒有總線上的任何優先級順序

7)讀寫控制

????????在 START 條件 (S) 之后,發送從地址。 該地址有 7 位長,后跟第 8 位,即數據方向位 (R/W)——“0”表示傳輸 (WRITE),“1”表示請求數據 (READ)

?????????數據傳輸總是由主機產生的停止條件 (P) 終止。 但是,如果主機仍然希望在總線上進行通信,它可以生成重復的 START 條件 (Sr) 并尋址另一個從機,而無需首先生成 STOP 條件。 在這樣的傳輸中,讀/寫格式的各種組合都是可能的。

2、?Ultra Fast-mode 協議

????????UFm(Ultra Fast-mode) I2C 總線是一種 2 線串行總線,可在高至 5 MHz 的頻率范圍內單向傳輸數據。當速度大于 1 MHz 時,驅動 LED 控制器和其他不需要反饋的設備最為有用。

???????? UFm I2C 總線協議基于標準 I2C 總線協議,該協議由 START、從地址、命令位、第九個時鐘和一個停止位組成。命令位僅為“寫”,第 9 個時鐘上的數據位被驅動為高電平,由于總線的單向特性而忽略 ACK 周期

????????2 線驅動器由 UFm 串行時鐘 (USCL) 和串行數據 (USDA) 組成。從設備包含一個唯一地址(無論是微控制器、LCD 驅動器、LED 控制器還是 GPO)并且僅作為接收器運行。 LED驅動器可能只是一個接收器,UFm可以支持,而存儲器可以接收和傳輸數據,UFm不支持。 UFm I2C 總線也不支持多主機功能。在 UFm 中,主機是唯一在總線上啟動數據傳輸并生成時鐘信號以允許傳輸的設備。尋址的所有其他設備都被視為從設備

? ? ? ? 其規范要求如下:

? ? ? ? ?USDA和USCL都是單向線路,當總線空閑時,兩條線都被輸出級的上晶體管拉其基本傳輸條件與標準模式一致。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253626.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253626.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253626.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ajax的簡單介紹

響應主體,就是服務器給我們返回的結果內容(瀏覽器里的responsive) 請求主體,是我們給服務器的數據 輸入域名發起一次請求,得到的可能是標簽,標簽可能還要在發一次請求 post怎么發請求:form表單 …

DM365 color space

YUV的幾種格式 420P:420P數據的存放方式一般是先存放Y,然后存放U,最后存放V的數據,每一個像素使用12bits(1.5BYTE)保存。 422P:422P數據的存放方式也是先存放Y,然后存放U,最后存放V的數據&…

JavaScript 標準參考教程-閱讀總結(三)

1、DOM模型 DOM 是 JavaScript 操作網頁的接口,全稱為“文檔對象模型”(Document Object Model)。它的作用是將網頁轉為一個 JavaScript 對象,從而可以用腳本進行各種操作(比如增刪內容)。 1)do…

P1136 迎接儀式

P1136 迎接儀式 題目描述 LHX教主要來X市指導OI學習工作了。為了迎接教主,在一條道路旁,一群Orz教主er穿著文化衫站在道路兩旁迎接教主,每件文化衫上都印著大字。一旁的Orzer依次擺出“歡迎歡迎歡迎歡迎……”的大字,但是領隊突然…

云服務器 VNC 遠程連接

此服務器買來是為了搭建IC EDA云的,因此選用的是centOS 6的環境,對各EDA軟件兼容較好。本人手頭拮據,因此買的是騰訊云活動期間的云服務器,只能說夠用吧。 一、桌面安裝 在云服務器控制臺登陸上遠程主機,依次執行下列…

Python自動化測試框架有哪些?

作者 | KITTY GUPTA 譯者 | 張健欣 令開發者萬分高興的是,開發自己的測試框架的日子終于結束了。以前,開發團隊接手一個項目并開始開發時,除了項目模塊的實際開發之外,他們不得不為這個項目構建一個自動化測試框架。一個測試框架應…

面試題——4種數組去重的方法

數組去重或者其衍生作為筆試題或者機試題出現的幾率也是很大的,寫出的方法越多,則讓面試官覺得你思維越開闊,那么成功的幾率當然就大了。 廢話不多說,下面來說說下面我整理的4中數組去重的方法 方法一: findInArr方法s…

MFc消息映射機制理解

何謂消息、消息處理函數、消息映射?消息簡單的說就是指通過輸入設備向程序發出指令要執行某個操作。具體的某個操作是你的一系列代碼。稱為消息處理函數。在SDK中消息其實非常容易理解,當窗口建立后便會有一個函數(窗口處理函數)開…

Effective C++ 條款11:在operator=中處理自我賦值

”自我賦值”發生在對象被賦值給自己時: class Widget { ... }; Widget w; ... w w; // 賦值給自己 a[i] a[j]; // 潛在的自我賦值 *px *py; // 潛在的自我賦值class Base { ... }; class Derived: public Base { ... }; void doS…

Demosaic算法學習

一、概述 由于成本和面積等因素的限定,CMOS圖像傳感器在成像時,感光面陣列前通常會有CFA (color filter array),CFA過濾不同頻段的光,因此,Sensor的輸出的RAW數據信號包含了3個通道的信息。 CFA的排列方式一般有以下幾種: 現在應用最廣泛的是Bayer CFA。…

Sql Server中查詢當天,最近三天,本周,本月,最近一個月,本季度的數據的sql語句...

--當天&#xff1a;select * from T_news where datediff(day,addtime,getdate())0--最近三天&#xff1a;select * from T_news where datediff(day,addtime,getdate())< 2 and datediff(day,addtime,getdate())> 0--本周&#xff1a;select * from T_news WHERE (DATEP…

linux設備驅動歸納總結(五):3.操作硬件——IO靜態映射【轉】

本文轉載自&#xff1a;http://blog.chinaunix.net/uid-25014876-id-83299.html linux設備驅動歸納總結&#xff08;五&#xff09;&#xff1a;3.操作硬件——IO靜態映射 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 有時候會覺…

UML中關聯,聚合,組合的區別及C++實現

類間關系 在類圖中&#xff0c;除了需要描述單獨的類的名稱、屬性和操作外&#xff0c;我們還需要描述類之間的聯系&#xff0c;因為沒有類是單獨存在的&#xff0c;它們通常需要和別的類協作&#xff0c;創造比單獨工作更大的語義。在UML類圖中&#xff0c;關系用類框之間的連…

sql server management studio 快速折疊object explorer中的instance

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/6e20fa7a-c0a9-496b-89b2-19c6bd996ffc/how-to-collapse-object-explorer-tree-in-management-studio?forumsqltools home鍵&#xff0c;回到top level。 然后F5刷新&#xff0c;就會自動折疊了轉載于:https://www.…

自動白平衡算法學習

一、概述 1、顏色恒常性 首先,從色彩學的角度,自然界中的任一種顏色都可以用紅、綠、藍三種顏色混合而成,因此這三種顏色被做為最常用的三原色,即RGB 三原色。 其次,眼睛對于色彩的察覺是由于光照射在物體之上,物體會吸收一部分波長的光,而其被物體反射的那部分波長的光…

自動曝光算法學習

一、概述 在一個完整的成像系統中,所得圖像的亮度由四個方面因素所決定:環境光照強度、相機的光圈大小、曝光時間、信號增益。從這四個因素可以看出,首先環境光照強度是由外界環境光照所決定的,達不到人為任意控制;因此想要調整圖像亮度至合適的程度,需要考慮對光圈大小、…

cocos2d-x 幀動畫

ani cc.Animation:create(); ...... local animate cc.Animate:create(ani); s:runAction(animate); 發現一個問題&#xff0c;s如果是Node實例話就報錯了&#xff0c;s必須是Sprite實例。轉載于:https://www.cnblogs.com/qianwang/p/6249720.html

編寫一個簡單的spring MVC程序

一、下載和安裝spring框架 進入http://repo.springsource.org/libs-release-local/org/springframework/spring/4.2.0.RELEASE/下載一個spring框架&#xff0c;然后打開lib目錄里的jar文件拷貝到項目的WEB-INF/lib目錄下。 二、配置web.xml文件 ?1234567891011121314151617181…

DM368 Uboot

這三個參數均有UBOOT直接傳遞給內核&#xff0c;所以要想知道他們具體的作用&#xff0c;需要根系內核模塊的結構。 dm365_imp.oper_mode 是指在內核模塊中內存空間采用連續、或者不連續模式。 davinci_capture.device_type 是你的捕獲設備的…

7. B+樹

一、B樹是應文件系統所需而產生的一種B樹的變形樹 1. 定義&#xff08;使用階數m來定義&#xff09; 除了根結點外&#xff0c;其他非終端結點最多有m個關鍵字&#xff0c;最少有?m/2?個關鍵字結點中的每個關鍵字對應一個子樹所有的非終端結點可以看成是索引部分&#xff0c;…