目錄
1、CAT24CXX分頁讀、寫資料原理
2、代碼實作
近日驅動CAT24C08時遇到這樣一個問題:
通常配置資料寫入到EEPROM,256個位元組基本可滿足需求,最近做的一個項目資料量較大,且不确定以後時候還需要增加儲存的資料。是以打算使用分頁讀、寫資料,使不同類型的配置資料空間較大一些。
本項目EEPROM位址使用如下所示:
配置1資料:0Byte~1000Byte;
配置2資料:1001Byte~1100Byte;
配置3資料:1101Byte~1200Byte;
配置4資料:1201Byte~1300Byte。
這樣該如何實作呢?
本博文以CAT24C08為例進行講解。
如何實作CAT24C08分頁讀、寫資料,datasheet中有說明很清楚。
CAT24C08,共有8KB的存儲空間,可通過A2、a9和a8,來選擇裝置位址區域,也就是=8個位址區域,每個位址區域有64頁,每頁16個位元組, 故:64X16X8=8192B,也就是8KB。
A2、a9和a8選擇位址區域,數值範圍如下表所示:
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
是以,可将配置資料按照以下位址塊配置設定:
位址區域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;
以此類推,剩下區域都可以如此操作,然後就可以一頁頁讀寫資料了。