單片機控制系統(tǒng)中實現(xiàn)DMA數(shù)據(jù)傳送的方法
1 引 言
本文引用地址:http://www.ex-cimer.com/article/172090.htm許多單片機控制系統(tǒng)中,信息的實時處理往往需要數(shù)據(jù)的批量傳送。不管是采用軟件查詢,還是采用中斷技術,它們都是依靠程序控制,每次傳送數(shù)據(jù)都需要單片機執(zhí)行若干條指令,因而傳輸速率受單片機指令運行速度的限制。例如,51系列單片機將外設某一數(shù)據(jù)存入片外RAM,至少要運行2周期指令MOVX和更改地址指針DPTR指令各兩次,若采用12MHz時鐘,則需4μs??梢?,即使不考慮單片機的其它運算,其數(shù)據(jù)傳送速度也只能達到 250Kbyte/s。對于象高速數(shù)據(jù)采集等需要成批交換數(shù)據(jù)的場合,速度實在是太慢了。為了實現(xiàn)單片機與高速外設的數(shù)據(jù)交換,應用接口擴展電路和DMA 控制器,在幾乎不占用單片機資源的情況下,實現(xiàn)了單片機控制系統(tǒng)的DMA數(shù)據(jù)傳送。
2 幾點說明
對于單片機控制系統(tǒng)中簡單的DMA數(shù)據(jù)傳送,只要應用雙向RAM作為外存儲器或應用簡單的門控電路就可實現(xiàn)。但對于復雜的單片機控制系統(tǒng),要解決高速外設和低速CPU之間的矛盾,就不能象微機那樣通過出借系統(tǒng)總線來實現(xiàn)數(shù)據(jù)的DMA傳送,更不能因數(shù)據(jù)傳送而中斷CPU的工作。為此要求:
(1)當單片機控制系統(tǒng)需與高速外設交換數(shù)據(jù)時,單片機只能作簡單的響應,不能長時間中斷工作。解決的辦法是采用擴展數(shù)據(jù)存儲器系統(tǒng),數(shù)據(jù)交換時CPU只出借擴展數(shù)據(jù)存儲器作為DMA數(shù)據(jù)交換的存儲器。
(2)為便于單片機控制系統(tǒng)與高速數(shù)據(jù)采集或軟磁盤驅(qū)動器等外設的連接,其DMA控制方式應具有一致性,符合通用接口標準。
信號線共6條,即:
DMA請求信號DREQ;
DMA響應回答信號DACK;
DMA傳送過程結束信號
輸入/輸出設備讀寫信號線
輸入/輸出設備準備就緒信號線READY。
(3)DMA傳送控制與接口盡量不占用單片機的前處理任務的緩急情況,相應對DMA請求作出應答,對DMA請求的應答并不占用單片機的資源。
3 電路實現(xiàn)原理
3.1 存儲器擴展電路
51系列單片機的外部存儲容量只有64K,在高速數(shù)據(jù)采集等情況下,其容量明顯不足。若以采樣率50KS/s計算,只能容納1s多的采樣量,況且要求 DMA傳送期間CPU要照常工作,包括對外部數(shù)據(jù)存儲器的訪問。這就要求對存儲容量進行擴展。將擴展的存儲器用于DMA,原有的存儲器繼續(xù)作為工作存儲器。下面以圖3—1所示存儲器擴展電路為例說明存儲器擴展的原理。為說明問題的方便,省去了編碼電路,只以單片機的P2.7和P2.6作為片選線,下一節(jié)的DMA控制電路也簡單以P2.5作片選線。因而特此說明,原理電路中各寄存器的端口地址不惟一。
8155芯片內(nèi)具有256字節(jié)的RAM,2個8位(PA和PB)、1個6位(PC)可編程I/O口。編程設定PB口和PC口為輸出口,用于為6264提供地址;PA口為雙向輸入輸出口,作為6264的數(shù)據(jù)口。其地址分配為:
讀寫擴展存儲器6264時,在PB口送入6264的低8位地址,PC口送入另5位地址(PC口的另外1位作為單片機對DMA請求的應答線)。通過讀寫 PA口即可完成擴展存儲器的讀寫。雖然存取一次數(shù)據(jù)要用3條外部RAM讀寫指令,但這樣不但擴展了存儲器容量,而且更重要的是在保證CPU不中斷工作的條件下,為數(shù)據(jù)的DMA傳送創(chuàng)造了條件。
另外,這種存儲器擴展方式,通過選用不同的擴展芯片或選用多個擴展芯片,可大大擴展存儲器的容量,如采用8255并口擴展芯片,即可擴展64K的存儲容量。
3.2 DMA控制電路
利用通用DMA控制器構成了圖3—2所示的單片機數(shù)據(jù)DMA傳送通道,它提供了4通道標準的DMA傳送接口信號,其工作過程為:
評論