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