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