<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機控制系統中實(shí)現DMA數據傳送的方法

單片機控制系統中實(shí)現DMA數據傳送的方法

作者: 時(shí)間:2012-02-16 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引 言  

本文引用地址:http://dyxdggzs.com/article/172090.htm

許多中,信息的實(shí)時(shí)處理往往需要的批量。不管是采用軟件查詢(xún),還是采用中斷技術(shù),它們都是依靠程序控制,每次都需要執行若干條指令,因而傳輸速率受指令運行速度的限制。例如,51系列單片機將外設某一存入片外RAM,至少要運行2周期指令MOVX和更改地址指針DPTR指令各兩次,若采用12MHz時(shí)鐘,則需4μs??梢?jiàn),即使不考慮單片機的其它運算,其數據速度也只能達到 250Kbyte/s。對于象高速數據采集等需要成批交換數據的場(chǎng)合,速度實(shí)在是太慢了。為了單片機與高速外設的數據交換,應用接口擴展電路和 控制器,在幾乎不占用單片機資源的情況下,了單片機數據傳送。

2 幾點(diǎn)說(shuō)明  

對于單片機中簡(jiǎn)單的數據傳送,只要應用雙向RAM作為外存儲器或應用簡(jiǎn)單的門(mén)控電路就可。但對于復雜的單片機控制系統,要解決高速外設和低速CPU之間的矛盾,就不能象微機那樣通過(guò)出借系統總線(xiàn)來(lái)實(shí)現數據的DMA傳送,更不能因數據傳送而中斷CPU的工作。為此要求:

(1)當單片機控制系統需與高速外設交換數據時(shí),單片機只能作簡(jiǎn)單的響應,不能長(cháng)時(shí)間中斷工作。解決的辦法是采用擴展數據存儲器系統,數據交換時(shí)CPU只出借擴展數據存儲器作為DMA數據交換的存儲器。

(2)為便于單片機控制系統與高速數據采集或軟磁盤(pán)驅動(dòng)器等外設的連接,其DMA控制方式應具有一致性,符合通用接口標準。

信號線(xiàn)共6條,即:
DMA請求信號DREQ;
DMA響應回答信號DACK;
DMA傳送過(guò)程結束信號
輸入/輸出設備讀寫(xiě)信號線(xiàn)
輸入/輸出設備準備就緒信號線(xiàn)READY。

(3)DMA傳送控制與接口盡量不占用單片機的前處理任務(wù)的緩急情況,相應對DMA請求作出應答,對DMA請求的應答并不占用單片機的資源。

3 電路實(shí)現原理

3.1 存儲器擴展電路 

51系列單片機的外部存儲容量只有64K,在高速數據采集等情況下,其容量明顯不足。若以采樣率50KS/s計算,只能容納1s多的采樣量,況且要求 DMA傳送期間CPU要照常工作,包括對外部數據存儲器的訪(fǎng)問(wèn)。這就要求對存儲容量進(jìn)行擴展。將擴展的存儲器用于DMA,原有的存儲器繼續作為工作存儲器。下面以圖3—1所示存儲器擴展電路為例說(shuō)明存儲器擴展的原理。為說(shuō)明問(wèn)題的方便,省去了編碼電路,只以單片機的P2.7和P2.6作為片選線(xiàn),下一節的DMA控制電路也簡(jiǎn)單以P2.5作片選線(xiàn)。因而特此說(shuō)明,原理電路中各寄存器的端口地址不惟一。

20.jpg

8155芯片內具有256字節的RAM,2個(gè)8位(PA和PB)、1個(gè)6位(PC)可編程I/O口。編程設定PB口和PC口為輸出口,用于為6264提供地址;PA口為雙向輸入輸出口,作為6264的數據口。其地址分配為:

21.jpg

讀寫(xiě)擴展存儲器6264時(shí),在PB口送入6264的低8位地址,PC口送入另5位地址(PC口的另外1位作為單片機對DMA請求的應答線(xiàn))。通過(guò)讀寫(xiě) PA口即可完成擴展存儲器的讀寫(xiě)。雖然存取一次數據要用3條外部RAM讀寫(xiě)指令,但這樣不但擴展了存儲器容量,而且更重要的是在保證CPU不中斷工作的條件下,為數據的DMA傳送創(chuàng )造了條件。

另外,這種存儲器擴展方式,通過(guò)選用不同的擴展芯片或選用多個(gè)擴展芯片,可大大擴展存儲器的容量,如采用8255并口擴展芯片,即可擴展64K的存儲容量。

3.2 DMA控制電路

利用通用DMA控制器構成了圖3—2所示的單片機數據DMA傳送通道,它提供了4通道標準的DMA傳送接口信號,其工作過(guò)程為:

22.jpg


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>