用P89C664實現(xiàn)I2C總線大批量數(shù)據(jù)的自動存儲
摘要:結(jié)合Flash Magic軟件對PhilipsP89C664單片機ISP功能進行詳細介紹,同時詳細敘述利用P89C664硬件I2C接口接收數(shù)據(jù)并轉(zhuǎn)發(fā)到電腦,實現(xiàn)I2C總線大批量數(shù)據(jù)的自動保存技術(shù),并附有完事的源泉程序清單及必要的注釋。
關(guān)鍵詞:Flash Magic ISP I2C P89C664
引言
在實際工作中,有些情況下可能需要對一些I2C接口發(fā)出的數(shù)據(jù)進行分析,如果數(shù)據(jù)較少則比較容易解決。比如可以直接把數(shù)據(jù)保存到單片機的RAM中,然后通過LED顯示出來,但如果數(shù)據(jù)量很大,這種方法就很河取了。在這種情況下,想辦法把大量的數(shù)據(jù)保存到電腦里是一個比較好的方法這樣不但可以解決大批量數(shù)據(jù)的存儲問題,同時也易于編輯、分析和打印。
但是,電腦的外設(shè)接口中是沒有I2C接口的,因此需要對I2C部遲疑不決的數(shù)據(jù)進行轉(zhuǎn)換,使之能發(fā)往電腦,實現(xiàn)數(shù)據(jù)的文件存儲。綜合各種因素考慮,采用UART串口的方式比較方便,因為串口技術(shù)簡單、應(yīng)用廣泛、各種應(yīng)用軟件也較為豐富。
本文不僅介紹了如何實現(xiàn)I2C數(shù)據(jù)的轉(zhuǎn)發(fā)和自動存儲,同時也介紹了P89C664的ISP功能,并給出了詳細配合相關(guān)軟件,完全可以省去一臺價格不菲的編程器,實用性強。這非常適合業(yè)余自學(xué)單片機技術(shù)或者在家吵建立一個簡單實用的開發(fā)系統(tǒng)。
1 P89C664單片機及ISP、IAP簡介
P89C664是Plilips公司一款優(yōu)秀的51內(nèi)核單片機芯片、帶64KB的Flash程序夏令、1792B的數(shù)據(jù)存儲器、I2C硬件全工作方式接口、6 clocks/12 clocks可選、8個中斷源/4級中斷優(yōu)先級、雙DPTR寄存器、PCA以及IAP、ISP功能等,具體內(nèi)容請參考相關(guān)資源。在Philips的網(wǎng)站上可以下載到詳細的技術(shù)資料及各種應(yīng)用文檔:http://www.semiconductors.philips.com/。
下面科簡單的介紹一下ISP、IAP的概念。
ISP(In System Programming),即在系統(tǒng)編程。它允許MCU還在產(chǎn)品電路板上時,對其下載新的程序。這種技術(shù)的一個明優(yōu)點是,不需要把MCU芯片從你的電路板上拆下來,再裝到傳統(tǒng)的編程器上來寫入新的程序。你盡可以把具有ISP功能的MCU芯片焊接在電路板上,應(yīng)用更加可靠、方便。當然,你得把MCU的UART串口留出,并設(shè)計好簡單的外圍電路;同時還配有一個專用的ISP軟件以實現(xiàn)用戶程序的直下載。這種專用的ISP下載軟件可以在各公司的網(wǎng)部上免費下載到。P89C664的ISP軟件可在Philips公司的網(wǎng)站上下載。當然,如果你有興趣也可以自己設(shè)計一個個性化的ISP下載軟件,因為Philips公司對ISP的各種編程指令是開放的。
IAP(In Application Programming),即在應(yīng)用中程序。就是說,MCU自己可以獲取新的代碼并對自己重新編程。這是一個極為有用的技術(shù),比如可以通過Internet、程控電話網(wǎng)等給你的產(chǎn)品遠程升級,就像常見的殺毒軟件可以自動升級一樣。有了這項技術(shù),你就可以利用現(xiàn)在的程控電話網(wǎng)、互聯(lián)網(wǎng)等實現(xiàn)你的嵌入式系統(tǒng)遠程自動升級,而無須傳統(tǒng)的那種給客戶郵寄芯片而帶來的不便。
需要指出的是:ISP和IAP的核心技術(shù)是相同的,都是調(diào)用內(nèi)部的標準程序?qū)lash存儲器進行擦除和重新編程。區(qū)別在于:ISP由片內(nèi)固化的一個默認的串行加載程序(Boot Loader)來完成這一動作;而IAP則由用戶在自己的程序中完成這一調(diào)用,這就為產(chǎn)品的遠程升級提供了可能,甚至可以說是MCU應(yīng)用技術(shù)的一個里程碑。
2 ISP技術(shù)的應(yīng)用
對于Philips的MCU,其ISP電路很簡單,就是一個與計算機串口通信的電路(注:根據(jù)ISP控制軟件的不同電路會略有不同),電路如圖1所示。
國外的嵌入式系統(tǒng)學(xué)會(Embedded Systems Academy)提供了一個ISP軟件Flash Magic,可以在該組織的網(wǎng)站上下載到,網(wǎng)址為http://www.esacademy.com/。上面的連接電路也是與該軟件配套使用的。這是一款很優(yōu)秀的軟件,操作方便、功能強大,并且該軟件支持Philips公司的幾乎所有帶ISP的器件。另外,Philips公司也免費提供ISP軟件,但其易用性方面不如Flash Magic。
Flash Magic的安裝過程與標準的Windows軟件類似,在此不再詳述。安裝完成后,啟動Flash Magic后,有圖2所示畫面。
緊接著Flash Magic軟件將用默認的設(shè)置嘗試連接ISP芯片,如圖3所示。
請注意狀態(tài)欄中的顯示“Attempting to connect...”,說明Flash Magic正在嘗試著連接ISP裝置。如果你已經(jīng)用Flash Magic下載過程序并且沒有更改ISP裝置的話,則很快就可連接上。如果你是第一次使用,則需要進行一些必要的針對性設(shè)置,以便Flash Magic能正常連接帶ISP的MCU。如果連接不上,F(xiàn)lash Magic將彈出圖4所示的提示框。
請點擊“取消”!然后在軟件的主界面中選擇菜單Options/Advanced Options...,如圖5所示。
此時彈出設(shè)置框,請切換到Hardware Config選項卡,如圖6所示。
使“Use DTR and RTS to control RST and PSEN”、“Keep RTS asserted while COM Port open”選項有效即可,其它都不用更改,直接點“OK”確定。
Flash Magic的主界面上有清晰的1、2、3、4、5數(shù)字指示。這1~5的數(shù)字不令表示5個不同的區(qū)域,同時也不是下載程序的5個步驟。當然如果你已經(jīng)設(shè)置好了,每次下載后就可直接點"start"按鈕即可。
在區(qū)域1中,我們需要設(shè)置這里的每一個選項,在這里我們是以P89C664為例的,如圖7所示。
COM Port:Flash Magic支持COM1、COM2、COM3和COM4共4個串口,在過大多數(shù)電腦只有COM1和COM2口,主選擇正確的COM口,該COM就是連接用戶板的那個串口。
Device:選擇ISP器件型號,在Flash Magic的1.81版中,共支持35種ISP器件,這里選擇P89C664。
Oscillator Frea.(MHz):在這里請?zhí)钊肽阌脩舭迳螹CU用兵晶振頻率值。
其它部分類似,可以自己下載下一個Flash Magic,新自操作一下就會很清楚了。
除了下載用戶程序外,F(xiàn)lash Magic還提供了其它的一些功能,都集中在“ISP”菜單中。可以親自去試一下,以后你會發(fā)現(xiàn)Flash Magic真的很好用。有了它一定能讓你的開發(fā)工作事半功倍,而且可以省去一臺昂貴的編程器,對單片機的初學(xué)者尤為適用。
3 I2C接收數(shù)據(jù)并轉(zhuǎn)發(fā)到電腦
由于P89C664帶有硬件I2C接口,因此我們用它作為從器件接收I2C總線上的數(shù)據(jù),Philips公司在相關(guān)的技術(shù)資料中給出了標準的I2C接口控制程序包。其實也可根據(jù)P89C664的資料自己來編寫I2C接口的控制程序,不過Philips公司提供的參考程序很值得我們學(xué)習、研究。下面程序中用的就是Phlips公司推出的I2C接口控制程序,為了更適用于接收大批量的I2C總線數(shù)據(jù),我們對其中的一部分代碼作了必要的更改,如果需要標準的控制程序請自己從Philips的網(wǎng)站上下載。
程序的流程是首先設(shè)置好I2C接口的地址以及各SFR的值,然后啟動I2C接口,并把接收到的數(shù)據(jù)通過串口發(fā)往電腦,在電腦上啟動另一串口調(diào)試軟件并做好相關(guān)的設(shè)置,即可將I2C總線的數(shù)據(jù)接收并保存下來。在這里,我們的用戶板作用相當于一個協(xié)議轉(zhuǎn)換裝置,即把I2C總線的數(shù)據(jù)流轉(zhuǎn)換為UART的數(shù)據(jù)流并發(fā)往電腦。
請注意:一般我們的ISP下載、串口調(diào)試是公用同一部分電路和同一個串口的。因此,F(xiàn)lash Magic和串口調(diào)試軟件不能同時啟動,否則將出錯,請在下載完程序后關(guān)閉Flash Magic軟件再啟動串口調(diào)試軟件。
由于串口一直以來都是各種計算機系統(tǒng)所提供的一個標準接口,因此串口中的調(diào)試軟件在網(wǎng)上隨處可見,當然你若有興趣也可自己設(shè)計一款串口調(diào)試軟件。
在這里我們采用的是一個名為串口調(diào)試器,英文名COMPort Debuger的軟件,比較好用,并且具有大批量數(shù)據(jù)的自動保存功能,這個功能很重要。該軟件啟動后的界面如圖8所示。
在用戶板程序運行并對串口調(diào)試設(shè)置好后即可點“打開串口”,此時在接收區(qū)將顯示通過串口發(fā)來的各種數(shù)據(jù)。
網(wǎng)站(www.dpj.com.cn)給出該轉(zhuǎn)發(fā)裝置中P89C664的完事源泉程序,程序中附有必要的注釋。
結(jié)語
本文較為詳細的介紹了P89C664 ISP功能的應(yīng)用,及利用簡單的在線下載裝置編程實現(xiàn)I2C總線的數(shù)據(jù)轉(zhuǎn)發(fā)和保存;同時給出了詳細的I2C硬件接口的初始化及整套裝置的源程序??捎糜诟鞣N大批量I2C總線數(shù)據(jù)的自動保存、編輯、分析、打印等,也可將該置用于一般的開發(fā)中,測試你的程序是否滿足要求等。
評論