本文介紹將MAX7651和MAX7652 12位數(shù)據(jù)采集系統(tǒng)連接至24C02 2線串行EEPROM所需的特定硬件描述和軟件程序。提供了詳細(xì)的軟件代碼。由于MAX7651/52基于標(biāo)準(zhǔn)8051處理器內(nèi)核,因此此處提供的信息對于任何基于8051的標(biāo)準(zhǔn)設(shè)計都很有用。
24Cxx 系列 2 線串行 EEPROM 廣泛用于 8051 微處理器系統(tǒng)。雖然MAX7651/MAX7652閃存可編程12位數(shù)據(jù)采集系統(tǒng)具有16K內(nèi)部閃存,但仍有許多“傳統(tǒng)”產(chǎn)品使用小而廉價的外部存儲器。
本應(yīng)用筆記提供了基本的2線寫和讀軟件子程序。可以輕松修改它們,以滿足EEPROM的附加功能,例如存儲器保護和組尋址。
24C02串行EEPROM有許多衍生產(chǎn)品,其中包括額外的存儲器和頁面尋址。24C02被廣泛使用,是本例中使用的部件。其他派生部件可以通過稍作修改來使用此代碼。
EEPROM信號和定時
24Cxx 系列使用兩條 I/O 線進行接口:SCL(串行時鐘)和 SDA(串行數(shù)據(jù))。SCL 邊緣具有不同的功能,具體取決于是讀取設(shè)備還是寫入設(shè)備。將數(shù)據(jù)時鐘輸入器件時,時鐘的正邊沿鎖存數(shù)據(jù)。負(fù)時鐘將時鐘數(shù)據(jù)邊緣出器件。
SDA信號是雙向的,并且物理上是漏極開路,因此多個EEPROM或其他器件可以共享引腳。SCL和SDA都必須從外部拉高。
EEPROM使用的協(xié)議部分基于EEPROM發(fā)送的ACK(確認(rèn))位(如果已收到發(fā)送給它的數(shù)據(jù))。所有地址和數(shù)據(jù)均以 8 位字發(fā)送。EEPROM在第九個時鐘周期內(nèi)將ACK作為低位周期發(fā)送。EEPROM在SCL和SDA引腳上尋找特定的轉(zhuǎn)換,以鑒定讀寫。
SDA 引腳上的數(shù)據(jù)可能僅在 SCL 為低時更改。SCL 高電平期間的數(shù)據(jù)更改指示啟動或停止條件。START 條件是 SDA 的高到低轉(zhuǎn)換,SCL 高。所有數(shù)據(jù)傳輸都必須以 START 條件開頭。
停止條件是 SDA 的低到高轉(zhuǎn)換,SCL 高。所有數(shù)據(jù)傳輸必須以 STOP 條件結(jié)束。讀取后,停止將EEPROM置于待機電源模式。有關(guān)啟動和停止條件,請參閱圖 1。
圖1.啟動和停止條件。
設(shè)備尋址
24C02 具有 3 個物理引腳,分別指定為 A2、A1 和 A0,它們連接到邏輯 1 或 0 電平。這允許八個唯一的硬件地址,因此多達八個 24C02 可以共享 SCL 和 SDA 線路而不會發(fā)生沖突。有一個內(nèi)部地址比較器,用于查找主控制器發(fā)送的地址與 24C02 的唯一 7 位地址之間的匹配,該地址部分由 A2、A1 和 A0 確定。請參閱下面的表 1。
MSB | 低音水平 | ||||||
1 | 0 | 1 | 0 | 答2 | 答1 | 答0 | R/~W |
設(shè)備地址在啟動條件后立即發(fā)送。前四位是序列“1010”,這是一個簡單的“噪聲濾波器”,可防止線路上的隨機噪聲突發(fā)訪問設(shè)備。發(fā)送的最后一個位是 1 表示讀取,0 表示寫入。下面的代碼示例用于隨機讀/寫操作。該部件還可以執(zhí)行頁面寫入/順序讀取,只需稍作代碼修改。有關(guān)更多信息,請參見 24C02 數(shù)據(jù)手冊。
字節(jié)寫入內(nèi)存
字節(jié)寫入序列如圖 2 所示。EEPROM在收到START條件和設(shè)備地址后,如果設(shè)備地址與其自己的唯一地址匹配,則發(fā)送ACK。MAX7651等待ACK,如果ACK不存在,則中止通信。接下來,發(fā)送一個 8 位字節(jié)地址,然后發(fā)送另一個 ACK。MAX7651發(fā)送8位數(shù)據(jù)字節(jié),等待第三個ACK,并發(fā)送STOP條件。
圖2.寫入操作。
需要注意的是,在收到 STOP 條件后,EEPROM 在內(nèi)部等待數(shù)據(jù)存儲到其內(nèi)部存儲器陣列中。這可能需要長達 10 毫秒的時間。24C02 將在對內(nèi)部 EEPROM 進行編程時忽略嘗試的訪問。可以輪詢該部件以完成內(nèi)部寫入周期。這涉及發(fā)送另一個 START 條件(也稱為重復(fù)啟動),后跟設(shè)備地址字節(jié)。請注意,在這種情況下,不會發(fā)送 STOP 條件。如果內(nèi)部編程周期完成,EEPROM 將發(fā)送 ACK。MAX7651也可以編程為等待10ms再繼續(xù)。
從內(nèi)存讀取字節(jié)
從 24C02 EEPROM 以隨機地址讀取字節(jié)需要在讀取之前執(zhí)行虛擬寫入操作。參見圖 3。
順序為:
啟動條件
使用 R/~W = 0 “虛擬寫入”命令發(fā)送設(shè)備地址
等待確認(rèn)
發(fā)送字節(jié)內(nèi)存地址
等待確認(rèn)
發(fā)送重復(fù)啟動條件
發(fā)送 R/~W = 1 的設(shè)備地址(讀取命令)
等待確認(rèn)
將8個數(shù)據(jù)位讀取到MAX7651中,MSB優(yōu)先
無確認(rèn)
停止條件
這個序列相當(dāng)復(fù)雜!讀取所需的 SCL 轉(zhuǎn)換總數(shù)為 38。
圖3.讀取操作。
審核編輯:郭婷
-
存儲器
+關(guān)注
關(guān)注
38文章
7453瀏覽量
163609 -
微處理器
+關(guān)注
關(guān)注
11文章
2247瀏覽量
82325 -
EEPROM
+關(guān)注
關(guān)注
9文章
1010瀏覽量
81411
發(fā)布評論請先 登錄
相關(guān)推薦
評論