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