I2C匯流排詳細介紹

2021-06-18 04:49:26 字數 3197 閱讀 8989

|

字型大小訂閱

i2c是一種序列匯流排的外設介面,它採用同步方式序列接收或傳送資訊,兩個裝置在同乙個時鐘下工作。i2

c匯流排只用兩根線:序列資料

sda(

serial data

)、序列時鐘

scl(

serial clock)。

由於i2c

只有一根資料線,因此其傳送資訊和接收資訊不能同時進行。資訊的傳送和接收只能分時進行。i2

c序列匯流排工作時傳輸速率最高可達

400k bit/s。i

2c匯流排上的所有器件的

sda線並接在一起,所有器件的

scl線並接在一起,且

sda線和

scl線必須通過上拉電阻連線到正電源。i2

c匯流排的資料傳輸協議要比

spi匯流排複雜一些,因為i2

c匯流排器件沒有片選控制線,所以i2

c匯流排資料傳輸的開始必須由主器件產生通訊的開始條件(

scl高電平時,

sda產生負跳變);通訊結束時,由主器件產生通訊的結束條件(

scl高電平時,

sda產生正跳變)。

sda線上的資料在

scl高電平期間必須保持穩定,否則會被誤認為開始條件或結束條件,只有在

scl低電平期間才能改變

sda線上的資料。i2

c匯流排的資料傳輸波形圖如下圖所示。

c應用例項

at24c

系列為美國

atmel

公司推出的序列

coms型e

2prom

,具有功耗小,寬電壓範圍等優點。下圖為

at24c系列e

2prom

的引腳圖。圖中a0、

a1、a2為器件位址引腳,

vss為地,

vcc為正電源,

wp為寫保護,

scl為序列時鐘線,

sda為序列資料線。

at24c系列e

2prom採用i

2c匯流排,i2c

匯流排上可掛接多個介面器件,在i2

c匯流排上的每個器件應有唯一的器件位址,按i2

c匯流排規則,器件位址為

7位二進位制數,它與一位資料方向位構成乙個器件定址位元組。器件定址位元組的最低位(

d0)為方向位(讀

/寫),最高4位(

d7~d4

)為器件型號位址(不同的i2

c匯流排介面器件的型號位址由廠家給定,

at24c系列e

2prom

的型號位址都為

1010

);其餘3位(

d3~d1

)與器件引腳位址

的片內位址,

at24c01

和at24c02

由於晶元容量可用乙個位元組表示,故讀寫某個單元前,先向e2

prom

寫入乙個位元組的器件位址,再寫入乙個位元組的片內位址。而

at24c04

、at24c08

、at24c16

分別需要9位、

10位和

11位片內位址,所以

at24c04

把器件位址中的

a0作為片內位址的最高位,

at24c08

把器件位址中的

a1a0

作為片內位址的最高兩位,

at24c16

把器件位址中的

a2a1a0

作為片內位址的最高三位。凡在系統中把器件的引腳位址用作片內位址後,該引腳在電路中不得使用,做懸空處理。

at24c32

、at24c64

、at24c128

、at24c256

和at24c512

的片內位址採用兩個位元組。

at24c系列e

2prom

的讀寫操作原理

下列讀寫操作中

sda線上資料傳送狀態標記注釋如下:

start

為啟動訊號(

scl為高電平,

sda產生負跳變),由主機傳送。

stop

為結束訊號(

scl為高電平,

sda產生正跳變),由主機傳送。

addressbyte

、addreeebyte h

、addreeebyte l

為位址位元組,指定片內某單元位址,由主機傳送。

data

為資料位元組,由資料傳送方傳送。

0 為肯定應答訊號,由資料接收方傳送。

1 為否定應答訊號,由資料接收方傳送。

主機控制資料線

sda時,在

scl高電平期間必須保持

sda線上的資料穩定,否則會被誤認為對從機的起始條件或結束條件。主機只能在

scl低電平期間改變

sda線上的資料。主機寫操作期間,用

scl的上公升沿寫入資料;主機讀操作期間,用

scl的下降沿讀出資料。

從at24c

系列at24c01~at24c16中讀n

個位元組的資料格式:從向

向at24c

系列at24c32~at24c512中寫n

個位元組的資料格式(

n<=

頁長,且

n個位元組不能跨頁):

應答訊號 i

2c匯流排資料傳送時,每成功地傳送乙個位元組資料後,接收器都必須產生乙個應答訊號。應答的器件在第

9個時鐘週期時將

sda線拉低,表示其已經收到乙個

8位資料。i2

c器件在接收到起始訊號和從器件位址之後響應乙個應答訊號,如果器件已選擇了寫操作,則在每接收乙個

8位位元組之後響應乙個應答訊號。i2

c器件工作在讀模式時,在傳送乙個

8位資料後釋放

sda線(

sda置為高電平)並監視乙個應答訊號,一旦接收到主器件的應答訊號,i2

c器件則繼續傳送資料,如果主器件沒有傳送應答訊號(傳送非應答訊號,即

sda為高電平),器件停止傳送資料且等待乙個停止訊號。

i2c通訊的詳細講解 I2C匯流排簡介

本文介紹了內部積體電路 aka i2c 序列通訊協議的基本特性和突出優點。元件之間的通訊 通訊協議 毫無疑問,電子系統的共同特徵是需要在兩個或三個或十個單獨的元件之間共享資訊。工程師已經開發出許多標準協議,可以幫助不同的晶元成功通訊 當您在微控制器或數字訊號處理器的功能列表中 通訊 下面對縮略語時,...

i2c匯流排時序

一心想踏入linux device driver的世界,想著i2c匯流排相對於usb等其他匯流排較為簡單,就以i2c作為切入點,希望可以逐步理解ldd的設計思想,並能理解其裝置模型的概念。在此對近期於i2c匯流排及驅動原始碼的理解做備忘,以免徒勞。平台友善之臂s70 tiny6410 cpusams...

I2C匯流排死鎖

原文 現象 最近發現訪問i2c裝置時,主裝置復位可能會引起i2c死鎖,表現為scl為高,sda一直為低,後發現是從裝置拉死i2c匯流排,從裝置斷電之後,sda變高,上電後通訊正常。後來通過拉低scl訊號線,sda就會自動變成高電平,i2c匯流排恢復。原因 在正常情況下,i2c匯流排協議能夠保證匯流排...