0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么內(nèi)部集成電路 (I2C) 總線使連接 IC 變得如此簡單——以及如何使用該總線

海闊天空的專欄 ? 來源:Art Pini ? 作者:Art Pini ? 2023-10-03 14:38 ? 次閱讀

作者:Art Pini

若在印刷電路板(PC 板)上使用并行總線來實現(xiàn)集成電路間的通信和控制,這樣做不太符合實際。即便是 8 位處理器,僅數(shù)據(jù)方面就要使用 16條線,而地址總線需要的線數(shù)還要更多。如果一條共享的通信總線上需要使用多個 IC,那就更成問題了。這是因為空間不夠用,無法滿足所有這些 PC板走線。解決辦法是使用內(nèi)部集成電路 (I2C) 總線等串行通信總線來鏈接 IC。這種雙線串行總線可用于解決該問題。

本文將介紹 I2C 總線的起源,及其如何在 IC 之間提供有效的串行鏈路。然后,本文將討論 I2C總線的物理實現(xiàn)方式、協(xié)議結(jié)構(gòu),以及這種無處不在的通信總線的常見應(yīng)用。其中將使用 Microchip Technology 的 I2C接口和解決方案示例進行演示。此外,本文還將討論 I2C 與系統(tǒng)管理總線 (SMBus) 的異同。

什么是 I2C 總線?

在 1980 年代早期,I2C 總線由 Phillips Semiconductors(現(xiàn)為 NXP Semiconductors)開發(fā)。這是一種簡單的雙向雙線總線,可在一塊共用 PC 板上實現(xiàn)集成電路的有效通信和控制。最早的總線規(guī)格于 1992
年完成,隨后即成為行業(yè)公認標準,并且 50 多家 IC 制造商的元器件中都提供該標準。這種大規(guī)模的部署允許采用一種系統(tǒng)方法進行設(shè)計,可以輕松地將 IC 納入I2C 總線結(jié)構(gòu)中,而無需進行定制設(shè)計。其他幾種專用總線(例如 SMBus 和電源管理總線 (PMBus))以及另外一些總線均采用該基本架構(gòu)。

I2C 總線是一種可尋址總線,因此可以鏈接多個 IC 和傳感器;7 位或 10 位地址字段允許主控器件向選定器件發(fā)送消息。最初,I2C 的最大時鐘速度為100 千赫茲 (kHz),但是經(jīng)過多年的發(fā)展,更高速的工作模式已將這一限制推高至 3.4 兆赫茲 (MHz)。

I2C 總線使用兩條線,即指定為串行數(shù)據(jù)線路 (SDA) 和串行時鐘線路 (SCL)。SDA 和 SCL是開漏/集電極雙向線路,并通過電流源或上拉電阻連接到正電源總線。該總線可以連接多個器件,最大數(shù)量受總線電容限制。主控器件控制著總線,總線上的每個器件都有唯一的地址。主控器件可以通過總線收發(fā)數(shù)據(jù)(圖 1)。I2C 支持多主控操作,其沖突檢測和仲裁功能可防止兩個或更多主控器件同時啟動數(shù)據(jù)傳輸。不過,本文將重點介紹單主控配置。

1.png

圖 1 顯示了 Microchip Technology 的 PKSERIAL-I2C1 I2C 演示板原理圖。該演示板使用五種不同的器件來實現(xiàn) I2C總線,包括 EEPROM、溫度傳感器、12 位模數(shù)轉(zhuǎn)換器ADC)、10 位數(shù)模轉(zhuǎn)換器DAC) 和 8位串行轉(zhuǎn)并行轉(zhuǎn)換器。主控器件不在板上,而是通過連接器 P1 連接。SDA 和 SCL 總線線路以綠色框出,上拉電阻器以藍色圈出。

SDA 和 SCL 電平一般為正電源電壓的固定百分比,通常表示為 VDD。對于邏輯“1”(高)和邏輯“0”(低),參考電平分別設(shè)置為 VDD 的 70%和 30%。

時鐘信號以猝發(fā)模式出現(xiàn),每個傳輸?shù)臄?shù)據(jù)位使用一個時鐘。時鐘處于高電平時,SDA 線路上的數(shù)據(jù)必須有效。只有在時鐘處于低電平時,才能更改數(shù)據(jù)。

從設(shè)計人員的角度來看,由于 I2C 接口已集成到 IC 中而無需設(shè)計接口,因此新項目得以簡化。每個器件只需直接連接到總線。在總線上可以添加或移除IC,而不會影響其他電路(假設(shè) IC 的總數(shù)不會超越電容極限)。簡單的雙線總線可最大程度地減少每個 IC 上的引腳數(shù)和印刷電路板上的走線數(shù)。

I2C 協(xié)議

該總線為 8 位導向協(xié)議,以字節(jié)為單位進行通信。如上所述,在現(xiàn)在所謂的標準模式中,最初的最大時鐘速率為 100 kHz。如今,總線在快速模式下支持 400千比特/秒 (Kb/s),在快速增強模式下支持高達 1 兆比特/秒 (Mb/s),在高速模式 (Hs-Mode) 下支持高達 3.4 Mb/s。

通過圖示總線上的典型傳輸,可以很好地說明 I2C 協(xié)議(圖 2)。屏幕圖像的來源是 Teledyne LeCroy
示波器,其包含低速串行數(shù)據(jù)觸發(fā)器和解碼選件 WS4KHD-EMB TD。該示波器選件可以觸發(fā)和解碼多達 19 個低速串行數(shù)據(jù)接口,其中就包括 I2C。

2.png

該示波器可以在特定的串行事件觸發(fā),包括起始、停止、丟失應(yīng)答 (ACK)、地址、數(shù)據(jù)、地址加數(shù)據(jù)、幀長和 EEPROM數(shù)據(jù)傳輸。串行數(shù)據(jù)標準的協(xié)議組件由帶色碼的疊加層標識。每個協(xié)議字段都以二進制、十六進制或 ASCII 解碼,并且所選代碼顯示在疊加層內(nèi)。

SDA 信號顯示為黃色跡線,而 SCL信號顯示為紅色跡線?;疑寞B加框指示起始和停止功能。磚紅色疊加層標記地址數(shù)據(jù),藍色字段為數(shù)據(jù)包數(shù)據(jù),橄欖色疊加框標記 ACK 功能。

頂部跡線顯示了從起始到停止的整個 I2C SDA 數(shù)據(jù)包。緊靠下方是相應(yīng)的 SCL 信號。再向下第三條跡線是 SDA 信號的時間擴展縮放跡線,其下方是同步SCL 信號。

在數(shù)據(jù)傳輸之間總線空閑時,SDA 和 SCL 線均處于高電平狀態(tài)。SCL 信號包括以時鐘速率發(fā)出的九個猝發(fā)脈沖,每個傳輸?shù)臄?shù)據(jù)位使用一個,還有一個用于ACK 位。

所有總線事務(wù)都由一個主控器件生成的起始位開始,該位在縮放的 SDA 軌跡中顯示為灰色疊加框。主控器件在 SCL 線處于高電平狀態(tài)時將 SDA線拉低,即表示起始信號。一旦主控器件發(fā)出起始位后,總線就即視為處于繁忙狀態(tài)。主控器件可以發(fā)出多次起始信號,這種情況下的后續(xù)起始信號通常稱為重新起始。

所有數(shù)據(jù)傳輸?shù)拈L度均為 8 位(一個字節(jié)),每個后跟一個 ACK 位。位傳輸順序是先傳輸最高有效位
(MSB)。每個字節(jié)傳輸必須得到應(yīng)答。如果從器件處于繁忙狀態(tài),而無法接收或發(fā)送數(shù)據(jù),則可以將 SCL 線拉低。這將迫使主空器件進入等待狀態(tài),直到從器件釋放SCL 線。

當發(fā)送器件在第九個應(yīng)答時鐘脈沖之前釋放 SDA 線后,即會形成 ACK 位。如果接收器件已接收到數(shù)據(jù)字節(jié),則會將 SDA 線拉低。在圖 2 的 SDA放大視圖中,緊靠第九個時鐘脈沖之前有一個窄峰,這表示 SDA 線經(jīng)釋放返回到高電平狀態(tài)。接收器件拉低 SDA 線以產(chǎn)生 ACK信號,該信號由橄欖色疊加框作為符號標記。如果接收器件未在第九個時鐘脈沖之前將 SDA 線拉低,則是一個非應(yīng)答 (NACK) 響應(yīng)。如果發(fā)生NACK,則主控器件可以生成停止信號并中止傳輸,也可以發(fā)出重復(fù)起始信號以重試。

在起始條件之后,即會發(fā)出從器件地址。這由磚紅色疊加框表示。地址格式可能有兩種:7 位或 10 位,其中最常見的是 7 位地址。起始后的前 7位代表地址數(shù)據(jù)。第 8 位指示數(shù)據(jù)方向:讀或?qū)?。SDA 線處于低電平表示寫入,而此時 SDA 線處于高電平,表示讀取操作。10位尋址使用起始條件后的前兩個字節(jié)。I2C 為內(nèi)部功能保留了多個地址。解碼地址數(shù)據(jù)以二進制、十六進制或 ASCII 格式顯示在地址疊加框中。

藍色的疊加字段標記數(shù)據(jù)傳輸。每個為八位長,后跟一個 ACK/NACK 響應(yīng)。I2C 數(shù)據(jù)包中的數(shù)據(jù)字節(jié)數(shù)不受限制,但是圖 2 包含 17個字節(jié)。解碼后的數(shù)據(jù)(例如地址解碼)顯示在數(shù)據(jù)疊加框中。數(shù)據(jù)流之后是在數(shù)據(jù)傳輸結(jié)束時主控器件生成的一個停止位,由頂部數(shù)據(jù)跡線中的灰色疊加框表示。當 SCL線處于高電平狀態(tài)時,該停止位是 SDA 線從低到高的跳變。在發(fā)出停止信號后,總線再次空閑。

顯示屏底部的表格匯總了有關(guān)數(shù)據(jù)包的所有信息,包括自觸發(fā)以來的時間、地址長度、地址,讀或?qū)懖僮?、?shù)據(jù)包長度,以及數(shù)據(jù)內(nèi)容的摘要。該表中的條目數(shù)與示波器獲取的I2C 數(shù)據(jù)包數(shù)相匹配,后者在本例中僅為一行。

如果發(fā)生協(xié)議錯誤,則由協(xié)議疊加框后面的亮紅色框表示。

I2C 器件

I2C 總線的最大優(yōu)勢之一是,有大量的器件已將該總線納入自己的設(shè)計中。Microchip Technologies 演示板提供了一些 IC類型的示例,這些 IC 包含 I2C 總線或其衍生品之一,如 SMBus。

Microchip Technology 的 PIC16F677 是一款 8位微控制器,其在許多嵌入式設(shè)計中均有采用。該產(chǎn)品實施了一個同步串口,經(jīng)過適當控制后,可通過串行外設(shè)接口 (SPI) 或 I2C 與其他控制器或外設(shè)進行通信(圖3)。

3.png

這款微控制器支持使用 7 位或 10 位尋址的 I2C 主模式和從模式。該器件將 SCK/SCL 引腳用于 I2C SCL 時鐘信號,將 SDI/SDA引腳用于數(shù)據(jù)信號。

這兩個引腳連接到 I2C 總線上的 SCL 和 SDA 線,以實現(xiàn)與其他器件的通信。常見的連接是連接至基于 I2C 的傳感器,例如 Microchip Technology 的 TCN75AVOA713 雙線串行溫度傳感器(圖 4)。

4.png

此溫度傳感器能夠進行串行通信,因此功能方面得以增強。內(nèi)置的用戶可編程寄存器可用于設(shè)置溫度測量分辨率、節(jié)能關(guān)機模式,甚至可設(shè)置警報輸出,以在溫度范圍超出預(yù)設(shè)限值時發(fā)出提醒。

此外,還有許多器件可以解碼 I2C 串行數(shù)據(jù)流并將其分解為并行數(shù)據(jù)。這里介紹一下 Microchip Technology 的 MIC74YQS-TR雙線 I/O 擴展器和風扇控制器(圖 5)。

5.png

該 IC 是完全可編程的 I/O 擴展器,提供八根獨立的 I/O 線。這些 I/O 線可以單獨編程為輸入或輸出。圖 5 顯示了 MIC74YQS-TR在串行總線的控制下驅(qū)動八個 LED。這與圖 1 中 I2C 演示板上 MCO23008 的用法相似。MIC74YQS-TR與電源穩(wěn)壓器結(jié)合使用,也可以使用其四個最高有效位來實現(xiàn)風扇電機的速度控制。

SMBus 和 I2C

I/O 擴展器的串行輸入是專為 SMBus 設(shè)計,但也與 I2C 總線兼容。SMBus 規(guī)格基于 I2C,由 Intel 和 Duracell 于1994 年定義。主要區(qū)別在于標準模式 I2C 邏輯電平相對于 VDD 變化,而 SMBus 的邏輯電平則是固定不變。在大多數(shù)情況下,當 VDD 介于 3 伏和5 伏之間時,經(jīng)驗表明這不是問題。

另一個區(qū)別是 SMBus 的時鐘速率限制為 100 kHz 或更低,而 I2C 有幾種模式支持更高的時鐘速率。當涉及總線兼容性時,這會將最大時鐘速率限制為100 kHz 或 I2C 標準時鐘模式。

因此,除了非常特殊的情況外,SMBus 和 I2C 都是兼容的。

總結(jié)

I2C 總線及其衍生品廣泛應(yīng)用于各種類型的數(shù)百種IC,從而使它們在多層面設(shè)計和應(yīng)用中易于連接?;旌闲盘柡?a href="http://ttokpm.com/analog/" target="_blank">模擬傳感器經(jīng)過耦合后,即可擴展基于微控制器的嵌入式系統(tǒng)范圍。所有這些都通過一個簡單的雙線串行數(shù)字接口實現(xiàn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 集成電路
    +關(guān)注

    關(guān)注

    5379

    文章

    11331

    瀏覽量

    360502
  • IC
    IC
    +關(guān)注

    關(guān)注

    36

    文章

    5881

    瀏覽量

    175098
  • 電路板
    +關(guān)注

    關(guān)注

    140

    文章

    4881

    瀏覽量

    97242
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2861

    瀏覽量

    87923
  • SDA
    SDA
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    28088
收藏 人收藏

    評論

    相關(guān)推薦

    I2C總線簡介

    )和SPI(串行外圍設(shè)備接口)。你需要先了解I 2 C 的基本特性,然后才能徹底理解這三個接口之間的比較,因此,我們將在本文結(jié)尾處討論主題。什么是
    發(fā)表于 09-06 10:16

    淺析集成電路互聯(lián)總線I2C模塊

    慕課蘇州大學.嵌入式開發(fā)及應(yīng)用.第四章.較復(fù)雜通信模塊.集成電路互聯(lián)總線I2C模塊0 目錄4 較復(fù)雜通信模塊4.2 集成電路互聯(lián)總線
    發(fā)表于 12-20 08:07

    i2c總線ppt(I2C總線器件應(yīng)用)

    I2C總線器件應(yīng)用第一節(jié) I2C總線器件應(yīng)用概述I2C總線工作原理
    發(fā)表于 08-13 17:34 ?0次下載

    i2c總線的特點

    i2c總線的特點:2 I2C 總線使設(shè)計人員和廠商都得益.. 3 2.1 設(shè)計人員的得
    發(fā)表于 08-05 09:05 ?26次下載

    長虹集成電路i2c總線資料

    長虹集成電路i2c總線資料 有大量電路圖及常用IC資料
    發(fā)表于 03-31 10:31 ?33次下載
    長虹<b class='flag-5'>集成電路</b><b class='flag-5'>i2c</b><b class='flag-5'>總線</b>資料

    什么是i2c總線

    什么是i2c總線  下載請點擊: i2c總線協(xié)議中文版 
    發(fā)表于 11-05 09:26 ?2903次閱讀

    I2C總線協(xié)議及其應(yīng)用

    I2C總線協(xié)議及其應(yīng)用 一、I2C總線介紹: ---- 由于大規(guī)模集成電路技術(shù)的發(fā)展,在單個芯片
    發(fā)表于 02-08 11:23 ?1548次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>協(xié)議及其應(yīng)用

    基于CPLD的I2C總線接口設(shè)計

    電路設(shè)計中,I2C總線是比較常用的兩線式串行通信方式,大多數(shù)的CPU都擅長于并口操作,不具備直接操作I2C總線接口的能力。為了
    發(fā)表于 02-12 16:11 ?95次下載
    基于CPLD的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>接口設(shè)計

    互聯(lián)IC總線(I2C)

    I2C(Inter-Integrated Circuit,互聯(lián)IC總線通過兩線制設(shè)計(串行數(shù)據(jù)線SDA和串行時鐘線SCL)來提供雙向的數(shù)據(jù)傳輸,可連接到外部
    發(fā)表于 01-13 16:38 ?13次下載

    互聯(lián)IC總線(I2C

    互聯(lián)IC總線(I2C
    發(fā)表于 10-11 14:30 ?26次下載
    互聯(lián)<b class='flag-5'>IC</b><b class='flag-5'>總線</b>(<b class='flag-5'>I2C</b>

    TMS320DM643xDMP集成電路I2C周處理器的介紹和規(guī)范

    本文檔介紹了內(nèi)部集成電路I2C)在tms320dm643x數(shù)字媒體周處理器(DMP)。I2C外設(shè)提供DMP和其他設(shè)備之間的接口符合飛利浦半導體IN
    發(fā)表于 04-18 09:49 ?8次下載
    TMS320DM643xDMP<b class='flag-5'>集成電路</b><b class='flag-5'>I2C</b>周處理器的介紹和規(guī)范

    I2C總線系統(tǒng)中引起電壓失常的原因和檢修方法

    I2C總線系統(tǒng)傳送的是脈沖數(shù)字信號,總線上要傳送少則十幾項、多則數(shù)百項的控制項目和數(shù)據(jù),被控集成電路通過內(nèi)部接口
    發(fā)表于 04-12 09:50 ?1.6w次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>系統(tǒng)中引起電壓失常的原因和檢修方法

    I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點?

    1982年發(fā)明并推廣,用于連接智能傳感器和存儲器器件,以及控制和監(jiān)控外設(shè)。協(xié)議是一種主從式通信協(xié)議,允許多個從設(shè)備連接到同一總線上,并在
    的頭像 發(fā)表于 09-12 11:18 ?1519次閱讀

    I2C總線協(xié)議的工作原理和尋址格式

    I2C(Inter-Integrated Circuit)總線協(xié)議,即集成電路總線協(xié)議,是一種用于連接微控制器及其外圍設(shè)備的串行
    的頭像 發(fā)表于 05-27 15:47 ?1491次閱讀

    詳解I2C總線與SPI總線的區(qū)別

    I2C(Inter-Integrated Circuit)表示集成電路互連,是一種用于線路板內(nèi)部芯片之間通信的總線。
    的頭像 發(fā)表于 10-16 15:16 ?1659次閱讀
    詳解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>與SPI<b class='flag-5'>總線</b>的區(qū)別