1. 程式人生 > >(3)LinuxI2C驅動--解析EEPROM的讀寫

(3)LinuxI2C驅動--解析EEPROM的讀寫

本節介紹eeprom的讀寫時序,參考的是AT24C01A的datasheet。

1. 概述

AT24C01A的儲存大小是1K,頁大小是8個位元組。
這裡寫圖片描述

2. 裝置地址

這裡寫圖片描述
7位地址,前四位是1010,後三位由晶片引腳決定,由原理圖可知後三位是000,也就是裝置地址為0x50,因為資料傳輸是8位的,最後一位決定是讀還是寫。

3. 讀eeprom

這裡寫圖片描述
讀任意地址eeprom的資料,首先第一個位元組得先在SDA上發出eeprom的裝置地址,也就是0x50,並且8位資料的最後一位是低電平表示寫裝置,然後第二個位元組是要讀的資料在eeprom內的地址,這樣以後再產生開始條件,第三個位元組在SDA上發出裝置地址,此時的最後一位是高電平,表示讀裝置,第四個位元組的資料就是讀eeprom的對應地址的資料。

可以看到,讀eeprom需要兩個開始條件,也就是2條訊息,第一條訊息寫eeprom確定讀的位置,大小為2個位元組,第二條訊息才是真正的讀eeprom。

4. 寫eeprom

這裡寫圖片描述
寫eeprom就相對簡單,只需一個開始條件,第一個位元組發出裝置地址和置最低位為低電平表示寫eeprom,第二個位元組發出要讀資料在eerpom的地址,第三個位元組讀到的資料就對應地址在eeprom上的資料。