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