I2C總線是如何工作的

2020-11-25 電子發燒友

I2C總線是如何工作的

發表於 2019-09-13 15:46:00

  I2C總線簡介

  I2C結合了SPI和UART的優點。使用I2C,您可以將多個從設備連接到單個主設備上(如SPI),並且可以讓多個主器件控制單個或多個從器件。當您希望有多個微控制器記錄數據到單個存儲卡或將文本顯示到單個LCD時,這非常有用。

  I2C總線是如何工作的

  使用I2C時,數據被轉換成messages,messages則被分解為數據幀。每條messages都有一個地址幀,其中包含從站的二進位地址,以及一個或多個包含正在傳輸的數據的數據幀。該消息還包括每個數據幀之間的啟動和停止條件,讀/寫位和ACK/NACK位:

  

  啟動條件:在SCL線路從高電平切換到低電平之前,SDA線路從高電平切換到低電平。

  停止條件:SCL線路從低電平切換到高電平後,SDA線路從低電平切換到高電平。

  地址幀:每個從站唯一的7或10位序列,用於在主站想與之通信時識別從站。

  讀/寫位:單個位,指定主器件是向從器件發送數據(低電壓電平)還是從器件請求數據(高電壓電平)。

  ACK/NACK位:消息中的每個幀後跟一個應答/不應答位。如果成功接收到地址幀或數據幀,則從接收設備向發送方返回ACK位。

  地址

  I2C沒有像SPI這樣的從選擇線,因此它需要另一種方法讓從器件知道數據正在發送給它,而不是另一個從器件。它通過地址來做到這一點。地址幀始終是新消息中起始位之後的第一幀。

  主設備將與其通信的從設備的地址發送給與其連接的每個從設備。然後,每個從設備將從主設備發送的地址與其自己的地址進行比較。如果地址匹配,則將低電壓ACK位發送回主機。如果地址不匹配,則從器件不執行任何操作,SDA線保持高電平。

  讀/寫位

  地址幀在末尾包括一個位,用於通知從設備,主設備是想要向其寫入數據還是從主設備接收數據。如果主設備想要向從設備發送數據,則讀/寫位是低電平。如果主設備向從設備請求數據,則該位是高電平。

  數據框架

  在主設備檢測到來自從設備的ACK位之後,準備好發送第一個數據幀。

  數據幀始終為8位長,並以最高有效位先發送。緊接著每個數據幀的ACK/NACK位以驗證幀已被成功接收。在發送下一個數據幀之前,主機或從機必須接收ACK位(取決於發送數據的人)。

  在發送了所有數據幀之後,主設備可以向從設備發送停止條件以停止傳輸。停止條件是SCL線上從低電平到高電平轉換後,SDA線上從低電平變為高電平,SCL線保持高電平。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 救活你的I2C總線故障方案出爐了!
    本文主要針對 i2c 設備,講解如何解決 i2c 設備主機與從機直接無法正常數據交互的問題,側重點是針對硬體設計不太合理、i2c 設備設計不標準導致總線故障的情況,並且通過分析現象,提出解決方案。對於在設備初始化中,沒有設置相應的寄存器或者發送命令,而導致的無法獲取想要的數據情況,不作詳細介紹。
  • Linux下I2C總線EEPROM驅動程序設計方法
    i2c-core將總線驅動程序體系一分為二,相互獨立。可以針對某個I2C總線設備來設計一個I2C設備驅動程序,而不需要關心系統的I2C總線控制器是何種類型,所以提高了其可移植性。另一方面,在設計I2C總線驅動時也可以不要考慮其將用來支持何種設備。因為i2c-core提供了統一的接口,所以也為設計這兩類驅動提供了方便。
  • 樹莓派怎樣連接多個I2C設備
    i2c總線可以處理多個設備,但是它們應具有不同的i2c地址。有些i2c設備具有用於設置其他i2c地址的跳線,但許多設備卻沒有。在這種情況下,您可以使用i2c多路復用器(硬體)來旋轉i2c SDA(數據)和SCL(時鐘),也可以創建其他i2c總線或更多。
  • 實戰經驗吐血推薦:怎樣在Linux環境下輕鬆實現基於I2C總線的EEPROM...
    還要對I2C總線驅動的體系結構有深入的了解。筆者在開發過程中使用設備型號為AT24C01A的EEPROM來測試I2C總線驅動。  2工作原理概述  在介紹I2C總線結構之前。要搞清楚兩個概念:I2C總線控制器和I2C設備。
  • 飛利浦推出業界首款快速模式I2C總線控制器
    PCA9564可作為一個I2C 主設備或從設備,以及作為傳輸器或接收器,同時控制所有I2C總線的特殊序列、協議、仲裁、時序,而無需添加外在時鐘。通過該設備,沒有集成I2C埠的微控制器和微處理器可以與I2C或SMBus組件接口,並在需要多重I2C總線埠的地方提供附加埠。
  • 示波器和I2C時序波形圖的關係分析
    示波器和I2C時序波形圖的關係分析 周碧俊 發表於 2018-08-03 16:57:53 I2C簡介 I2C總線只需要兩條線
  • I2C總線設計注意事項
    當時在使用avr CPU設計數據採集器產品的CPU主板,外掛了Silicon lab的溫溼度傳感器Si7013,實時時鐘,主要實現溫溼度、時鐘及電流電壓等信號通過I²C總線到達CPU進行處理,並且由MCU EFM32WG290F64控制在液晶上和上位機界面上的CPU自帶的I²C總線外掛的六個I²C從設備,如下圖1所示。
  • 淺談I2C總線,I2C接口和SPI接口的作用相同
    I2C 總線有時候也叫作 IIC,它已有20多年的歷史了。I2C 接口和 SPI 接口的作用相同,但二者的使用方法有些不同。  I2C 總線用兩根線來連接多支路總線中的多個設備。這種總線是雙向、低速的,並與公共時鐘同步。可以直接將一個設備接到 I2C 總線上或是從該總線上取下,而不會影響其他設備。
  • spi與i2c總線有什麼區別
    SPI協議概括   SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於SPI的設備共有的,它們是SDI(數據輸入)、SDO(數據輸出)、SCLK(時鐘)、CS(片選)。
  • I2C總線概述及時序總結
    其中輸出為漏極開路的場效應管,輸入緩衝為一隻高輸入阻抗的同相器,這種電路具有兩個特點:1)由於SDA、SCL為漏極開路結構(OD),因此它們必須接有上拉電阻,阻值的大小常為 1k8, 4k7 and 10k ,但1k8 時性能最好;當總線空閒時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線與關係。
  • I2C總線驅動在嵌入式系統中的兩種實現
    1 引 言I2C總線(Inter-IC Bus)是一種通用的串行總線,是用於IC器件之間連接的二線制總線。他通過串行數據線(Serial Data Lines,SDL)及串行時鐘線(Serial ClockLine,SCL)兩線在連接到總線上的器件之間傳送信息,並根據地址識別每個器件。一個或多個微控制器以及外圍器件可以通過I2C總線接口非常方便的連接在一起構成系統。這種總線結構的連線和連接引腳少,器件間總線簡單。
  • I2C總線中上拉電阻、電源電壓、總線電容三者之間的
    連接到正的電源電壓+VDD,當總線空閒時這兩條線路都是高電平。連接到總線的器件輸出級必須是漏極開路或集電極開路才能執行線與的功能。I2C 總線上數據的傳輸位速率,在標準模式下可達100kbit/s,快速模式(F/S)下可達400kbit/s,高速模式(Hs)下可達3.4Mbit /s。2、連接到相同總線的IC數量只受到總線的最大電容400pF限制。如果總線線路的負載電容升高,位速率將逐漸下降。
  • 詳解I2C總線鍵盤電路以及驅動程序設計
    允許多主機控制,具有裁決和同步功能,可隨意添加或摘除總線上的子器件等諸多優點,所以已經被廣泛應用。晶片採用400Kps,5.5V 容限2 線串行接口,工作電壓2.4 ~ 3.6V,4 個I2C 地址選擇。與MAX7348同系列的還有MAX7347 和MAX7349 等。1.
  • 基於VHDL/CPLD的I2C串行總線控制器設計及實現
    常見的串行總線有USB、IEEE1394、I2C等,其中I2C總線具有使用簡單的特點,在單片機、串行E2PROM、LCD等器件中具有廣泛的應用。  I2C(Inter IC BUS)是Philips公司開發的用於晶片之間連接的總線。
  • 汽車can總線工作原理及測量方法詳解
    分析CAN總線系統產生故障的原因一般有以下三種:   1.汽車電源系統引起的故障:汽車電控模塊的工作電壓一般在10.5-15.0V,如果汽車電源系統提供的工作電壓不正常,就會使得某些電控模塊出現短暫的不正常工作,這會引起整個汽車CAN總線系統出現通信不暢。
  • CAN總線的拓撲如何設計最安全?
    隨著CAN總線的應用越來越廣泛,工程師在面對各種不同工況下,如何選擇合適的網絡拓撲方式就變成了一個讓人頭疼的問題。這篇文章會介紹主流的幾種總線拓撲方式,可以幫您快速了解如何選擇。一、直線型拓撲圖1 直線型拓撲直線型拓撲也叫總線型拓撲,如圖1所示,所有的節點都接到同一總線上,總線上任意節點發送信息
  • CAN總線—PROFIBUS-DP總線網關的實現方法
    工廠在擴建,改建等過程中很可能會選用與原先現場設備總線標準不同的產品,這些設備由於使用不同的現場總線,彼此間不能實現數據共享,於是就降低了設備間功能互補的優點。因此針對多種總線共存的客觀事實,探討如何解決不同現場總線系統的互聯有著重要的現實意義。