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