唐玉兵,秦祖銘
(瀘州職業技術學院 電子工程系,四川 瀘州 646005)
構建基于24XX系列存儲器通用函數庫的研究
唐玉兵,秦祖銘
(瀘州職業技術學院 電子工程系,四川 瀘州 646005)
24XX系列EEPROM存儲器是目前電子產品開發中使用頻率較高的存儲設備,文章通過構建基于該存儲器的驅動函數和應用函數庫,既可以提高產品開發速度,又可以提升存儲器的讀寫穩定性。
i2c EEPROM;存儲器;函數庫
24系列EEPROM存儲器是現代電子產品中使用非常廣泛的一種基于I2C協議的存儲器。24XX系列存儲器容量多種多樣,從24C01的128字節到24C512的64K都有,可以滿足不同產品的需要。筆者產品開發時也經常用到24系列存儲器,本文旨在構建通用的24XX系列存儲器函數庫,不管程序大小,均可方便使用,以節約下次用到該類存儲器時的開發時間。
函數庫構建主要包括兩部分內容,一部分為存儲器的基本I2C驅動函數,另一部分則為使用存儲器時的應用函數。
(1)24XX存儲器的I2C協議時序圖。I2C驅動程序的編寫需要仔細閱讀I2C協議的時序圖,如下圖1所示。根據時序圖,按照時序要求把SCL和SDA分別置高電平或者低電平,即可完成存儲器的操作,語言用匯編語言或者C語言均可。時序中包含了啟動時序,讀寫時序和結束時序。
(2)I2C開始函數i2c_start。參見圖1中的start condition部分,先置SCL和SDA信號為高電平,延時一段時間后SDA置低電平,SCL再置低電平即可。根據時序,可以寫出下列啟動函數,I2C結束函數也類似。函數操作流程內容如下:
SDA=1;SCL=1;SDA=0;SCL=0;
(3)I2C寫入函數i2c_sendbyte。參見圖1中的SDA INPUT部分,此時需要數據SDA處于穩定狀態,當SCL信號由高電平變為低電平時,把SDA信號的電平狀態寫入I2C存儲器。根據時序可以寫出下列寫入一個字節的函數,讀取函數的寫法參見時序圖也類似。函數操作流程內容如下:
該存儲器的應用函數庫構建,主要為了滿足不同產品開發的需求,根據讀寫方向,一般有以下幾種情況:從存儲器讀取到內存;從內存寫入存儲器;從存儲器一個地址寫入存儲器的另一個地址。根據數據類型,讀寫操作的數據可以是字節、字、雙字、字符串和任意用戶自定義數據類型。
基于這種用途,該應用函數庫主要構建下列幾個核心函數,即:字節讀取函數i2c_readbyte,字節寫入函數i2c_writebyte,字讀取函數i2c_readword,字寫入函數i2c_writeword,字符串讀取函數i2c_readstr,字符串寫入函數i2c_writestr,存儲器存儲區域初始化函數i2c_setn,存儲器塊數據讀出到內存函數i2c_copytomem內存塊寫入存儲器函數i2c_copyfrommem,存儲器片內復制函數i2c_copy。下面選取部分函數構建情況作以說明。
(1)讀取字節函數。24系列存儲器的讀取包括順序讀取和隨機讀取兩種。按照容量不同,讀取有區別,24C02和24C01容量不大于256字節,操作的地址為8位;24C04及其以上,容量大于256字節,無法用8位地址,用的是16位地址操作。根據讀取存儲器的操作流程,可以寫出24C04以上類型的讀取函數。函數操作流程內容如下:
圖1 I2C協議時序圖
24C04以下類型采用8位地址操作,在編寫隨機讀取函數時,只需要把函數中分兩次8位寫入的地址,改為寫入一次8位地址即可。
(2)存儲器的頁操作,為了提升存儲器的讀寫速度,24xx系列大容量存儲器支持頁操作,一次可以操作64或者128字節。存儲器頁寫入函數,對于寫入大量數據可以大大地提高操作速度。對于一片存儲區域,分三段,開始和結束時的不滿64字節直接寫入,中間部分按照每次64字節寫入。函數操作流程內容如下:
24系列eeprom存儲器在產品開發時使用率很高,通過對24系列函數庫的構建,可以大大提升開發速度,而且可以提升存儲器讀寫穩定性。對該產品應用編程有一定的指導意義。
A Research on the Establishment of the Universal Function Library of the Memory of 24XX series
TANG Yu-bing,QIN Zhu-ming
(Department ofElectronic Engineering,Luzhou Vocational and Technical College,Luzhou,Sichuan 646005,China).
EEPROM memory of 24XX series is a memory device frequently applied in the development of electronic products,in this paper,the driving function library and application function library directing at this memory were created, which would not only enhance the development speed,but also improve memory’s read-write stability.
i2c EEPROM;memory;function library
TP333
A
2095-980X(2015)04-0043-02
2015-02-15
唐玉兵(1979-),男,四川宜賓人,大學本科,講師,主要研究方向:嵌入式開發。