Ads 468x60px

##EasyReadMore##

19 12月, 2017

EEPROM 24LC16

EEPROM 介紹:

EEPROM,或寫作E2PROM,全稱電子抹除式可複寫唯讀記憶體 (英語:Electrically-Erasable Programmable Read- Only Memory),是一種可以通過電子方式多次複寫的半導體存儲裝置。相比EPROM,EEPROM不需要用紫外線照射,也不需取下 ,就可以用特定的電壓,來抹除晶片上的資訊,以便寫入新的資料。
 
  EEPROM有四種工作模式:讀取模式、寫入模式、擦拭模式、校驗模式。讀取時,晶片只需要Vcc低電壓(一般+5V)供電。編程寫 入時,晶片通過Vpp(一般+25V, 較新者可能使用 12V 或 5V)獲得編程電壓,並通過PGM編程脈衝(一般50ms)寫入資料。擦 拭時,只需使用Vpp高電壓,不需要紫外線,便可以擦拭指定位址的內容。為保證寫入正確,在每寫入一塊資料後,都需要進行類似 於讀取的校驗步驟,若錯誤就重新寫入。現今的 EEPROM 通常已不再需要使用額外的 Vpp 電壓,且寫入時間也已有縮短。

由於在做系統設計時,總是希望能記錄一些資料,並在下次啟動時資料還存在,這時就可以使用EEPROM (Electrically Erasable Programmable ROM) 來做存取,而EEPROM是既可讀又可寫的一塊特殊的記憶體,它跟RAM不一樣的地方是它的內容是永久保存的,寫入的資料即使在電源關閉之後還是保存在 EEPROM裡,下次電源重開的時候仍然可以利用通訊的方式把它讀出並拿來使用。

而EEPROM 通常用來保存程式的設定值或系統所發生的相關事件。像小編以前在當韌體研發設計工程師時,在系統設計上會搭配RTC及EEPROM來將系統每一筆所發生的fault寫入EEPROM中,若斷電時也能在下次啟動時來得知系統故障的時間點及原因。所以EEPROM是系統設計不可缺少的好幫手。

EEPROM最常透過I2C的方式進行讀寫

電子抹除式可複寫唯讀記憶體 - 維基百科,自由的百科全書 - https://goo.gl/z80xY4

單片機EEPROM的頁寫入

在向 EEPROM 連續寫入多個字節的數據時,如果每寫一個字節都要等待幾 ms 的話,整體上的寫入效率就太低了。因此  EEPROM 的廠商就想了一個辦法,把 EEPROM 分頁管理。24C01、24C02 這兩個型號是8個字節一個頁,而  24C04、24C08、24C16 是16個字節一頁。我們開發板上用的型號是  24C02,一共是256個字節,8個字節一頁,那麼就一共有32頁。
 
  分配好頁之後,如果我們在同一個頁內連續寫入幾個字節後,最後再發送停止位的時序。EEPROM 檢測到這個停止位後,就會一次 性把這一頁的數據寫到非易失區域,就不需要像上節課那樣寫一個字節檢測一次了,並且頁寫入的時間也不會超過 5  ms。如果我們寫入的數據跨頁了,那麼寫完了一頁之後,我們要發送一個停止位,然後等待並且檢測 EEPROM  的空閒模式,一直等到把上一頁數據完全寫到非易失區域後,再進行下一頁的寫入,這樣就可以在很大程度上提高數據的寫入效率

14.6 单片机EEPROM的页写入 - 单片机教程(三) - 极客学院Wiki - https://goo.gl/EF7jY3

關於24LC16

24LC16是一提供16Kbit儲存容量的EEPROM裝置,使用I2C通訊介面做存取,支援高速400KHz I2C通訊。
 
  24LC16提供的erase/write是現在常見典型的100萬次。
 
  具有外部資料保護控制腳(WP),WP腳為Hi時,則EEPROM資料唯讀,WP腳為Low時,可進行寫入操作。

記憶區塊的配置
24LC16內的16Kbit儲存位置分配於8個不同的區塊(Block)當中,也就是每個區塊(Block) 大小為256byte,而每個address大小為1byte,所以24LC16總共有2Kbyte的儲存空間。
 
  256byte×8Block = 2048byte = 16384bit
 
  24LC16 介紹及EEPROM使用技巧 – xuan!LAB - https://goo.gl/RW5XnH

ATMEL I2C EEPROM 操作

寫入:
  分成寫入一個Byte跟寫入一個Page, 每個型號page size不見得相同.
  也就是寫超過一個byte, 一率要寫一個page.
 
  讀取:
  分成讀取目前位址讀取及任意位址讀取, 讀取不限定要讀多少長度,  不想讀時送nak即終止讀取.
  目前位置讀取,顧名思義就是讀取目前位址指標所指向之資料, 所以命令中不帶位址;
  任意讀取就須帶欲讀取資料的位址.
 
  如果操作操過該記憶體最大位址, 會折返回前面得位址, 操作最好限定最大位址的範圍.
 
  ATMEL I2C EEPROM 操作 @ 喵一拳的隨手筆記 :: 痞客邦 PIXNET :: - https://goo.gl/tvxHjN
 
  WP接地就可以正常寫入.
  寫的部分一次一個Page, 這顆ROM是8 Bytes 一個page, 也就是說寫的時候不能跨Page
 
  例如 : 2開始寫只能寫到7, 然後要給一個Stop才會真正寫入.
 
  再重送Device Address (Call WaitI2CRespond)直到他有ACK之後才能重新下Write的指令, 然後從位址8開始繼續寫8  bytes.
  PIC使用I2C讀寫EEPROM-24C02 @ The Bear's crazy world :: 痞客邦 PIXNET :: - https://goo.gl/ZwJbhg

i2c tool 使用方法:

Raspberry Pi I2C总线使用小记 · BlahGeek's Blog - https://goo.gl/MRgoXm

如何將i2c tools for linux工具,在Android 手機上執行 @ 馴龍窩 :: 痞客邦 PIXNET :: - https://goo.gl/9Hk3PW

讓你的 Raspberry Pi 透過 I²C 讀取 eeprom | coldnew's blog - https://goo.gl/X3CC15

datasheet 解釋可參考:

[程式筆記] EEPROM 讀寫控制(I2C通訊) @ 門外漢的筆記 :: 痞客邦 PIXNET :: - https://goo.gl/1yXjnu

0 意見:

張貼留言

 
Blogger Templates