如何利用DSP28335通過I2C外接EEPROM存取數(shù)據(jù)
隨著嵌入式系統(tǒng)的發(fā)展,參數(shù)配置在運行時變得越來越常見。為了防止因掉電導(dǎo)致數(shù)據(jù)丟失,存儲這些參數(shù)非常重要。在DSP28335中,可以通過外接I2C EEPROM來實現(xiàn)這一功能。使用AT24C08作為例子
隨著嵌入式系統(tǒng)的發(fā)展,參數(shù)配置在運行時變得越來越常見。為了防止因掉電導(dǎo)致數(shù)據(jù)丟失,存儲這些參數(shù)非常重要。在DSP28335中,可以通過外接I2C EEPROM來實現(xiàn)這一功能。
使用AT24C08作為例子,本文將介紹如何通過DSP28335和I2C總線讀寫EEPROM數(shù)據(jù)。
第一步:連接控制板和EEPROM
首先,我們需要將AT24C08連接到DSP28335控制板上。根據(jù)datasheet,AT24C08的原理圖及引腳如下:
注意上面原理圖接法的設(shè)備地址,A0、A1、A2均為0(也可以其它設(shè)置),所以其地址為1010000X(其中,根據(jù)R/W的區(qū)別選擇1/0)。
根據(jù)AT24C08原理圖,我們可以將其與DSP28335控制板進行連接,接線圖如下:
第二步:I2C傳輸數(shù)據(jù)
I2C是一種串行通信協(xié)議,能夠同時連接多個設(shè)備。在開始傳輸數(shù)據(jù)之前,需要發(fā)送啟動條件。在數(shù)據(jù)傳輸過程中,時鐘信號為高電平時,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定。只有在時鐘線上的信號為低電平時,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。
對于寫數(shù)據(jù)操作,我們需要按照以下代碼進行數(shù)據(jù)傳輸:
在SCL低電平時,修改SDA數(shù)據(jù)到EEPROM。
寫單個存儲字節(jié)到EEPROM中。
對于讀數(shù)據(jù)操作,我們需要按照以下代碼進行數(shù)據(jù)傳輸:
寫入設(shè)備地址及需要讀取數(shù)據(jù)的存儲地址。
重新生成起始條件。
讀取單個存儲字節(jié),需要讀兩次。
在最后一次讀取結(jié)束后,生成停止條件。
第三步:程序代碼實現(xiàn)
根據(jù)以上知識,我們可以編寫相應(yīng)的程序代碼。首先,定義一個全局參數(shù)數(shù)組,包含三個變量,第一次運行到如下所示位置,讀出之前保存在EEPROM里的數(shù)據(jù):
然后,我們可以將TranBuf的三個數(shù)據(jù)寫入EEPROM中,并在掉電后重新上電,再次運行程序,讀出更新后的參數(shù)。
最后,程序代碼如下:
結(jié)論
通過以上步驟,我們可以輕松地利用DSP28335通過I2C外接EEPROM存儲數(shù)據(jù)。這對于運行時需要參數(shù)配置的嵌入式系統(tǒng)而言非常重要。