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