唐玉兵,秦祖銘
(瀘州職業(yè)技術(shù)學(xué)院 電子工程系,四川 瀘州 646005)
構(gòu)建基于24XX系列存儲器通用函數(shù)庫的研究
唐玉兵,秦祖銘
(瀘州職業(yè)技術(shù)學(xué)院 電子工程系,四川 瀘州 646005)
24XX系列EEPROM存儲器是目前電子產(chǎn)品開發(fā)中使用頻率較高的存儲設(shè)備,文章通過構(gòu)建基于該存儲器的驅(qū)動函數(shù)和應(yīng)用函數(shù)庫,既可以提高產(chǎn)品開發(fā)速度,又可以提升存儲器的讀寫穩(wěn)定性。
i2c EEPROM;存儲器;函數(shù)庫
24系列EEPROM存儲器是現(xiàn)代電子產(chǎn)品中使用非常廣泛的一種基于I2C協(xié)議的存儲器。24XX系列存儲器容量多種多樣,從24C01的128字節(jié)到24C512的64K都有,可以滿足不同產(chǎn)品的需要。筆者產(chǎn)品開發(fā)時也經(jīng)常用到24系列存儲器,本文旨在構(gòu)建通用的24XX系列存儲器函數(shù)庫,不管程序大小,均可方便使用,以節(jié)約下次用到該類存儲器時的開發(fā)時間。
函數(shù)庫構(gòu)建主要包括兩部分內(nèi)容,一部分為存儲器的基本I2C驅(qū)動函數(shù),另一部分則為使用存儲器時的應(yīng)用函數(shù)。
(1)24XX存儲器的I2C協(xié)議時序圖。I2C驅(qū)動程序的編寫需要仔細(xì)閱讀I2C協(xié)議的時序圖,如下圖1所示。根據(jù)時序圖,按照時序要求把SCL和SDA分別置高電平或者低電平,即可完成存儲器的操作,語言用匯編語言或者C語言均可。時序中包含了啟動時序,讀寫時序和結(jié)束時序。
(2)I2C開始函數(shù)i2c_start。參見圖1中的start condition部分,先置SCL和SDA信號為高電平,延時一段時間后SDA置低電平,SCL再置低電平即可。根據(jù)時序,可以寫出下列啟動函數(shù),I2C結(jié)束函數(shù)也類似。函數(shù)操作流程內(nèi)容如下:
SDA=1;SCL=1;SDA=0;SCL=0;
(3)I2C寫入函數(shù)i2c_sendbyte。參見圖1中的SDA INPUT部分,此時需要數(shù)據(jù)SDA處于穩(wěn)定狀態(tài),當(dāng)SCL信號由高電平變?yōu)榈碗娖綍r,把SDA信號的電平狀態(tài)寫入I2C存儲器。根據(jù)時序可以寫出下列寫入一個字節(jié)的函數(shù),讀取函數(shù)的寫法參見時序圖也類似。函數(shù)操作流程內(nèi)容如下:
該存儲器的應(yīng)用函數(shù)庫構(gòu)建,主要為了滿足不同產(chǎn)品開發(fā)的需求,根據(jù)讀寫方向,一般有以下幾種情況:從存儲器讀取到內(nèi)存;從內(nèi)存寫入存儲器;從存儲器一個地址寫入存儲器的另一個地址。根據(jù)數(shù)據(jù)類型,讀寫操作的數(shù)據(jù)可以是字節(jié)、字、雙字、字符串和任意用戶自定義數(shù)據(jù)類型。
基于這種用途,該應(yīng)用函數(shù)庫主要構(gòu)建下列幾個核心函數(shù),即:字節(jié)讀取函數(shù)i2c_readbyte,字節(jié)寫入函數(shù)i2c_writebyte,字讀取函數(shù)i2c_readword,字寫入函數(shù)i2c_writeword,字符串讀取函數(shù)i2c_readstr,字符串寫入函數(shù)i2c_writestr,存儲器存儲區(qū)域初始化函數(shù)i2c_setn,存儲器塊數(shù)據(jù)讀出到內(nèi)存函數(shù)i2c_copytomem內(nèi)存塊寫入存儲器函數(shù)i2c_copyfrommem,存儲器片內(nèi)復(fù)制函數(shù)i2c_copy。下面選取部分函數(shù)構(gòu)建情況作以說明。
(1)讀取字節(jié)函數(shù)。24系列存儲器的讀取包括順序讀取和隨機(jī)讀取兩種。按照容量不同,讀取有區(qū)別,24C02和24C01容量不大于256字節(jié),操作的地址為8位;24C04及其以上,容量大于256字節(jié),無法用8位地址,用的是16位地址操作。根據(jù)讀取存儲器的操作流程,可以寫出24C04以上類型的讀取函數(shù)。函數(shù)操作流程內(nèi)容如下:
圖1 I2C協(xié)議時序圖
24C04以下類型采用8位地址操作,在編寫隨機(jī)讀取函數(shù)時,只需要把函數(shù)中分兩次8位寫入的地址,改為寫入一次8位地址即可。
(2)存儲器的頁操作,為了提升存儲器的讀寫速度,24xx系列大容量存儲器支持頁操作,一次可以操作64或者128字節(jié)。存儲器頁寫入函數(shù),對于寫入大量數(shù)據(jù)可以大大地提高操作速度。對于一片存儲區(qū)域,分三段,開始和結(jié)束時的不滿64字節(jié)直接寫入,中間部分按照每次64字節(jié)寫入。函數(shù)操作流程內(nèi)容如下:
24系列eeprom存儲器在產(chǎn)品開發(fā)時使用率很高,通過對24系列函數(shù)庫的構(gòu)建,可以大大提升開發(fā)速度,而且可以提升存儲器讀寫穩(wěn)定性。對該產(chǎn)品應(yīng)用編程有一定的指導(dǎo)意義。
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-),男,四川宜賓人,大學(xué)本科,講師,主要研究方向:嵌入式開發(fā)。