天天看點

EEPROM CAT24CXX實作分頁讀、寫資料

目錄

1、CAT24CXX分頁讀、寫資料原理

2、代碼實作

近日驅動CAT24C08時遇到這樣一個問題:

通常配置資料寫入到EEPROM,256個位元組基本可滿足需求,最近做的一個項目資料量較大,且不确定以後時候還需要增加儲存的資料。是以打算使用分頁讀、寫資料,使不同類型的配置資料空間較大一些。

本項目EEPROM位址使用如下所示:

配置1資料:0Byte~1000Byte;

配置2資料:1001Byte~1100Byte;

配置3資料:1101Byte~1200Byte;

配置4資料:1201Byte~1300Byte。

這樣該如何實作呢?

本博文以CAT24C08為例進行講解。

如何實作CAT24C08分頁讀、寫資料,datasheet中有說明很清楚。

EEPROM CAT24CXX實作分頁讀、寫資料

CAT24C08,共有8KB的存儲空間,可通過A2、a9和a8,來選擇裝置位址區域,也就是=8個位址區域,每個位址區域有64頁,每頁16個位元組, 故:64X16X8=8192B,也就是8KB。

A2、a9和a8選擇位址區域,數值範圍如下表所示:

EEPROM CAT24CXX實作分頁讀、寫資料

A2 a9 a8  

0 0 0 位址區域0

0 0 1 位址區域1

0 1 0 位址區域2

0 1 1 位址區域3

1 0 0 位址區域4

1 0 1 位址區域5

1 1 0 位址區域6

1 1 1 位址區域7

是以,可将配置資料按照以下位址塊配置設定:

EEPROM CAT24CXX實作分頁讀、寫資料

位址區域0

配置1資料:0Byte~1000Byte

位址區域1

配置2資料:1001Byte~1100Byte

配置3資料:1101Byte~1200Byte

配置4資料:1201Byte~1300Byte

本代碼驅動過程并沒有什麼變化,重點在于處理位址位,一般情況下我們預設使用位址區域0就滿足開發需求,現在需要在讀、寫位址位基礎上按位或位址區域。

使用位址區域0的時候,可預設位址位為:0XA0,讀、寫資料,位址如下所示:

uint8_t dev_addr_r = dev_addr | 0x01;
  uint8_t dev_addr_w = dev_addr & 0xFE;      

使用位址區域1的時候,可預設位址位為:0XA2,讀、寫資料,位址如下所示:

uint8_t dev_addr_r = dev_addr | 0x01;
  uint8_t dev_addr_w = dev_addr & 0xFE;      

以此類推,剩下區域都可以如此操作,然後就可以一頁頁讀寫資料了。

繼續閱讀