FPGA實用通訊協議之IIC

2022-09-06 16:48:19 字數 3006 閱讀 7673

eeprom (electrically erasable progammable read only memory, e2prom)即電可擦除

可程式設計唯讀儲存器, 是一種常用的非易失性儲存器(掉電資料不丟失), eeprom有多種型別的

產品,較常使用的是atmel公司生產的at24c系列。

at24cxx具有高可靠性, 可對所存資料儲存100年,並可多次擦寫,擦寫次數達一百萬次。

i2c即inter-integrated circuit(積體電路匯流排),是由philips半導體公司(現在的nxp

半導體公司)在八十年代初設計出來的一種簡單、雙向、二線制匯流排標準。多用於主機和從機

在資料量不大且傳輸距離短的場合下的主從通訊。主機啟動匯流排,並產生時鐘用於傳送資料,

此時任何接收資料的器件均被認為是從機。

i2c匯流排由資料線sda和時鐘線scl構成通訊線路,既可用於傳送資料,也可接收資料。 在

主控與被控ic之間可進行雙向資料傳送,資料的傳輸速率在標準模式下可達100kbit/s,在快

速模式下可達400kbit/s,在高速模式下可達3.4mbit/s,各種被控器件均併聯在匯流排上,通過

器件位址(sl**e addr, 具體可查器件手冊)識別。

i2c_scl是序列時鐘線, i2c_sda是序列資料線,由於i2c器件一般採用開漏結構

匯流排相連,所以i2c_scl和i2c_sda均需接上拉電阻,也正因此,當匯流排空閒時,這兩條線路都

處於高電平狀態,當連到匯流排上的任一器件輸出低電平,都將使匯流排拉低,即各器件的sda及

scl都是「線與」關係。

i2c匯流排支援多主和主從兩種工作方式,通常工作在主從工作方式,我們的開發板就採用

主從工作方式。在主從工作方式中,系統中只有乙個主機,其它器件都是具有i2c匯流排的外圍

從機。在主從工作方式中,主機啟動資料的傳送(發出啟動訊號)並產生時鐘訊號,資料傳送

完成後,發出停止訊號。

i2c匯流排結構雖然簡單,使用兩線傳輸,然而要實現器件間的通訊,需要通過控制scl和sda

的時序,使其滿足i2c的匯流排傳輸協議,方可實現器件間的資料傳輸。

在i2c器件開始通訊(傳輸資料)之前,序列時鐘線scl和序列資料線sda線由於上拉的原

因處於高電平狀態,此時i2c匯流排處於空閒狀態。如果主機(此處指fpga)想開始傳輸資料,

只需在scl為高電平時將sda線拉低,產生乙個起始訊號,從機檢測到起始訊號後,準備接收數

據,當資料傳輸完成,主機只需產生乙個停止訊號,告訴從機資料傳輸結束,停止訊號的產生

是在scl為高電平時, sda從低電平跳變到高電平,從機檢測到停止訊號後,停止接收資料。 i2c

整體時序如下圖。起始訊號之前為空閒狀態,起始訊號之後到停止訊號之前的這一段為資料傳

輸狀態,主機可以向從機寫資料, 也可以讀取從機輸出的資料,資料的傳輸由雙向資料線(sda)

完成。停止訊號產生後,匯流排再次處於空閒狀態。

如上圖所示,在起始訊號之後,

主機開始傳送傳輸的資料; 在序列時鐘線scl為低電平狀態時, sda允許改變傳輸的資料位(1

為高電平, 0為低電平),在scl為高電平狀態時, sda要求保持穩定,相當於乙個時鐘週期傳

輸1bit資料,經過8個時鐘週期後,傳輸了8bit資料,即乙個位元組。第8個時鐘週期末,主機釋

放sda以使從機應答,在第9個時鐘週期,從機將sda拉低以應答; 如果第9個時鐘週期, scl為

高電平時, sda未被檢測到為低電平,視為非應答,表明此次資料傳輸失敗。第9個時鐘週期末,

從機釋放sda以使主機繼續傳輸資料,如果主機傳送停止訊號,此次傳輸結束。 要注意的

是資料以8bit即乙個位元組為單位序列發出,其最先傳送的是位元組的最高位。

單次寫時序:

連續寫時序:

如果讀寫控制位r/w位為「1」即讀命令,主機就處於接收資料的狀態,從機從該位址單元

操作後發起讀操作。由於i2c器件在讀寫操作後,其內部的位址指標自動加一,因此當前位址

內容就是位址03處的單元資料,時序圖如下圖所示。

隨機讀時序:

由於當前位址讀極不方便讀取任意的位址單元的資料,所以就有了隨機讀,隨機讀的時序

有點奇怪,見下圖,傳送完器件位址和字位址後,竟然又傳送起始訊號和器件位址,而

且第一次傳送器件位址時後面的讀寫控制位為「0」,也就是寫命令,第二次傳送器件位址時

後面的讀寫控制位為「1」,也就是讀。為什麼會有這樣奇怪的操作呢?這是因為我們需要使

從機內的儲存單元位址指標指向我們想要讀取的儲存單元位址處,所以首先傳送了一次dummy

write也就是虛寫操作,只所以稱為虛寫,是因為我們並不是真的要寫資料, 而是通過這種虛

寫操作使位址指標指向虛寫操作中字位址的位置,等從機應答後,就可以以當前位址讀的方式

讀資料了,如圖 28.1.9所示,隨機位址讀是沒有傳送資料的單次寫操作和當前位址讀操作的

結合體 。

至於連續讀,對應的是當前位址讀和隨機讀都是一次讀取乙個位元組而言的,它是將當前地

址讀或隨機讀的主機非應答改成應答,表示繼續讀取資料,下圖是在當前位址讀下的連

續讀。

i2c協議就這麼多。

IIC 通訊協議

原文 i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止...

IIC 通訊協議

i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止訊號。...

IIC 通訊協議

簡要過程 主機傳送起始位,這會通知匯流排上的所有裝置傳輸開始了,接下來主機傳送裝置位址 讀 寫訊號,與這一位址匹配的從裝置將成為從機並與主機進行傳輸,而其它從裝置將會退出此次通訊。主機匹配到從機後,主機傳送它所要讀取或寫入的從機的內部暫存器位址 然後傳送資料 資料傳送完畢後,傳送停止位。詳細過程 簡...