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