第12章直接存儲(chǔ)器訪問(wèn)(DMA)模塊_第1頁(yè)
第12章直接存儲(chǔ)器訪問(wèn)(DMA)模塊_第2頁(yè)
第12章直接存儲(chǔ)器訪問(wèn)(DMA)模塊_第3頁(yè)
第12章直接存儲(chǔ)器訪問(wèn)(DMA)模塊_第4頁(yè)
第12章直接存儲(chǔ)器訪問(wèn)(DMA)模塊_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十二講 直接存儲(chǔ)器訪問(wèn)(DMADMA)模塊1 1、DMADMA模塊概述模塊概述2 2、F28335F28335的的DMADMA模塊模塊3 3、DMADMA模塊的寄存器模塊的寄存器4 4、DMADMA模塊應(yīng)用模塊應(yīng)用DMADMA模塊概述模塊概述 數(shù)字信號(hào)控制器的優(yōu)勢(shì)不能純粹以處理器的速度來(lái)衡量,而是以整個(gè)系統(tǒng)的能力來(lái)衡量。數(shù)字信號(hào)控制器處理的許多應(yīng)用操作都要用大量的帶寬來(lái)移動(dòng)數(shù)據(jù),如從片外存儲(chǔ)器到片內(nèi)存儲(chǔ)器,從一個(gè)外設(shè)(例如一個(gè)模數(shù)轉(zhuǎn)換器)到RAM,從一個(gè)外設(shè)到另一個(gè)外設(shè)之間。例如當(dāng)控制器讀寫(xiě)AD采集的數(shù)據(jù)時(shí)或者讀寫(xiě)外部擴(kuò)展存儲(chǔ)器內(nèi)容時(shí),內(nèi)存與外設(shè)間會(huì)存在著大量的數(shù)據(jù)交換,而且這種交換是經(jīng)常性

2、的。對(duì)于這樣的數(shù)據(jù)交換,若采用中斷方式響應(yīng),每傳送一次數(shù)據(jù),就要經(jīng)歷中斷處理的全部步驟,CPU就會(huì)不斷的進(jìn)行中斷的相關(guān)操作,如將工作現(xiàn)場(chǎng)寄存器壓入堆棧,中斷結(jié)束時(shí),恢復(fù)現(xiàn)場(chǎng),CPU頻繁的進(jìn)行工作現(xiàn)場(chǎng)的切換,非常不專(zhuān)注,效率非常低。有沒(méi)有一種專(zhuān)用通道,專(zhuān)用的控制器來(lái)負(fù)責(zé)這類(lèi)經(jīng)常性的操作,而將CPU資源釋放出來(lái)呢? 直接存儲(chǔ)訪問(wèn)DMA(Direct Memory Access)模塊就是用硬件實(shí)現(xiàn)存儲(chǔ)器與存儲(chǔ)器之間、存儲(chǔ)器與I/O設(shè)備之間直接進(jìn)行高速數(shù)據(jù)傳送,不需要CPU的干預(yù),減少了中間環(huán)節(jié),而且存儲(chǔ)器地址的修改和傳送均由硬件自動(dòng)完成,所以極大地提高了批量數(shù)據(jù)的傳送速度。 實(shí)現(xiàn)DMA傳送的關(guān)鍵部件

3、是DMA控制器(DMAC)。系統(tǒng)總線分別受到CPU和DMAC這兩個(gè)部件的控制,即CPU 可以向地址總線、數(shù)據(jù)總線和控制總線發(fā)送信息(非DMA方式),DMAC也可以向地址總線、數(shù)據(jù)總線和控制總線發(fā)送信息(DMA方式)。DMADMA模塊概述模塊概述但在同一時(shí)刻,系統(tǒng)總線只能接受一個(gè)部件的控制。究竟哪個(gè)部件來(lái)控制系統(tǒng)總線,是通過(guò)這兩個(gè)部件之間的“聯(lián)絡(luò)信號(hào)”控制實(shí)現(xiàn)的。DMA取得總線控制權(quán)前處于受控狀態(tài),此時(shí),CPU可對(duì)DMAC進(jìn)行初始化編程,也可從DMAC中讀出狀態(tài),這時(shí)DMA處于從態(tài),DMAC上電或復(fù)位時(shí),DMAC自動(dòng)處于從態(tài)。在DMAC獲得總線控制權(quán)之后,DMAC取代CPU而成為系統(tǒng)總線的主控者

4、,接管和控制系統(tǒng)總線。通過(guò)總線向存儲(chǔ)器或I/O設(shè)備發(fā)出地址、讀/寫(xiě)信號(hào),以控制在兩個(gè)實(shí)體之間的數(shù)據(jù)傳送。這時(shí)候DMA處于主動(dòng)態(tài)。DMA系統(tǒng)組成框圖如圖12.1所示。地址總線地址總線HRQ DREQDMACHLDA DACK總線總線請(qǐng)求請(qǐng)求總線總線響應(yīng)響應(yīng) HOLD HLDACPUDMA請(qǐng)求請(qǐng)求DMA響應(yīng)響應(yīng)I / O設(shè)備設(shè)備控制總線控制總線數(shù)據(jù)總線數(shù)據(jù)總線F28335F28335的的DMADMA模塊模塊 F28335的DMA模塊主要結(jié)構(gòu)如圖12.2所示,DMA數(shù)據(jù)傳輸是基于事件觸發(fā)的,這就意味著DMA需要外設(shè)中斷觸發(fā)來(lái)啟動(dòng)DMA的數(shù)據(jù)傳輸。F28335共有18個(gè)不同的觸發(fā)源,圖中右邊所示即為觸

5、發(fā)源,外設(shè)觸發(fā)源見(jiàn)表12.1所示。其中有8個(gè)外部中斷觸發(fā)源,全部引自GPIO引腳,這樣DMA的事件觸發(fā)是很靈活的。DMA不能通過(guò)自身數(shù)據(jù)源定時(shí)觸發(fā),若要定時(shí)觸發(fā)可以借助于外設(shè)中斷觸發(fā)源中CPU定時(shí)器來(lái)實(shí)現(xiàn)。F28335共有6個(gè)DMA通道,每個(gè)通道都可以有各自的觸發(fā)源,通過(guò)各自獨(dú)立的PIE中斷告知CPU DMA數(shù)據(jù)傳輸?shù)拈_(kāi)始與結(jié)束,這6個(gè)通道中,第一通道有著更高的優(yōu)先級(jí)。DMA模塊的核心其實(shí)是一個(gè)與地址控制邏輯緊密關(guān)聯(lián)的狀態(tài)機(jī),在數(shù)據(jù)傳輸過(guò)程中讓數(shù)據(jù)塊自動(dòng)的重新配置,就好像是兩個(gè)緩沖器之間在打乒乓球一樣,我們把這種機(jī)制也叫做DMA的乒乓機(jī)制。DMA總線結(jié)構(gòu)包括一個(gè)22位地址總線,一個(gè)32位數(shù)據(jù)讀

6、總線,和一個(gè)32位數(shù)據(jù)寫(xiě)總線,與DMA總線相連的資源,好比乒乓球運(yùn)動(dòng)員,分別數(shù)據(jù)傳送的地址源與數(shù)據(jù)源,地址源與數(shù)據(jù)源的接口通過(guò)總線互相相連,這個(gè)接口DMA可能會(huì)訪問(wèn),CPU也會(huì)訪問(wèn)。與DMA總線相連的資源如圖中左邊所示1、XINTF區(qū)域0、6、7;L4 SARAM、L5 SARAM、L6 SARAM、L7 SARAM 2、ADC存儲(chǔ)器映射結(jié)果寄存器 3、MCBSP-A和MCBSP-B數(shù)據(jù)接收寄存器(DDR2/DDR1)和數(shù)據(jù)發(fā)送寄存器(DXR2/DXR1)4、映射到外設(shè)3的ePWM1-6/HRPWM1-6寄存器。F28335F28335的的DMADMA模塊模塊外設(shè)中斷觸發(fā)源CPUDMA軟件位

7、(CHx.CONTROL.PERINIFRC)ADC排序器1中斷排序器2中斷外部中斷外部中斷1-7、外部中斷13CPU定時(shí)器CPU定時(shí)器0、1、2溢出McBSP-A、McBSP-B發(fā)送緩沖器空、接收緩沖器滿Epwm1-6ADC啟動(dòng)信號(hào)F28335F28335的的DMADMA模塊模塊F28335的DMA的基本特性如下:(1) 6個(gè)DMA通道,6個(gè)通道都具有獨(dú)立的PIE中斷(2) 外設(shè)中斷觸發(fā)源 DMA模塊是基于事件觸發(fā)的,因此要求一個(gè)外設(shè)觸發(fā)器啟動(dòng)DMA數(shù)據(jù)的傳遞。例如它能通過(guò)將一個(gè)定時(shí)器配置成中斷觸發(fā)源,從而變成一個(gè)周期性的定時(shí)驅(qū)動(dòng)器,中斷觸發(fā)源可以為6個(gè)DMA通道分別單獨(dú)配制。F28335的

8、外設(shè)中斷觸發(fā)源如下:ADC排序器1和排序器2多路緩沖串行端口A和B(McBSP-A,McBSP-B)的發(fā)送和接收;XINT1-7和XINT13; CPU計(jì)時(shí)器ePWM1-6 ADCSOCA和ADSOCB信號(hào)軟件(3) 數(shù)據(jù)源/目的地 DMA傳遞數(shù)據(jù)的來(lái)源或者傳輸?shù)哪康牡兀饕缦拢篖4L7 16K*16 SARAM所有XINTF區(qū)域(外擴(kuò)的存儲(chǔ)器)ADC的結(jié)果寄存器McBSP-A和McBSP-B發(fā)送和接收緩沖器ePWM1-6/HRPWM1-6外設(shè)第3幀映射寄存器 ePWM/HRPWM寄存器被DMA訪問(wèn)之前必須被重新映射到PF3(通過(guò)MAPCNF寄存器的0位設(shè)置)。(4) 字長(zhǎng): DMA傳輸數(shù)據(jù)

9、的字長(zhǎng)為:字的大?。?6位或32位(McBSPs只限于16位)讀寫(xiě)操作:4周期/字(對(duì)于McBSP 5周期/字進(jìn)行讀?。?。F28335F28335的的DMADMA模塊模塊F28335的DMA模塊的觸發(fā)機(jī)制 外設(shè)中斷觸發(fā)DMA數(shù)據(jù)傳送的原理如圖12.3所示。F28335的DMA每個(gè)通道都可以選擇各自獨(dú)立的觸發(fā)源,觸發(fā)源有18個(gè),包括與GPIO引腳連接的8個(gè)外部中斷觸發(fā)源,這樣的觸發(fā)源的選擇是很靈活的。在外設(shè)中斷觸發(fā)的時(shí)候,首先通過(guò)各自通道的模式寄存器(MODE.CHX)的外設(shè)中斷觸發(fā)源選擇位(MODE.CHX(PERINTSEL))來(lái)選擇觸發(fā)源,有效的中斷觸發(fā)發(fā)生后,控制寄存器的外設(shè)中斷觸發(fā)標(biāo)志

10、位(PERINTFLG)會(huì)被置位,如果相應(yīng)DMA通道的模式寄存器中的外設(shè)中斷允許位(MODE.CHX. PERINTE)是使能的,并且控制寄存器中運(yùn)行狀態(tài)位(CONTROL.CHxRUNSTS)是允許的,該DMA通道就能響應(yīng)數(shù)據(jù)傳輸服務(wù)了。在接收完一個(gè)外設(shè)中斷觸發(fā)信號(hào)后,DMA會(huì)自動(dòng)地發(fā)一個(gè)清除信號(hào)給中斷源,這樣后續(xù)的中斷事件會(huì)接著響應(yīng)。F28335F28335的的DMADMA模塊模塊 軟件觸發(fā)的時(shí)候可以不管通道模式寄存器中觸發(fā)源的選擇,可以通過(guò)控制寄存器中的外設(shè)中斷強(qiáng)制位CONTROL.CHxPERINTFRC的置位來(lái)強(qiáng)制觸發(fā),同樣,可以通過(guò)控制寄存器中的外設(shè)中斷清除位CONTROL.CHx

11、PERINTCLR位來(lái)清除掛起的DMA觸發(fā)。 一旦一個(gè)特定的中斷觸發(fā)置位了控制寄存器中的中斷觸發(fā)標(biāo)志位PERINTFLG,該位一直保持置位(掛起)狀態(tài),直到狀態(tài)機(jī)的優(yōu)先級(jí)邏輯允許該通道進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸開(kāi)始,標(biāo)志位就被清零。數(shù)據(jù)正在傳輸過(guò)程中,而一個(gè)新的中斷觸發(fā)產(chǎn)生了,在正常的優(yōu)先級(jí)別下,數(shù)據(jù)傳輸完成后才會(huì)去響應(yīng)新的中斷觸發(fā)。如果那個(gè)新的中斷觸發(fā)還處在掛起狀態(tài),即未被執(zhí)行,又來(lái)了一個(gè)新的中斷觸發(fā),即第三個(gè)中斷觸發(fā),這時(shí)候控制寄存器中的溢出標(biāo)志位CONTROL.CHxOVRFLG會(huì)被置位以示錯(cuò)誤。如果一個(gè)外設(shè)中斷觸發(fā)發(fā)生了,而與此同時(shí)標(biāo)志位正在清除中,外設(shè)中斷觸發(fā)有一定優(yōu)先權(quán),外設(shè)中斷標(biāo)志位

12、還是會(huì)被置位。F28335F28335的的DMADMA模塊模塊F28335的DMA模塊的流水線機(jī)制 DMA進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候采用了4級(jí)流水線,將數(shù)據(jù)傳輸主要分成了如下工序:產(chǎn)生數(shù)據(jù)源地址,輸出數(shù)據(jù)源地址,讀數(shù)據(jù)源數(shù)據(jù),產(chǎn)生目的源地址,輸出目的源地址,寫(xiě)目的源數(shù)據(jù)。如圖12.4所示。有個(gè)例外的是,當(dāng)將McBSP作為數(shù)據(jù)源時(shí),讀取McBSP DDR寄存器的值的時(shí)候,會(huì)拖延DMA一個(gè)時(shí)鐘周期。如圖12.5所示。F28335F28335的的DMADMA模塊模塊此外還有一些其它操作也會(huì)影響到DMA通道的吞吐1、在每次數(shù)據(jù)傳輸之前要增加一個(gè)周期的延遲。2、當(dāng)從CH1高優(yōu)先級(jí)中斷返回時(shí)也會(huì)周期延遲。3、32

13、位傳輸速度是16位傳輸速度的兩倍,傳輸1個(gè)32位的字與傳輸1個(gè)16位的字所花的時(shí)間是一樣的。4、與CPU的沖突可能增加延遲時(shí)間。 例:從ADC到RAM傳遞128個(gè)16位的字,通道被配置成1波傳遞16個(gè)字,每個(gè)字要花4個(gè)時(shí)鐘周期,8波能傳完,總需時(shí)鐘周期520個(gè)時(shí)鐘周期 8 bursts * (4 cycles/word * 16 words/burst) + 1 = 520 cycles 如果通道被配置成傳遞32位的字,傳遞過(guò)程為8 bursts * (4 cycles/word * 8 words/burst) + 1 = 264 cycles,總需要時(shí)鐘周期264個(gè),所花時(shí)間差不多減半。也

14、就是對(duì)DMA傳輸而言,采用32位數(shù)據(jù)線傳輸,若以16位為字進(jìn)行傳輸,即一半吞吐量浪費(fèi)了。F28335的DMA模塊F28335的DMA模塊的CPU仲裁機(jī)制 通常情況下,DMA的運(yùn)行是獨(dú)立于CPU運(yùn)行的。但是有時(shí)候DMA與CPU會(huì)同時(shí)通過(guò)同一個(gè)接口訪問(wèn)存儲(chǔ)器或外設(shè)寄存器,這時(shí)候就需要進(jìn)入CPU仲裁程序。例外的是,ADC寄存器(內(nèi)存映射PF0)被CPU與DMA同時(shí)訪問(wèn)的時(shí)候不會(huì)有沖突,即使是訪問(wèn)不同的地址。訪問(wèn)任何一個(gè)不同的接口或者CPU要通過(guò)一個(gè)DMA正在訪問(wèn)的接口,即訪問(wèn)同一接口的時(shí)間是不同時(shí)的,都不會(huì)產(chǎn)生沖突。有可能產(chǎn)生沖突的內(nèi)部接口如下: XINTF 存儲(chǔ)區(qū)域 0, 6 and 7 L4 R

15、AM L5 RAM L6 RAM L7 RAM外設(shè)幀3 (McBSP-A and McBSP-B)F28335的DMA模塊1)訪問(wèn)外部存儲(chǔ)器接口:a、如果CPU和DMA在同一周期內(nèi)訪問(wèn)任何一個(gè)XINTF區(qū)域,DMA被響應(yīng),CPU的所有訪問(wèn)被掛起(CPU訪問(wèn)正常的優(yōu)先權(quán)順序是寫(xiě)-讀-獲取)。b、如果CPU訪問(wèn)一個(gè)XINTF的區(qū)域處于掛起狀態(tài)或者正在被處理,此時(shí)DMA正試圖訪問(wèn)該區(qū)域,DMA訪問(wèn)會(huì)被擱置,直到掛起的CPU訪問(wèn)完成為止。例如一個(gè)CPU的讀或?qū)懙脑L問(wèn)在掛起狀態(tài),CPU的獲取訪問(wèn)在被執(zhí)行中,首先是完成這個(gè)獲取訪問(wèn),然后是CPU的寫(xiě),接著CPU的讀,最后才DMA訪問(wèn)。c、如果CPU與DMA

16、同時(shí)試圖進(jìn)行寫(xiě)操作,則延時(shí)一個(gè)時(shí)鐘周期。如果DMA或者CPU寫(xiě)XINTF區(qū)域,那么XINTF的緩沖器有助于CPU或者DMA避免延遲。如果DMA或CPU讀XINTF區(qū)域,那么會(huì)有明顯的延遲。這里要注意的是,如果DMA被延遲,DMA可能會(huì)錯(cuò)過(guò)高優(yōu)先權(quán)的DMA事件,如在產(chǎn)生高速率數(shù)據(jù)的ADC模塊里的DMA傳輸。在這種情況下,就不能采用DMA來(lái)傳輸XINTF里的數(shù)據(jù),DMA延遲時(shí)間太長(zhǎng),會(huì)丟失關(guān)鍵的DMA事件。 DMA不支持半途中止XINTF的讀操作。如果DMA正在訪問(wèn)XINTF的一個(gè)區(qū)域并且DMA訪問(wèn)被延遲了,CPU會(huì)發(fā)一個(gè)硬件重啟HARDRESET指令來(lái)中止DMA的訪問(wèn),HARDRESTE就像是D

17、MA的系統(tǒng)重啟命令,因此,HARDRESET會(huì)被應(yīng)用XINTF上,以從外設(shè)崩潰的狀態(tài)中恢復(fù)過(guò)來(lái),XINTF與DMA中的寫(xiě)緩沖器的數(shù)據(jù)與被掛起的數(shù)據(jù)信息全部會(huì)丟失。(2) 其他外設(shè)/存儲(chǔ)器a、CPU與DMA同一周期內(nèi)訪問(wèn)相同接口,DMA優(yōu)先,CPU被延遲。 b、CPU正在訪問(wèn),另一個(gè)CPU對(duì)同一接口的訪問(wèn)在掛起狀態(tài),如CPU正在進(jìn)行寫(xiě)處理,一個(gè)讀訪問(wèn)在掛起狀態(tài),CPU寫(xiě)操作完以后,DMA訪問(wèn)先于讀訪問(wèn)執(zhí)行。對(duì)于同一個(gè)接口,對(duì)于掛起的CPU訪問(wèn)而言,DMA訪問(wèn)有更高優(yōu)先權(quán)。如果CPU正在進(jìn)行讀-修改-寫(xiě)操作,DMA在相同位置上執(zhí)行一個(gè)寫(xiě)操作,該操作正好發(fā)生在CPU讀操作和寫(xiě)操作之間,則DMA的寫(xiě)操

18、作可能會(huì)丟失,因此建議不要把CPU和DMA混在一起訪問(wèn)同一接口。F28335的DMA模塊F28335的DMA模塊的通道優(yōu)先級(jí)機(jī)制通道優(yōu)先級(jí)確定時(shí)有兩個(gè)方案:ROUND-ROBIN模式和通道1高優(yōu)先級(jí)模式。1、 ROUND-robin模式 Round-robin模式就是輪次模式,在這個(gè)模式下,所有通道有著平等的優(yōu)先權(quán),每一個(gè)通道以“輪次”響應(yīng)的形式被響應(yīng)到。響應(yīng)形式如下:CH1 - CH2 - CH3 - CH4 - CH5 - CH6 - CH1 - CH2 - 在上述情況下,每個(gè)通道發(fā)送一波字以后,下一個(gè)通道就會(huì)被響應(yīng),用戶(hù)可以指定每個(gè)通道的一波字的數(shù)量,一旦第6通道(或者是最后一個(gè)被使能的

19、通道)響應(yīng)結(jié)束后,并且沒(méi)有其余被掛起的響應(yīng),輪次模式狀態(tài)機(jī)就進(jìn)入了空閑狀態(tài)。2、通道1高優(yōu)先級(jí)模式 在這個(gè)模式中,通道1有高優(yōu)先權(quán)。如果通道1觸發(fā)事件發(fā)生,其余任何通道在當(dāng)前字傳完(還不是這一波傳完)后即被終止,通道1響應(yīng),完成數(shù)據(jù)傳送。數(shù)據(jù)傳送完成后,又回到原來(lái)執(zhí)行的傳送中。除1以外的其余通道還是平等的,還是以輪次模式執(zhí)行。高優(yōu)先級(jí): CH1低優(yōu)先級(jí): CH2 - CH3- CH4 -CH5- CH6 -CH2 F28335的DMA模塊F28335的DMA模塊的地址指針與發(fā)送控制方法 DMA模塊的內(nèi)部狀態(tài)機(jī)是兩級(jí)嵌套的循環(huán)結(jié)構(gòu),當(dāng)一個(gè)外部設(shè)備的中斷觸發(fā)信號(hào)到來(lái)時(shí),內(nèi)部循環(huán)開(kāi)始一次突發(fā)傳送。一

20、次突發(fā)傳送被定義為一次傳送的最小單位,可通過(guò)BURST_SIZE寄存器為每個(gè)通道設(shè)定突發(fā)傳送的數(shù)據(jù)量。BURST_SIZE允許在一次突發(fā)傳送中最多傳送32個(gè)16位的字;通過(guò)TRANSFER_SIZE寄存器可設(shè)置每個(gè)外環(huán)的尺寸,并且定義在一次傳送過(guò)程中突發(fā)傳送的循環(huán)次數(shù),由于TRANSFER_SIZE是一個(gè)16位的寄存器,所以在一次傳送過(guò)程中總數(shù)據(jù)量可滿足任何傳送要求。在每次傳送的開(kāi)始或結(jié)尾,可以產(chǎn)生一次CPU中斷,這是由MODE.CHXCHINTMODE位決定的。 在MODE.CHXONESHOT位默認(rèn)設(shè)置下,DMA在一次外設(shè)中斷觸發(fā)下僅產(chǎn)生一次突發(fā)傳送。當(dāng)此次突發(fā)傳送結(jié)束后,即使當(dāng)前通道的觸

21、發(fā)信號(hào)再次到來(lái),狀態(tài)機(jī)也將根據(jù)優(yōu)先級(jí)順序移動(dòng)到下一個(gè)通道,這樣可以防止一個(gè)通道獨(dú)占DMA總線。如果所要傳送的總數(shù)據(jù)量大于一次突發(fā)傳送的最大數(shù)據(jù)量;,那么可以通過(guò)將MODE.CHxONESHOT置位來(lái)完成整個(gè)傳送過(guò)程。但需要注意的是,在此模式下將會(huì)導(dǎo)致一次觸發(fā)事件占用絕大部分的DMA帶寬。 每個(gè)DMA通道都包含源地址與目標(biāo)地址的映射地址指針(即SRC_ADDR和DST_ADDR),這些指針在傳送狀態(tài)機(jī)運(yùn)行過(guò)程中可獨(dú)立控制,每次傳送開(kāi)始時(shí),每個(gè)指針映射地址中的值將分別裝載到其當(dāng)前寄存器中。在內(nèi)部循環(huán)運(yùn)行時(shí),每完成一個(gè)字的傳送,源或目標(biāo)寄存器BURST_STEP的值將被添加到當(dāng)前SRC/DST_AD

22、DR中。每次內(nèi)環(huán)結(jié)束時(shí),可采用兩種方法清除當(dāng)前地址指針:第一種(默認(rèn)),將SRC/DST_TRANSFER_STEP寄存器中的標(biāo)記值添加到相應(yīng)的指針中;第二種,通過(guò)返回過(guò)程,返回地址將被加載到當(dāng)前地址指針中,當(dāng)返回過(guò)程開(kāi)始時(shí),SRC/DST_TRANSFER_STEP寄存器被忽略。F28335的DMA模塊當(dāng)SRC/DST_WRAP_SIZE寄存器中設(shè)定的突發(fā)傳送次數(shù)完成時(shí),發(fā)生地址返回。每個(gè)DMA通道有2個(gè)映射地址指針SRC_BEG_ADDR和DST_BEG_ADDR,從而允許源與目標(biāo)獨(dú)立控制。如果SRC_ADDR與DST_ADDR一樣,那么在傳送開(kāi)始時(shí)當(dāng)前寄存器SRC/DST_BEG_ADD

23、R將從其自身映射單元中加載數(shù)據(jù)。當(dāng)設(shè)定的突發(fā)傳送次數(shù)完成時(shí),一個(gè)返回過(guò)程將發(fā)生: (1)當(dāng)前寄存器SRC/DST_BEG_ADDR將根據(jù)SRC/DST_WRAP_STEP寄存器中的標(biāo)記值進(jìn)行增加;(2)當(dāng)前寄存器SRC/DST_BEG_ADDR中的新值將裝載到SRC/DST_ADDR當(dāng)前寄存器中。 另外,返回計(jì)數(shù)器(SRC/DST_WRAP_COUNT)將會(huì)重新加載SRC/DST_WRAP_SIZE的值,為下次返回做準(zhǔn)備,這就允許在一次傳送過(guò)程中產(chǎn)生多次返回操作。 DMA的地址指針有當(dāng)前寄存器與映射寄存器,從而允許用戶(hù)在DMA工作時(shí)間為下次傳送過(guò)程在映射寄存器中設(shè)定相應(yīng)的值。具有映射單元的指針

24、有: (1)源/目標(biāo)地址指針(SRC/DST_ADDR)。映射寄存器中的值即為讀/寫(xiě)操作的首地址,每次傳送開(kāi)始時(shí),映射寄存器中的值將裝載到當(dāng)前寄存器中。 (2)源/目標(biāo)開(kāi)始地址指針(SRC/DST_BEG_ADDR)。每次傳送開(kāi)始時(shí),映射寄存器中的值將裝載到當(dāng)前寄存器中,當(dāng)前寄存器的值在添加到SRC/DST_ADDR寄存器中之前將先根據(jù)SRC/DST_WRAP_STEP寄存器中的值增加。F28335的DMA模塊對(duì)于每個(gè)通道,傳送過(guò)程由以下長(zhǎng)度值進(jìn)行控制: (1)源和目標(biāo)突發(fā)傳送長(zhǎng)度BURST_SIZE(內(nèi)部循環(huán)次數(shù))。BURST_SIZE定義了一次突發(fā)傳送所傳遞字的個(gè)數(shù),在突發(fā)傳送開(kāi)始前,BU

25、RST_SIZE的值被加載到BURST_COUNT寄存器中,每次完成一個(gè)字的傳送,BURST_COUNT減1,直到歸零時(shí)表明本次突發(fā)傳送結(jié)束。當(dāng)前通道的行為由MODE寄存器中ONE_SHOT位定義,每次突發(fā)傳送的最大字?jǐn)?shù)由外設(shè)決定;如果ADC的突發(fā)傳送可為16個(gè)寄存器,則McBSP突發(fā)傳送字的個(gè)數(shù)被限制為1,因?yàn)槠錄](méi)有接收與發(fā)送緩沖器。對(duì)于RAM單元,突發(fā)傳送的最大字的個(gè)數(shù)可由BURST_SIZE設(shè)定為32。 (2)源和目標(biāo)傳送次數(shù)TRANSFER_SIZE(外部循環(huán)次數(shù))。TRANSFER_SIZE指定在每個(gè)CPU中斷(如果被使能)產(chǎn)生前所發(fā)生的突發(fā)傳送的次數(shù)。通過(guò)MODE 寄存器中的CHI

26、NTMODE位可將中斷配置成在傳送開(kāi)始時(shí)觸發(fā)中斷或在傳送結(jié)束時(shí)觸發(fā)中斷。MODE寄存器中的CONTINUOUS位可設(shè)定在傳送完成后,當(dāng)前通道是繼續(xù)使能還是禁止工作。在傳送開(kāi)始時(shí),TRANSFER_SIZE被裝載到TRANSFER_COUNT寄存器中,TRANSFER_COUNT不斷監(jiān)視突發(fā)傳送的次數(shù),直到其歸零時(shí),表明DMA傳送過(guò)程結(jié)束。 (3)源/目標(biāo)返回長(zhǎng)度SRC/DST_WRAP_SIZE。SRC/DST_WRAP_SIZE定義了在當(dāng)前地址指針?lè)祷亻_(kāi)始位置前所發(fā)生的突發(fā)傳送次數(shù),用來(lái)實(shí)現(xiàn)一個(gè)環(huán)繞的地址類(lèi)型功能。在傳送開(kāi)始時(shí),SRC/DST_WRAP_SIZE的值被裝載到SRC/DST_WRAP_COUNT寄存器中,SRC/DST_WRAP_COUNT監(jiān)視突發(fā)傳送所發(fā)生的次數(shù),當(dāng)歸零時(shí)相應(yīng)的源/目

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論