在單片機與外部設備(簡稱外設)的數據傳送過程中,單片機處于核心地位,所謂的數據輸入和輸出都是相對單片機而言。數據由外設傳送至單片機,為“輸入”,反之為“輸出”。通常,單片機與外設的數據傳送速度差別較大,因此,選擇恰當的數據傳送時間和傳送時間間隔,是保證數據正確傳送的關鍵。在單片機系統(tǒng)中,有三種解決該問題的方法,即程序控制傳送、中斷式傳送和DMA傳送。
1.程序控制傳送
程序控制的傳送方式可分為無條件傳送和查詢方式傳送。無條件傳送默認外設始終處于可以進行數據傳送的狀態(tài),單片機可以隨時與之進行數據交換。這種傳送方式過于簡單,對于復雜的外設應用較少。查詢方式傳送又稱為有條件傳送。在該方式下,單片機需不斷讀取外設的狀態(tài)信息,并通過該信息判斷外設是否處于可進行數據傳送的就緒狀態(tài),若是則進行數據傳送,否則繼續(xù)查詢外設狀態(tài)。查詢方式傳送的優(yōu)點是硬件電路和程序簡單,可靠性高;缺點是由于外設處理速度比較慢,導致單片機CPU被外設狀態(tài)查詢程序占用,工作效率低。
2.中斷傳送
在程序運行過程中,若有突發(fā)、緊急的內部或外部事件發(fā)生,需要單片機處理,單片機將暫停原有程序,轉而執(zhí)行處理該突發(fā)事件的子程序,這一過程就是所謂的“中斷”。引起中斷的事件或發(fā)出中斷請求的對象被稱為“中斷源”,而處理中斷的專用子程序被稱為“中斷服務處理程序”。中斷方式數據傳送利用了單片機的中斷機制和功能。當外設需要與單片機進行數據傳送時,外設主動向單片機發(fā)出中斷請求。單片機若響應該請求,則通過中斷服務處理程序完成與外設間的數據傳送。與查詢方式相比,中斷方式的數據傳送更合理,能夠解放單片機CPU,提高單片機的工作效率,更適合于實時工作系統(tǒng),也有利于系統(tǒng)應對突發(fā)故障的處理,可以進一步提高系統(tǒng)的可靠性和安全性。
3.DMA傳送
在DAM傳送中,直接存儲器(Direct Memory Access,DAM)控制器負責管理存儲器與外設之間的數據交換,單片機CPU得以從數據傳送管理任務中解放出來,其工作效率可以進一步提高。
DMA方式,Direct Memory Access,也稱為成組數據傳送方式,有時也稱為直接內存操作。DMA方式在數據傳送過程中,沒有保存現場、恢復現場之類的工作。由于CPU根本不參加傳送操作,因此就省去了CPU取指令、取數、送數等操作。內存地址修改、傳送字 個數的計數等等,也不是由軟件實現,而是用硬件線路直接實現的。所以DMA方式能滿足高速I/O設備的要求,也有利于CPU效率的發(fā)揮。
原理
一個設備接口試圖通過總線直接向另一個設備發(fā)送數據(一般是大批量的數據),它會先向CPU發(fā)送DMA請求信號。外設通過DMA的一種專門接口電路――DMA控制器(DMAC),向CPU提出接管總線控制權的總線請求,CPU收到該信號后,在當前的總線周期結束后,會按DMA信號的優(yōu)先級和提出DMA請求的先后順序響應DMA信號。CPU對某個設備接口響應DMA請求時,會讓出總線控制權。于是在DMA控制器的管理下,外設和存儲器直接進行數據交換,而不需CPU干預。數據傳送完畢后,設備接口會向CPU發(fā)送DMA結束信號,交還總線控制權。
基本操作
實現DMA傳送的基本操作如下:
1、外設可通過DMA控制器向CPU發(fā)出DMA請求;
2、CPU響應DMA請求,系統(tǒng)轉變?yōu)镈MA工作方式,并把總線控制權交給DMA控制器;
3、由DMA控制器發(fā)送存儲器地址,并決定傳送數據塊的長度;
4、執(zhí)行DMA傳送;
5、DMA操作結束,并把總線控制權交還CPU。