国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

I2C串行EEPROM應(yīng)用系統(tǒng)的健壯性設(shè)計

發(fā)布時間:2010-8-3 11:47    發(fā)布者:lavida
關(guān)鍵詞: eeprom
引言  

嵌入式控制系統(tǒng)中,通常要用到非易失性存儲器。無論是掉電時維持需要保存的設(shè)置,還是存儲重要記錄,可靠的非易失性存儲器都是一種理想的選擇。非易失性存儲常常采用外部串行存儲器來實現(xiàn),其中I2C接口產(chǎn)品是最常用的一種類型。然而,這種產(chǎn)品和其他EEPROM存儲器一樣,在使用時也存在著一些條件會潛在地導(dǎo)致其產(chǎn)生某些非標(biāo)準(zhǔn)的甚至是錯誤的操作。因此在進行I2C串行EEPROM存儲器的應(yīng)用設(shè)計時,除了應(yīng)考慮數(shù)據(jù)手冊規(guī)范之外,還必須考慮更多的因素,這樣才能實現(xiàn)更健壯的總體設(shè)計,確保系統(tǒng)具有優(yōu)良的質(zhì)量特性。  

1 防意外寫措施  

器件在上電/掉電期間或者SDA/SCL線的噪聲過大時都有可能導(dǎo)致意外寫操作。為了解決這一問題,一方面需要使用去耦電容(容量通常為0.1 μF)來幫助濾除VCC上的紋波,另一方面則可以通過寫保護措施來防止對器件的非法訪問。  

對于具有硬件寫保護功能的器件,既可以將其WP引腳連接到VCC來保護整個陣列,也可以將其WP引腳連接到VSS來放棄寫保護。通常用戶可以將 WP引腳連接到微控制器的一根I/O口線上,并在該引腳與VCC間連接一個上拉電阻,這樣就可確保器件在平時處于寫保護狀態(tài);但是要啟動寫周期,WP引腳必須首先被驅(qū)動為邏輯0。注意,WP引腳不能懸空,否則器件將無法正常工作。

對于無寫保護功能的器件,則可以利用一個電子開關(guān)對其SDA引腳與微控制器之間的連接進行通斷控制來實現(xiàn)寫保護。平常不訪問器件時,切斷它們的連接;僅在需要對器件實施讀/寫操作時才接通。  

2 數(shù)據(jù)完整性保護措施  

在整個寫周期內(nèi)(對于大多數(shù)器件而言,通常最大為5 ms),必須將VCC維持在最小工作電壓以上。如果此時VCC掉電或降到最小電壓以下,則無論時間長短,均無法確保被寫頁面的數(shù)據(jù)完整性,可能導(dǎo)致編程數(shù)據(jù)的不正確。此外,由于無法對EEPROM單元進行完全編程,器件的數(shù)據(jù)保留時間會比數(shù)據(jù)手冊中規(guī)定的時間短。對于寫周期內(nèi)電源故障所導(dǎo)致的這些問題,通?梢栽谲浖喜扇∠鄳(yīng)的保護措施來加以解決。基于事物的提交—回退機制[1]就是一種典型的解決方案。可以證明,當(dāng)EEPROM存儲器應(yīng)用系統(tǒng)采用該機制后,無論電源何時掉電或微控制器何時被復(fù)位,EEPROM存儲子系統(tǒng)都可保持?jǐn)?shù)據(jù)的完整性。  

(1) 提交—回退機制的建立  

提交—回退機制的建立包括兩方面的內(nèi)容:一方面是定義EEPROM存儲器的邏輯結(jié)構(gòu);另一方面是構(gòu)造對存儲子系統(tǒng)進行訪問、檢查和錯誤清理的接口函數(shù)。該機制將EEPROM存儲器劃分為主存儲區(qū)、校驗存儲區(qū)和緩存區(qū)3個部分。其中主存儲區(qū)用于存放用戶數(shù)據(jù);校驗存儲區(qū)用于存放主存儲區(qū)每個頁面的 CRC校驗碼,且該區(qū)中每一頁的最后一個CRC用于校驗本頁數(shù)據(jù);緩存區(qū)包括多個寫緩存,每個寫緩存包含4個域——數(shù)據(jù)域、地址域、狀態(tài)域和16位CRC 域。數(shù)據(jù)域用于臨時存放寫函數(shù)寫入的數(shù)據(jù)頁面,執(zhí)行下一個提交命令時,該數(shù)據(jù)頁面將從緩存區(qū)傳送到主存儲區(qū)。地址域表示緩存數(shù)據(jù)要寫入的頁面地址;狀態(tài)域表示緩存的狀態(tài),包括可用(available)、占用(occupied)和終止(expired)狀態(tài);16位CRC域用來校驗整個寫緩存。  

該機制提供了6個接口函數(shù):讀、寫、提交、回退、檢查和清理。  

① 讀函數(shù)。接收1個頁面編號和1個用于存放待讀出數(shù)據(jù)的暫存區(qū)指針。如果暫存區(qū)指針和頁面編號處于有效范圍內(nèi),程序就會將指定的頁面數(shù)據(jù)讀入暫存區(qū),并校驗數(shù)據(jù)的有效性。該函數(shù)會返回如下狀態(tài)之一:有效讀(valid read)、無效讀(invalid read)、無效暫存區(qū)地址(invalid buffer address)、無效頁面編號(invalid page number)或保護失敗(protection failure)。

② 寫函數(shù)。接收1個頁面編號和1個指向填好數(shù)據(jù)的暫存區(qū)指針。如果暫存區(qū)指針和頁面編號處于有效范圍內(nèi),程序就會將數(shù)據(jù)寫入非易失性緩存,并標(biāo)記緩存狀態(tài)以準(zhǔn)備提交。

③ 提交和回退函數(shù)。提交和回退函數(shù)是可以在運行寫函數(shù)之后執(zhí)行的互補型操作。提交函數(shù)將最近被寫入緩存的數(shù)據(jù)復(fù)制到存儲區(qū)中的對應(yīng)位置,并為下一個待寫入的數(shù)據(jù)頁面準(zhǔn)備好緩存結(jié)構(gòu);赝撕瘮(shù)實際上就是一個“取消”操作,它消除最近一次執(zhí)行寫函數(shù)產(chǎn)生的效果,并為下一個寫操作準(zhǔn)備好緩存子系統(tǒng)。

④ 檢查函數(shù)。讀取存儲器件的每個數(shù)據(jù)頁面,并檢查存儲數(shù)據(jù)的有效性。該函數(shù)還檢查緩存子系統(tǒng),以確保沒有未執(zhí)行的寫操作。任何無效頁面或未執(zhí)行的寫操作都會使檢查函數(shù)返回一個錯誤狀態(tài)。

⑤ 清理函數(shù)。修復(fù)一個數(shù)據(jù)損壞的EEPROM。實際上,它將試圖找出發(fā)生的錯誤,并采取相應(yīng)的解決措施。  

(2) 提交—回退機制的應(yīng)用  

讀操作:調(diào)用讀函數(shù)來實現(xiàn)。  

更新主存儲區(qū)數(shù)據(jù)操作:先調(diào)用寫函數(shù)再調(diào)用提交函數(shù)來完成。主存儲區(qū)只有在完成一個提交操作后才更新數(shù)據(jù),而不是在一個寫操作之后更新的。  

異常處理:在任何一個可能破壞EEPROM寫周期的事件之后(例如上電之后),都將首先執(zhí)行校驗/清理函數(shù)。檢查函數(shù)將檢驗存儲系統(tǒng)的可用性,并報告任何發(fā)現(xiàn)的錯誤;清理函數(shù)將根據(jù)檢查函數(shù)返回的錯誤代碼解決EEPROM系統(tǒng)存在的任何問題。在清理操作退出時,無論EEPROM子系統(tǒng)先前是何種狀態(tài),都應(yīng)該可以繼續(xù)使用。  

3 I2C通信的有效性保證措施  

(1) 軟件復(fù)位  

有時EEPROM器件可能需要執(zhí)行軟件復(fù)位序列來確保其處于正確并且已知的狀態(tài)。這在某些情況下會很有用。例如,在EEPROM上電時,若總線噪聲過大,EEPROM上電后將會進入不正確的狀態(tài);又如,微控制器在通信期間若發(fā)生復(fù)位,將會使通信陷入不同步的狀態(tài)。為了確保在出現(xiàn)這些情況之后,系統(tǒng)的微控制器與I2C串行EEPROM器件之間能夠正確、有效地實現(xiàn)通信,可以先發(fā)送圖1所示的軟件復(fù)位序列,使I2C接口器件可靠復(fù)位,之后,再啟動數(shù)據(jù)的傳輸過程。  



圖1 軟件復(fù)位序列  

第1個起始位會使器件從期望接收微控制器數(shù)據(jù)的狀態(tài)復(fù)位。在該模式下,器件處于接收模式并監(jiān)視數(shù)據(jù)總線,能夠檢測到強制其內(nèi)部復(fù)位的起始位。9 位“1”用于強制復(fù)位那些無法通過前面的起始位復(fù)位的器件。這只在以下情況下發(fā)生:器件處于在總線上驅(qū)動應(yīng)答(低電平)的模式中;或處于輸出模式中,正在總線上驅(qū)動輸出數(shù)據(jù)位0。在這兩種情況下,由于器件將總線保持在低電平,所以無法產(chǎn)生前面的起始位(定義為SCL為高電平時SDA被拉低)。通過發(fā)送9位 “1”,可以確保器件檢測到NACK(即微控制器不將總線驅(qū)動為低電平,從而不應(yīng)答EEPROM發(fā)送的數(shù)據(jù)),這樣也會強制進行內(nèi)部復(fù)位。  

發(fā)送第2個起始位是為了防止在以下情況中可能發(fā)生的罕見的錯誤寫操作:微控制器在向EEPROM發(fā)送寫命令時被復(fù)位,并且在發(fā)送第1個起始位時 EEPROM正在總線上驅(qū)動ACK。在這種特殊情況下,如果沒有發(fā)送第2個起始位,而是發(fā)送了停止位,器件將啟動寫周期。只有在微控制器向EEPROM發(fā)送寫命令時被復(fù)位的情況下,才可能發(fā)生這種錯誤寫操作。  

最后的停止位將終止總線活動,并將EEPROM置于待機模式中。  

(2) 檢查應(yīng)答位  

I2C通信的眾多優(yōu)點之一就是在接收到每個字節(jié)后發(fā)送應(yīng)答位ACK。除了正在進行寫周期之外,I2C接口EEPROM在接收到每個字節(jié)后總會發(fā)送1位低電平,表明已收到有效的起始位和控制字節(jié)。因此,主器件可以在整個運行期間監(jiān)視接收到的ACK位,以檢測可能發(fā)生的任何錯誤。在發(fā)送期間檢查接收到的ACK是否為邏輯1(表明EEPROM沒有響應(yīng))始終是一種好的做法,若接收到ACK為邏輯1,則需要執(zhí)行一個錯誤處理程序來確定器件為何沒有響應(yīng),并根據(jù)需要執(zhí)行軟件復(fù)位序列。  

(3) 應(yīng)答查詢  

串行EEPROM上的寫操作要求在啟動寫操作后遵守寫周期時間,使器件有時間存儲數(shù)據(jù)。在此期間,正常器件操作將被禁止,微控制器對器件的所有訪問嘗試都將被忽略。因此,微控制器應(yīng)等待寫周期結(jié)束后再嘗試訪問EEPROM,這一點很重要。每個器件在其數(shù)據(jù)手冊中都給出了最長的寫周期時間,該參數(shù)通常用TWC表示。確保遵守寫周期時間的一種簡單方法是:在再次訪問EEPROM之前執(zhí)行規(guī)定時長的延時。但是,器件在短于規(guī)定的最長時間內(nèi)完成寫周期是很尋常的事。因而,用這種延時方法會使EEPROM完成寫操作后的一段時間內(nèi)微控制器仍在等待。為了消除這段額外的時間,使運行更加高效,強烈建議利用應(yīng)答查詢功能。由于I2C接口EEPROM器件在寫周期內(nèi)不會應(yīng)答,所以可在發(fā)送停止條件并啟動器件的內(nèi)部寫周期后持續(xù)地向器件發(fā)送寫命令控制字節(jié)并進行應(yīng)答查詢,直到接收到指示寫操作已完成的ACK位為止。圖2是應(yīng)答查詢流程。  



圖2 應(yīng)答查詢流程  

4 延長EEPROM使用壽命的方法  

(1) 避免對同一區(qū)域反復(fù)執(zhí)行寫操作  
不要在同一個單元或同一個頁面上反復(fù)執(zhí)行寫操作,尤其是不要將某個頁面設(shè)置成寫入任何其他頁面時都要更新的“目錄”。
  
(2) 盡可能降低供電電壓  
在滿足器件最低供電電壓的前提下,供電電壓越低,器件的使用壽命越長。  

(3) 選擇適當(dāng)?shù)膶懖僮髂J?nbsp; 
EEPROM存儲器的寫操作有3種模式:字節(jié)模式、頁寫模式和塊寫模式。有些器件支持所有上述3種模式,而另一些器件則可能只支持上述3種模式中的一種或兩種。選擇適當(dāng)?shù)膶懖僮髂J剑墒?EEPROM存儲器的使用壽命得以延長。在僅需要改變存儲器中的一個字節(jié)時,應(yīng)采用字節(jié)模式。而在需要改變存儲器中的某塊內(nèi)容或全部內(nèi)容時,寫操作模式的選擇原則是:首先應(yīng)考慮塊寫模式,其次再考慮頁寫模式,最后才是字節(jié)模式。  

(4) 存儲塊輪換使用  
一般應(yīng)用中,要存儲的數(shù)據(jù)比較單一,EEPROM空間與要存儲的數(shù)據(jù)相比會大得多。為此,可采用一種存儲塊輪換使用的方法來延長EEPROM的使用壽命。其原理如下:  

根據(jù)要存儲的數(shù)據(jù)量將EEPROM空間分塊,從第1塊開始存儲數(shù)據(jù),當(dāng)數(shù)據(jù)被改寫N次后轉(zhuǎn)到第2塊存放,等到第2塊中的數(shù)據(jù)被改寫N次后再轉(zhuǎn)到第3塊存放,依此類推,直到最后一個塊存放的數(shù)據(jù)被改寫N次后,又轉(zhuǎn)到第1個塊重新開始。在這種解決方案中,系統(tǒng)掉電后再上電時可用來確定數(shù)據(jù)存儲塊首地址的方法有[2]: 找最大數(shù)據(jù)法、用后還原法和地址指針法。  

結(jié)語  

健壯性設(shè)計是確保系統(tǒng)具有優(yōu)良質(zhì)量特性的基本措施。本文介紹的技術(shù)實用、可靠,在對I2C串行EEPROM存儲器進行應(yīng)用設(shè)計時應(yīng)該盡可能地考慮這些技術(shù)。
本文地址:http://m.qingdxww.cn/thread-18845-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 婷婷丁香在线 | 欧美成人高清 | 中文字幕在线国产 | 国产在线更新 | 国产精品香蕉夜间视频免费播放 | www狠狠操| 日韩欧美国产一区二区三区 | 欧美日韩高清不卡一区二区三区 | 色五五月五月开 | 久久r8这里只精品99re66 | 九九久久精品国产 | 黄页网址在线观看 | 一级毛毛片毛片毛片毛片在线看 | 天堂网| 九九九色视频在线观看免费 | 噜噜噜网站 | 成人网在线看 | 台湾精品视频在线播放 | 国产精品视频免费观看调教网 | 日韩毛片一级 | 欧美视频日韩视频 | 国产精品人成 | 亚洲淫视频 | 成人一区二区免费中文字幕 | 午夜小视频网站 | 国产三级自拍 | 黄色免费观看网站 | 欧美成人天天综合天天在线 | 精精国产www视频在线观看免费 | 九九免费高清在线观看视频 | 日韩特级片 | 亚洲综合偷自成人网第页色 | 国产馆在线观看 | 国产午夜精品久久久久免费视小说 | 久久青青草原综合伊人 | 四虎影院在线免费播放 | 人人干人人艹 | 欧美日韩视频在线第一区二区三区 | 日韩在线看免费高清完整版 | 国产精品亚洲一区二区麻豆 | 四虎永久影院 |