I2C通訊協議

来源:http://www.cnblogs.com/linhaostudy/archive/2017/04/14/6709811.html
-Advertisement-
Play Games

1、基本概念 主機 初始化發送,產生時鐘信號和終止發送的器件 從機 被主機定址的器件 發送器 發送數據到匯流排的器件 接收器 從匯流排接收數據的器件 多主機 同時有多於一個主機嘗試控制匯流排 但不破壞報文 仲裁 是一個在有多個主機同時嘗試控制匯流排,但只允許其中一個控制匯流排並使報文不被破壞的過程 同步 兩個 ...


1、基本概念

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

 

      從機             被主機定址的器件

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

 

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

 

      多主機         同時有多於一個主機嘗試控制匯流排 但不破壞報文

 

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

 

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

 

 

 

2、硬體結構

每一個I2C匯流排器件內部的SDASCL引腳電路結構都是一樣的,引腳的輸出驅動與輸入緩衝連在一起。其中輸出為漏極開路的場效應管、輸入緩衝為一隻高輸入阻抗的同相器。這種電路具有兩個特點:

(1)由於 SDASCL 為漏極開路結構,藉助於外部的上拉電阻實現了信號的線與邏輯; 
2)引腳在輸出信號的同時還將引腳上的電平進行檢測,檢測是否與剛纔輸出一致。為 時鐘同步匯流排仲裁提供硬體基礎。

 

 

 

3、時鐘同步

 

如果從機希望主機降低傳送速度可以通過將SCL主動拉低延長其低電平時間的方法來通知主機,當主機在準備下一次傳送發現SCL的電平被拉低時就進行等待,直至從機完成操作並釋放SCL線的控制控制權。這樣以來,主機實際上受到從機的時鐘同步控制。可見SCL線上的低電平是由時鐘低電平最長的器件決定;高電平的時間由高電平時間最短的器件決定。這就是時鐘同步,它解決了I2C匯流排的速度同步問題。

 

 

 

 

 

4、主機發送數據流程

1)主機在檢測到匯流排為空閑狀態(即 SDASCL 線均為高電平)時,發送一個啟動信號“S”,開始一次通信的開始

2)主機接著發送一個命令位元組。該位元組由 7 位的外圍器件地址和 1 位讀寫控制位 R/W組成(此時 R/W=0

3)相對應的從機收到命令位元組後向主機回饋應答信號 ACKACK=0

4)主機收到從機的應答信號後開始發送第一個位元組的數據

5)從機收到數據後返回一個應答信號 ACK

6)主機收到應答信號後再發送下一個數據位元組

7)當主機發送最後一個數據位元組並收到從機的 ACK 後,通過向從機發送一個停止信號P結束本次通信並釋放匯流排。從機收到P信號後也退出與主機之間的通信。

 

註意:主機所接收數據的數量是由主機自身決定,當發送非應答信號/A”時從機便結束傳送並釋放匯流排(非應答信號的兩個作用:前一個數據接收成功,停止從機的再次發送)。

 

 

 

 

I2C位傳輸
   數據傳輸:SCL為高電平時,SDA線若保持穩定,那麼SDA上是在傳輸數據bit
   SDA發生跳變,則用來表示一個會話的開始或結束(後面講)
   數據改變:SCL為低電平時,SDA線才能改變傳輸的bit

 

 

I2C開始和結束信號
   開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。
   結束信號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送數據。

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 類似Windows, Linux也是一個操作系統,Linux是一套開放源代碼程式,並可以自由傳播的類Unix操作系統軟體,多用戶,多任務並且支持多線程和多CPU的操作系統。 Linux系統主要被應用於伺服器端,嵌入式開發和個人PC桌面3大領域,其中伺服器端領域是重中之重。 大型,超大型互聯網企業(百 ...
  • grep的作用:文本搜索工具,根據用戶指定的“模式”對目標文件逐行進行匹配檢查:列印匹配到的行。 模式:正則表達式編寫的過濾條件。 正則表達式(REGEXP):由一類特殊字元及文本字元所編寫的模式,其中有一些字元不表示字元字面意義,而表示控制或通配的功能。 分成兩類: 基本正則表達式:BRE 擴展正 ...
  • Ubuntu16.04安裝NVIDIA驅動時的一些坑與解決方案 ...
  • AR8033協商成1000M工作模式時,ping包丟失嚴重;通過關閉Green Feature可規避。 ...
  • 打算用家裡的台式機啟用ssh server用筆記本ssh登入linux家裡電腦 lubantu 使用命令sudo apt-get install openssh-server安裝openssh server安裝成功後ps查看是否有sshd進程然後在筆記本windows下使用xshell訪問 ...
  • 簡單的總結一下前段時間學習Linux的成果 查看 TCP 22 埠是否打開1、列出所有埠:[root@Demon proc]# netstat -ntlpActive Internet connections (only servers)Proto ... 一、查看 TCP 22 埠是否打開1 ...
  • 一、在實際生產環境中tomcat啟動是在bin目錄下採用自帶腳本startup.sh啟動;使用shutdown.sh關閉。如下圖: 再如果對於新手來講在不知道路徑情況下重啟是一件頭痛的事情(註意沒有reload,所以重啟只能shutdown.sh在startup.sh);而且這裡還有一個坑等著: 什 ...
  • 需求:有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由於各種原因有可能中斷。當進程中斷的時候我需要他能自動重啟,保證服務一直在跑著。基於整個需求,一開始想的是起一個腳本,監聽該服務的埠,一旦發現埠占用被解除,立即重新執行命令。但是後來發現linux已經有了類似的東西,即今日的主角Super ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...