關(guān)于IIC EEPROM頁(yè)寫丟數(shù)據(jù)問題
掃描二維碼
隨時(shí)隨地手機(jī)看文章
無(wú)論從那個(gè)地址連續(xù)寫,不能超過(跨過)一整頁(yè)。
先明白頁(yè)寫的道理。
AT24CXX系列的EEPROM為了提高寫效率,提供了頁(yè)寫功能,內(nèi)部有個(gè)一頁(yè)大小的寫緩沖RAM,地址范圍當(dāng)然就是從00到一頁(yè)大小,發(fā)生寫操作時(shí),開始送入的地址對(duì)應(yīng)的頁(yè)被選中,并將其內(nèi)容映像到緩沖RAM,數(shù)據(jù)從低端地址對(duì)應(yīng)的緩沖RAM地址開始修改,超過這個(gè)地址范圍就回到00,寫完后,就會(huì)把開始確定的EEPROM頁(yè)擦除,再把一整頁(yè)RAM數(shù)據(jù)寫入。所有寫數(shù)據(jù)都發(fā)生在開始寫地址時(shí)確定的頁(yè)上。
如頁(yè)容量為128,一頁(yè)都是從00開始按128字節(jié)分成一個(gè)個(gè)的頁(yè),0頁(yè)就是0~7F,1頁(yè)就是80~FF,類推,邊界就是128字節(jié)的整數(shù)倍地址。頁(yè)RAM的地址范圍為7位00~7F,寫入時(shí)高端地址就是頁(yè)號(hào)。發(fā)生寫操作,開始送入的地址對(duì)應(yīng)的頁(yè)被鎖存,后續(xù)不論寫多少,都在這個(gè)頁(yè)中,只是一個(gè)頁(yè)內(nèi)的地址進(jìn)行加一,超過就歸零開始。從F0開始寫32個(gè)字節(jié),那么開始送入的地址為F0,就會(huì)鎖定在1號(hào)頁(yè)(第2個(gè)頁(yè))上,底端7位頁(yè)內(nèi)部地址開始從70H開始寫,到達(dá)7F時(shí)回到00再到10H,也就是寫在了F0~FF,80~8F。也就是,從01開始寫也只能到7F,再往80寫就跑到00上去了,這就是寫操作的翻卷,datasheet上都有說明。就是從邊界前寫兩個(gè)字節(jié)也要分兩次寫。頁(yè)是絕對(duì)的,按整頁(yè)大小排列,不是從開始寫入的地址開始算。
讀沒有頁(yè)的問題,可以從任意地址開始讀取任意大小數(shù)據(jù),只是超過整個(gè)存儲(chǔ)器容量時(shí)地址才回卷。但一次性訪問的數(shù)據(jù)長(zhǎng)度也不要太大。
所以分頁(yè)的存儲(chǔ)器要做好存儲(chǔ)器管理,盡量同時(shí)讀寫的數(shù)據(jù)放在一個(gè)頁(yè)上。





