由於在做系統設計時,總是希望能記錄一些資料,並在下次啟動時資料還存在,這時就可以使用EEPROM (Electrically Erasable Programmable ROM) 來做存取,而EEPROM是既可讀又可寫的一塊特殊的記憶體,它跟RAM不一樣的地方是它的內容是永久保存的,寫入的資料即使在電源關閉之後還是保存在 EEPROM裡,下次電源重開的時候仍然可以利用通訊的方式把它讀出並拿來使用。
而EEPROM 通常用來保存程式的設定值或系統所發生的相關事件。像小編以前在當韌體研發設計工程師時,在系統設計上會搭配RTC及EEPROM來將系統每一筆所發生的fault寫入EEPROM中,若斷電時也能在下次啟動時來得知系統故障的時間點及原因。所以EEPROM是系統設計不可缺少的好幫手。
EEPROM最常透過I2C的方式進行讀寫,I2C匯流排(Inter IC Bus)通訊協定自1992年由菲力浦(Philips)公司提出,由於僅透過主從架構和兩條傳輸線SCL(Serial Clock line)及SDA(Serial Data line)作串列傳送達成雙向傳輸,簡化了傳輸位元的接線,所有I2C 裝置都並接這兩條線路且連接的是開汲極(Open Drain)的 I/O 接腳,亦即接腳內部的開關在導通時為接地的邏輯低準位(Low),而不導通時則形同斷線浮接,不過 I2C 並不是要使用浮接狀態,而是要使用真正的邏輯高準位,所以在 SDA、SCL 兩線上都加入提升電阻(Pull-high resister),使未導通狀態下線路會處於邏輯高準位(High)狀態。目前已被廣泛應用於各種小型化IC間的資料傳輸如:LCD DRIVER、RAM、EEPROM、AD/DA轉換器及智慧型控制…等。
通常標準的I2C 通訊包含幾個部分:
1) 開始訊號 (START) 或者重複開始訊號(Repeated START) : SCL為高電位時,SDA由高電位降為低電位,開始傳送資料。
2)位址傳输和R/W位元傳輸
3) 資料讀取:當 SCL 由低電位升為高電位時,讀取 SDA 的資料。
4) 應答信號:接收資料的 IC 在接收到 8bit 資料後,向發送資料的IC發出特定的低電位脈衝,表示已收到資料;CPU 向受控單元發出一個信號後,等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情況判斷是否繼續傳遞信號,若未收到應答信號,則判斷受控單元故障。
5) 停止訊號 (STOP) : SCL為高電位時,SDA由低電位升為高電位,結束傳送資料。
由於小編最近有幾個案子是都需要利用NUC140的MCU來做小型的系統設計,有掛一顆24LC64來做應用,而電路的部分夥伴還在設計當中,在等待之餘所以先用以下的開發板來先寫程式。
下圖是利用LA-08邏輯分析儀來解析NUC140的範例程式。
此範例程式主要是利用寫入EEPROM的資料和讀出EEPROM的資料是否符合,若符合就為存取EEPROM測試OK,若不符合就顯示所讀出的資料。此開發板還蠻多範例可使用的,對於要學習MCU的也是一個不錯的選擇喔~~~
此開發板的範例程式可從以下來下載及參考
http://www.nuvoton.com/hq/products/microcontrollers/arm-cortex-m0-mcus/nuc140-240-connectivity-series/nuc140ve3cn/?__locale=zh_TW
留言列表