I2C匯流排 | I2C匯流排介紹

来源:https://www.cnblogs.com/feige1314/archive/2023/05/12/17393725.html
-Advertisement-
Play Games

I2C匯流排 | I2C匯流排介紹 I2C匯流排介紹 I2C(Inter - Intergrated Circuit)匯流排(也稱IIC或I2C)是由PHILIPS公司開發的兩線式串列匯流排,用於連接微控制器及其外圍設備,是微電子通行控制領域廣泛採用的一種匯流排標準。它是同步通信的一種特殊形式,具有介面少、控制 ...


I2C匯流排 | I2C匯流排介紹


目錄

  • I2C匯流排介紹

I2CInter - Intergrated Circuit)匯流排(也稱IICI2C)是由PHILIPS公司開發的兩線式串列匯流排,用於連接微控制器及其外圍設備,是微電子通行控制領域廣泛採用的一種匯流排標準。它是同步通信的一種特殊形式,具有介面少控制方式簡單器件封裝形式少通信速率高等優點。

HW-IIC_CIRCUIT

I2C有如下特點:

  1. (1)兩條匯流排線路:一條串列數據線SDA),一條串列時鐘線SCL:控制時序);

  2. (2)每個連接到匯流排的器件都可以通過唯一的地址聯繫主機,同時主機可以作為主機發送器或者主機發送器主機接收器

  3. (3)是一個真正的多主機匯流排,如果兩個或更多的主機同時初始化,數據傳輸可以通過衝突檢測仲裁防止數據被破壞;

  4. (4)串列的8位雙向數據傳輸位速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s

  5. (5)連接到相同匯流排的I2C數量只受到匯流排的最大電容400pF限制。

  • I2C匯流排術語

發送器:發送數據到匯流排的器件。

接收器:從匯流排接收數據的器件。

主機:初始化發送產生的時鐘信號和終止發送的器件。

多主機:同時有多於一個主機嘗試控制匯流排但不破壞傳輸。

仲裁:是一個在有多個主機同時嘗試控制匯流排但只允許其中一個控制匯流排並使傳輸不被破壞的過程。

同步:兩個或多個器件同步時鐘信號的過程。

  • I2C匯流排位傳輸

由於連接到I2C匯流排的器件有不同種類的工藝(CMOSNMOS、雙極性),邏輯0)和邏輯1)的電平是不固定的,它是電源VCC的相關電平決定,每傳輸一個數據位就產生一個時鐘脈衝,數據的有效形如下所示:

HW-IIC_DATA_VALID

SDA線上的數據必須在時鐘的高電平周期保持穩定。數據線的高或低電平狀態IIC位傳輸數據的有效性在SCL線的時鐘信號是低電平時才能改變起始停止條件如下圖所示:

HW-IIC_START_STOP

起始條件SCL線是電平時,SDA線從高電平向低電平切換。

停止條件SCL線是電平時,SDA線從低電平向高電平切換。

起始和停止條件一般都是由主機產生,匯流排在起始條件後被認為是處於忙碌狀態,在停止條件的某段時間後匯流排被認為處於空閑狀態。

  • IIC匯流排數據傳輸

1.位元組格式

發送到SDA線上的每個位元組必須為8位,每次傳輸可以發送的位元組數量不受限制。每個位元組後必須跟一個響應位。首先傳輸的是數據的最高位(MSB),如果從機要完成一些其他的功能後(如一個內部中斷服務程式)才能接受或者發送下一個完整的數據位元組,可以使時鐘線SCL保持低電平,迫使主機進入等待狀態,當主機準備好接收下一個數據位元組並釋放時鐘SCL後,數據繼續傳輸。

2.應答響應

HW-IIC_ACK

數據傳輸必須帶響應位,相關的響應時鐘脈衝由主機產生。在響應的時鐘脈衝期間發送器釋放SDA線(高)。在響應的時鐘脈衝期間,接收器必須將SDA線拉低,使它在這個時鐘脈衝的高電平期間保持穩定的低電平。通常被定址的接收器在接收到每個位元組後,會產生一個響應。當從機不能響應從機地址時(如它正在執行一些實時函數不能接收或發送),從機必須使數據線保持高電平,主機然後產生一個停止條件終止傳輸或者產生重覆起始條件開始新的傳輸。

如果從機接收器響應了從機地址,但是在傳輸了一段時間後不能接收更多位元組,主機必須再一次終止傳輸。這個情況用從機在第一個位元組後沒有產生響應來表示。從機使數據線保持高電平,主機產生一個停止或重覆起始條件。

如果傳輸中有主機接收器,它必須在從機不產生時鐘的最後一個位元組不產生響應,向從機發送器通知數據結束。

從機接收器必須釋放數據線,允許主機產生一個停止或重覆起始條件。

  • IIC匯流排定址方式

1.7位定址

第一個位元組的頭七位組成了從機地址,最低位(LSB)是第8位,它決定了普通的和帶重覆開始條件的7位地址格式方向。第一個位元組的最低位是“0”,表示主機會寫信息到被選中的從機;“1”表示主機會向從機讀信息。當發送一個地址後,系統中的每個器件都在起始條件後將頭7位與它的自己的地址進行比較,如果一樣,器件會判定它被主機定址,至於是從機接收器還是從機發送器,都有R/W位決定。

2.10位定址

10位定址與7位定址相容,而且可以結合使用。

10位定址採用了保留的1111XXX作為起始條件,或重覆起始條件的後第一個位元組的頭7位。10位定址不會影響已有的7位定址,有7位和10位地址的器件都可以連接IIC匯流排的10位地址格式到相同的IIC匯流排。它們都能用於標準模式和高速模式系統。

10位從機地址由起始條件或重覆起始條件後的頭兩個位元組組成。

第一個位元組的頭7位是11110XX的組合,其中最後兩位XX是10位地址的兩個最高位(MSB)。第一個位元組的第8位是R/W,決定傳輸的方向。第一個位元組的最低位是“0”,表示主機將寫信息到選中的從機,“1”表示主機將向從機讀信息。如果R/W位是“0”,則第二位元組是10位從機地址剩下的8位;如果R/W位是“1”,則下一個位元組是從機發給主機的數據。

  • 快速和高速模式

1.快速模式

快速模式器件可以在400kbit/s下接收和發送。

快速模式可以向下相容,可以和標準模式器件在0~100kbit/sIIC匯流排系統通訊。

2.高速模式

高速模式Hs模式)可以在高達3.4Mbit/s的位速率下傳輸信息。

向下相容快速模式和標準模式器件。

高速模式傳輸除了不執行仲裁和時鐘同步外,與快速模式系統有相同的串列匯流排協議和數據格式


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、問題引入 閱讀UNIX網路編程 捲1:套接字聯網API 第3版的前4個章節,覺得有必要對書籍上的源碼案例進行復現,並推敲TCP的C/S通信過程。 二、解決過程 2-1 server #include <sys/types.h> #include <sys/socket.h> #include < ...
  • Go 資料庫編程 一、連接資料庫 準備連接到資料庫 要想連接到 SQL 資料庫,首先需要載入目標資料庫的驅動,驅動裡面包含著於該資料庫交互的邏輯。 sql.Open() 資料庫驅動的名稱 數據源名稱 得到一個指向 sql.DB 這個 struct 的指針 sql.DB 是用來操作資料庫的,它代表了0 ...
  • 時隔20天,OpenAI從v0.0.1升級到了v0.2.0。與v0.0.1版相比,v0.2.0版主要做了以下改動: 把cmd目錄下微信公眾號的相關服務遷移到了這裡 完善了cmd下的測試服務,針對openAI庫里實現的各個介面都提供了響應的調用介面,服務運行後可以通過postman進行測試 完成了Fi ...
  • 問題概述 在Transactional方法中使用this方式調用另一個Transactional方法時,攔截器無法攔截到被調用方法,嚴重時會使事務失效。 類似以下代碼: @Transactional public void insertBlogList(List<Blog> blogList) { ...
  • 大家是否見過這種for迴圈,在for迴圈前加了個標記的: outerLoop: for (; ; ) { for (; ; ) { break outerLoop; } } 我之前有一次在公司業務代碼中見過有這種寫法的,沒在意,今天在看JDK線程池的代碼時,又看到ThreadPoolExecutor ...
  • 生成的代碼將和介面對應的參數、返回值一一對應,本文底層使用的工具為NSwag.exe,其他可替代的方案還有AutoSet.exe。 本文中生成的代碼將在編譯過程中自動編譯,類似grpc生成代碼的模式,如果使用AutoSet則需要手動引入代碼。 另外也可以使用NSwag對應的vs插件(https:// ...
  • 本文屬於 OData 系列 引言 在 OData 中,EDM(Entity Data Model) 代表“實體數據模型”,它是一種用於表示 Web API 中的結構化數據的格式。EDM 定義了可以由 OData 服務公開的數據類型、實體和關係。 EDM 也提供了一些規則來描述數據模型中的實體之間的關 ...
  • C# 實現winform軟體最小化到系統托盤,開機自啟動 問題描述 用戶的電腦是win7系統,應用系統在用戶電腦上運行時部分功能需要訪問註冊表,但是使用這些功能時會提示用戶沒有許可權訪問註冊表。原因分析 win7及後續高版本系統對用戶的許可權控制比較嚴,就算用戶的許可權較高,但用戶啟動程式時預設還是以普通 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...