I2C匯流排協議

来源:https://www.cnblogs.com/laoyaodada/archive/2018/02/01/8399424.html
-Advertisement-
Play Games

1 I2C匯流排 IIC匯流排由數據線SDA和時鐘線SCL兩條線構成通信線,既可以發送數據,又可以接收數據。 IIC匯流排典型電路:SDA和SCL連接線上有兩個上拉電阻,所有的IIC設備並聯在匯流排上。 2 I2C信號 IIC匯流排通信有著嚴格的時序,如果時序錯誤將會無法通信。IIC匯流排在傳送數據的過程中,有 ...


1  I2C匯流排

IIC匯流排由數據線SDA和時鐘線SCL兩條線構成通信線,既可以發送數據,又可以接收數據。

IIC匯流排典型電路:SDA和SCL連接線上有兩個上拉電阻,所有的IIC設備並聯在匯流排上。

2  I2C信號

IIC匯流排通信有著嚴格的時序,如果時序錯誤將會無法通信。IIC匯流排在傳送數據的過程中,有三種信號。分別是開始信號、結束信號和應答信號。

(1)開始信號

SCL為高電平時,SDA由高電平向低電平跳變,時序圖:

 

(2)結束信號

SCL為高電平時,SDA由低電平向高電平跳變,時序圖:

 

(3)應答信號

發送器每發送一個位元組,就在時鐘信號脈衝第9位釋放數據線,由接收器反饋一個應答信號。應答信號為低電平時,認為有效應答ACK,表示接收器已經成功接收了該位元組,應答信號為高電平時,認為無效應答ACK,表示接收器沒有成功接收該位元組。

(4)空閑信號

SDA和SCL兩條信號線同時處於高電平時,規定匯流排為空閑狀態。

3  數據傳輸

所有數據(地址和數據)都是以8位一個位元組為單位傳送的。

按照IIC匯流排規範約定,傳送的消息由開始信號、定址位元組、數據位元組、應答信號及停止信號組成。

主機發送開始信號後,就發出定址信號。器件地址由7位和10位兩種,這裡只介紹7位地址定址。定址信息由一個位元組構成,高7位為地址位,最低位為傳輸方向位(R/W)。方向位(R/W)為0時,表明主機對從機寫操作。方向為(R/W)為1時,表明主機對從機讀操作。

定址位元組位定義:

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

從機地址

R/W

主設備發送地址時,匯流排上的每個從設備都將這7位地址碼與自己的地址進行比較,如果相同,則認為自己被主設備定址,根據R/W位將自己確認為發送器或接收器。

從設備的地址由固定部分和用戶自定義部分組成:

1、固定部分:位7-4共4位決定。這是由從設備的生產廠商生產時就已經確定的值。

2、用戶自定義部分:位3-1共3位決定。這三位通常對應設備的3個引腳(A0-A2)。把3個引腳接到不同的電平上,就可以形成一個3位的數值。

數據位的有效性規定:IIC匯流排進行數據傳送時,時鐘信號SCL為高電平期間,數據線上的信號SDA必須保持穩定。只有SCL為低電平期間SDA上的電平才允許變化。因此在寫數據時,要在SCL為低的時候改變SDA。讀數據時要在SCL為高的時候讀SDA。

 


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

-Advertisement-
Play Games
更多相關文章
  • centos7與之前的版本都不一樣,修改主機名在/ect/hostname 和/ect/hosts 這兩個文件控制 首先修改/ect/hostname vi /ect/hostname 打開之後的內容是: localhost.localdomain 把它修改成你想要的名字就可以,比如: niukou ...
  • 1.echo 輸出字元,或者輸出變數的值。 2.date %Y:年; %m:月; %d:日; %H:小時,24小時制; %I:小時,12小時制; %M:分鐘; %S:秒; %F:年-月-日; %T:時-分-秒; -s:設置日期和時間; 3.reboot 重啟電腦。 4.poweroff 關機。 5 ...
  • 1. Oracle官網下載JDK linux安裝包,這裡使用的是【jdk-8u11-linux-i586.tar.gz】 註:下載前先用命令查看系統位數再下載對應位數的JDK【[root@localhost /]# getconf LONG_BIT】 2. 在 usr 文件夾下新增 java 文件夾 ...
  • 這裡介紹Linux下兩種安裝mysql的方式:yum安裝和源碼編譯安裝。 1. yum安裝 (1)首先查看centos自帶的mysql是否被安裝: (2)下載MySQL官網的yum倉庫:https://dev.mysql.com/downloads/repo/yum/, (3)使用mysql yum ...
  • shell 什麼是shell bash shell bash的配置文件 shell 登錄兩種方式 bash中的退出時的任務 ...
  • 編譯安裝 程式包編譯 編譯安裝 ...
  • I2C設備驅動要使用i2c_driver和i2c_client數據結構並填充i2c_driver中的成員函數。i2c_client一般被包含在設備的私有信息結構體xxx_data中,而i2c_driver則適合被定義為全局變數並初始化。下麵提供i2c_driver的初始化模版: 1 Linux I2 ...
  • 1 I2C子系統框架 Linux I2C子系統分成三部分:I2C核心層、I2C匯流排驅動和I2C設備驅動。 (1)I2C核心層 I2C核心提供了I2C匯流排驅動和設備驅動的註冊、註銷方法,I2C通信方法(即algorithm)上層的與具體適配器無關的代碼以及探測設備、檢測設備地址的上層代碼等。核心層的代 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...