PC機(jī)直接存取單片機(jī)內(nèi)存技術(shù)
單片機(jī)以體積小、價(jià)格......
單片機(jī)以體積小、價(jià)格低、抗干擾性能好等優(yōu)點(diǎn)在智能儀器、測(cè)控系統(tǒng)等方面被廣泛應(yīng)用,但其數(shù)據(jù)處理能力和工具的豐富程度卻遠(yuǎn)不及個(gè)人
計(jì)算機(jī)。因此在研制高速數(shù)據(jù)采集分析系統(tǒng)時(shí),取二者之長(zhǎng),即以單片機(jī)為核心構(gòu)成便攜式測(cè)量子系統(tǒng),測(cè)得的數(shù)據(jù)存于帶后備電池的RAM中(
其容量可通過(guò)單片機(jī)片外數(shù)據(jù)存儲(chǔ)器擴(kuò)展技術(shù)擴(kuò)展至幾兆甚至幾十兆字節(jié));然后通過(guò)數(shù)據(jù)通信傳輸?shù)絇C機(jī)中進(jìn)行后續(xù)處理,也可長(zhǎng)期保存在
磁盤中。
1 PC機(jī)與單片機(jī)之間的傳統(tǒng)通信方式
PC機(jī)與單片機(jī)之間常規(guī)的通信手段一般有串行通信和并行通信。但當(dāng)傳輸?shù)臄?shù)據(jù)很大時(shí),若采用常規(guī)的串行傳輸手段:?jiǎn)纹瑱C(jī)映象數(shù)據(jù)存
儲(chǔ)區(qū)——單片機(jī)CPU——串行通訊鏈路——PC機(jī)CPU——磁盤,則會(huì)因效率太低而使其實(shí)用性大為降低,設(shè)波特率為4800,則8兆字節(jié)數(shù)據(jù)量?jī)H
通過(guò)串口所需時(shí)間約為5小時(shí),即使改用并口通訊,數(shù)據(jù)經(jīng)上述流程時(shí)每傳送一個(gè)字節(jié)也需PC機(jī)和單片機(jī)各上百個(gè)時(shí)鐘周期,當(dāng)數(shù)據(jù)量達(dá)到幾
十兆時(shí),傳輸時(shí)間長(zhǎng)得驚人。這不符合實(shí)際需要,而且無(wú)論串行通訊還是并行通訊都要占用PC機(jī)資源,給工作帶來(lái)諸多不便。
2 單片機(jī)內(nèi)存DA(Direct Access)存取概念
IBM-PC系列微機(jī)在進(jìn)行大量數(shù)據(jù)傳輸時(shí),為提高速度和效率通常采用存儲(chǔ)器直接存取(DMA)轉(zhuǎn)送方式。DMA轉(zhuǎn)送的基本特點(diǎn)是不經(jīng)過(guò)CPU,
不破壞CPU內(nèi)各寄存器內(nèi)容,在DMA控制器控制下直接實(shí)現(xiàn)存儲(chǔ)器與I/O設(shè)備之間的數(shù)據(jù)傳送,PC機(jī)用DMA方式傳送一個(gè)字節(jié)通常只需一個(gè)總線周
期,即5個(gè)時(shí)鐘周期1.05μs,CPU內(nèi)部只是暫停這個(gè)總線周期的指令操作,指令的操作次序不會(huì)被破壞。故DMA方式特別適合外部設(shè)備與存儲(chǔ)器
之間成批數(shù)據(jù)的高速傳輸。IBM-PC系統(tǒng)中存儲(chǔ)器與磁盤之間即是采用DMA方式進(jìn)行數(shù)據(jù)傳輸。
參照PC機(jī)DMA傳送特點(diǎn),在單片機(jī)與PC機(jī)構(gòu)成的數(shù)據(jù)傳送系統(tǒng)中,將PC機(jī)看作單片機(jī)的外部設(shè)備,其CPU為“DMA控制器”。在數(shù)據(jù)傳輸過(guò)
程中無(wú)須單片機(jī)CPU參與,由PC機(jī)CPU直接讀取單片機(jī)數(shù)據(jù)存儲(chǔ)區(qū),通過(guò)PC機(jī)閑置口地址實(shí)現(xiàn)數(shù)據(jù)傳輸,這樣不但能夠保持PC機(jī)指令次序不被破
本文有[www.0574-laser.com]提供,請(qǐng)及時(shí)關(guān)注[www.0574-laser.com]提供的內(nèi)容
壞從而減少在傳輸過(guò)程中因外界干擾而引起的數(shù)據(jù)混亂和丟失,更主要的是能顯著提高傳輸速度。利用直接存取方法在MCS系列單片機(jī)與PC機(jī)
之間傳輸8兆字節(jié)數(shù)據(jù)可在30秒內(nèi)完成,其效果十分明顯。
本文有[www.0574-laser.com]提供,請(qǐng)及時(shí)關(guān)注[www.0574-laser.com]提供的內(nèi)容
3 硬件實(shí)現(xiàn)
要實(shí)現(xiàn)PC機(jī)直接存取單片機(jī)映象存儲(chǔ)區(qū),需通過(guò)相應(yīng)的接口電路在物理上將PC機(jī)與單片機(jī)映象存儲(chǔ)區(qū)連接起來(lái)。接口電路原理如圖1所示
。
圖中浮動(dòng)尋址模塊由比較器和撥動(dòng)開(kāi)關(guān)組成,選定用于數(shù)據(jù)傳送的PC機(jī)I/O口地址;地址鎖存模塊由3片74LS373構(gòu)成,用于鎖存PC機(jī)8位數(shù)
據(jù)線以形成讀取單片機(jī)映象存儲(chǔ)區(qū)所需的地址線。當(dāng)PC機(jī)存取單片機(jī)映象存儲(chǔ)區(qū)時(shí),采用機(jī)械式數(shù)據(jù)通道緩沖器隔離單片機(jī)對(duì)該存儲(chǔ)區(qū)的控制
以避免主機(jī)與單片機(jī)在總線上發(fā)生沖突。根據(jù)需要,數(shù)據(jù)緩沖也可采用光電隔離或軟件手段實(shí)現(xiàn),如果PC機(jī)讀取數(shù)據(jù)時(shí)以及讀取數(shù)據(jù)后均無(wú)須
單片機(jī)參與工作,則采用機(jī)械式數(shù)據(jù)通道緩沖最為簡(jiǎn)單可靠,本文所述即是這種情況。
圖1 接口電路原理簡(jiǎn)圖
4 數(shù)據(jù)傳輸?shù)能浖?shí)現(xiàn)
由于PC機(jī)直接存取單片機(jī)數(shù)據(jù)存儲(chǔ)區(qū),整個(gè)傳輸過(guò)程無(wú)須單片機(jī)參與,通訊控制完全由PC機(jī)完成,因而軟件編寫(xiě)非常方便簡(jiǎn)單,這是本方
法的又一顯著優(yōu)點(diǎn)。傳輸軟件可用任一種編程語(yǔ)言編寫(xiě),框圖如圖2所示。下面是用C語(yǔ)言開(kāi)發(fā)的PC機(jī)存取單片數(shù)據(jù)區(qū)的源程序:
#include
……
int x;
unsigned int i,j;
FILE *fp;
Char s[10]
Printf(“請(qǐng)輸入文件名:”);
Scanf(“%s”,s);
If((fp=fopen(s,“WB”))==NULL) exit (0);
/* 初始化 /
outportb (0x300,0x52);
/*傳輸數(shù)據(jù)循環(huán)*/
for(I=0x55;I<=0xff;I++)
{ outportb(0x301,i);
for(j=0;j<=0xff;j++);
{ outportb (0x302,j);
x=inportb(0x303);
fprintf(fp,”%d”,x);
}
} fclose(fp);
……
圖2 軟件框圖
5 結(jié)論
本文從PC機(jī)DMA思想出發(fā),針對(duì)數(shù)據(jù)采集應(yīng)用中主機(jī)與前端單片機(jī)之間成批數(shù)據(jù)高速場(chǎng)合提出了PC機(jī)對(duì)單片機(jī)內(nèi)存直接存取的概念。并設(shè)
計(jì)了相應(yīng)的接口電路和傳輸程序,經(jīng)實(shí)際調(diào)試、運(yùn)行,證明直接存取法是可行有效的,而且這一思路不只限于存取單片機(jī)內(nèi)存,可用于任何機(jī)
型包括同種機(jī)型之間的大數(shù)據(jù)量成批高速傳送場(chǎng)合。