|

【Maker電子學】Flash 記憶體的原理與應用—PART9

   

作者:Bird

上一回【Maker電子學】Flash 記憶體的原理與應用—PART8(I2C EEPROM)中,我們說明了如何利用 I2C 上的通訊來讀取和寫入 24LC64 這顆 I2C EEPROM 的內容。EEPROM 的讀取速度很快,跟得上 I2C bus 的存取速度,但是寫入的速度很慢,因此在寫入時,需要一些特別的等待處理。

這一回我們就來看看這個等待要怎麼做。

寫入有多慢?

我們來看一下 24LC64 的 datasheet 中,關於時間特性的描述。下面這個表是 24LC64 的 AC characteristics,它說明了 24LC64 的各種訊號所需要的時序要求。

(圖片來源:Bird 提供)

比方說,output valid from clock,就是告訴我們,在 I2C bus 的 SCL 變為 low 後,SDA 最長還會維持多久不變化。根據 I2C bus 的規格,SDA 在 SCK 為 high 的時候不能變化,而在 SCL 為 low 的時候可以變化到下一個狀態,但實務上兩者不會同時變動,也就說 SDA 並不會在 SDL 變成 low 的瞬間就一起變化。

在數位訊號的世界裡,沒有真正的「同時」這種事,只要你把觀察的尺度放得夠大,都看得到時間差異,因此為了保證 SCL 為 high 的時候 SDA 絕對不會變化,一般在設計晶片內部 I2C 的電路時,都會確定 SCL 變為 low 之後,SDA 才開始變化,因此 SDA 會在 SCL 變為 low 之後再稍微等待一小段時間,才開始變化,這個時間就是 datasheet 上的 output valid from clock。

從 datasheet 上可以看出來,很多的時序都會隨著供電電壓的變化而不同。當 24LC64 的供電電壓在 1.7 V-2.5 V 時,它切換邏輯訊號的速度會比較慢,因此只能跑到 100 KHz 的 standard-mode;如果要跑 400 KHz 的 fast-mode,就要用 2.5 V 以上的電壓供電,至於如果要跑 1 MHz 的 fast-mode plus,則需要使用高速版本的晶片 24 FC64。

這整張表裡面大部分的數字都是以 ns 為單位,唯獨有一個特性的單位是 ms,就是 write cycle time。

Write cycle time 就是 24LC64 寫入資料所需要的時間,根據 datasheet 上的說明,不管是寫入一個 byte 還是寫入一個 page,最長都可能會需要 5ms。

5 ms 對現在的 MCU 來說是一個很長的時間。以很常用的 STM32F030 來說,它的 Cortex-M0 核心大部分是 single-cycle 的指令,也就是說每一個 clock 可以執行一個指令;STM32F030 可以輕輕鬆鬆跑到 48 MHz,也就說它一秒鐘可以跑 48,000,000 個 single-cycle 指令,換算一下 5 ms 可以跑:

48000000 * 0.005 = 240,000

24 萬個 single-cycle 指令!

為什麼需要這麼長的時間呢?這跟 24LC64 內部的結構還有 EEPROM 的原理有關。

EEPROM 的寫入方式

雖然我們都說 EEPROM 可以逐個 byte 去抹除、寫入,但是實務上在設計晶片時,抹除的電路不會涉及到 byte 這麼小的單位。在 24LC64 內部,抹除和寫入都是以「page」為單位在進行,而一個 page 是 32 bytes。

當我們要寫入某一個特定位址的 byte 時,24LC64 會利用一個 buffer 暫存整個 page 的資料,抹除整個 page 之後,再把整個 page 連同新的資料一起寫進去,因此在 24LC64 的 datasheet 上有這麼一句耐人尋味的說明:

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Liang Bird

Author: Liang Bird

在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Crossmatch 等企業,從事無線通訊、影像系統、手機、液晶面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助新創團隊解決技術問題。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴、大提琴、法國號,亦是不折不扣的熱血 maker。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *