1.只有F15/16x具有DMA(Direct Memory Access是一種不經(jīng)過CPU而直接從內(nèi)存了存取數(shù)據(jù)的數(shù)據(jù)交換模式。)為數(shù)據(jù)告訴傳輸提供保證。(例如,利用DMA控制器可以直接將ADC轉(zhuǎn)換存儲器的內(nèi)容傳送到RAM中)處理數(shù)據(jù),而非處理任務。
2.特性:
數(shù)據(jù)傳送無需CPU
塊傳輸可達到65536字節(jié)
提高片內(nèi)外設(shè)吞吐能力,每個字或者字節(jié)僅需2個MCLK
處理數(shù)據(jù)是CPU處于低功耗
字節(jié)和字可以混合傳輸
四種傳輸尋址模式:固定地址到固定地址,固定地址到塊地址,塊地址到固定地址,塊地址到塊地址。
觸發(fā)方式靈活:邊沿或電平
單個、塊、或突發(fā)塊傳輸模式:每次觸發(fā)DMA操作,可根據(jù)需要傳輸不同模式數(shù)據(jù)。
3.結(jié)構(gòu)
三個獨立的傳輸通道:0 1 2
可配置的通道優(yōu)先權(quán):
程序命令控制模塊:每個DMA通道開始之前,CPU要編程給定的相關(guān)命令和模式控制,以決定DMA通道類型。
可配置的傳送觸發(fā)器:(觸發(fā)源選擇模塊,DMAREQ軟件觸發(fā),TimerA CCR2輸出、Timer_BCCR2輸出、I2C數(shù)據(jù)發(fā)送準備好、USART接收發(fā)送數(shù)據(jù)、DAC12IFG、AD12模塊的ADC12IFGx/DMAxIFG、DMAxIFG、DMAE0外部觸發(fā)源。觸發(fā)源擴充能力)。
4.DMA控制器相關(guān)操作:
a.選擇DMA觸發(fā)源:
DMAREQ(軟件觸發(fā),DMA傳輸開始后該位自動清零)
TACCR2 CCIFG (TACCR2的CCIFG標志位,觸發(fā)DMA操作(前提CCIE不置位),DMA傳輸開始后該位自動清零)
TBCCR2 CCIFG(同上)
URXIFG0(UART或SPI)(USART0準備接收新數(shù)據(jù)時觸發(fā)DMA操作(前提URXIE0不置位),DMA傳輸后該位自動清零)
RXTMAEN(I2C)(I2C模式只對USART0 有效,DMA傳輸后該位不能自動清零)
DAC12_0 DAC12IFG((前提DACIE不置位),該位可以自動清除)
ADC12IFGx (置位標志有模塊自動選擇,當ADC12單通道上執(zhí)行單次或重復轉(zhuǎn)換時,ADC12IFGx置位,觸發(fā)DMA操作。DMA傳輸后
該位不能自動清零,只有對應的ADC12MEMx被訪問該標志才自動清除。用軟件置位ADC12IFGx標志不能觸發(fā)DMA操作)
TACCR0 CCIFG((觸發(fā)前提:CCIE不置位)DMA傳輸后該位自動清零)
TBCCR0 CCIFG(同上)
URXIFG0(URXIFG1置位觸發(fā),(前提:UTXIE1不置位)DMA傳輸后該位自動清零)
UTXIFG0(UTXIFG1置位觸發(fā),(前提:UTXIE1不置位)DMA傳輸后該位自動清零)
硬件乘法器準備好,觸發(fā)DMA
DMAxIFG:(DMA0IFG觸發(fā)DMA通道1,DMA1IFG觸發(fā)DMA通道2,DMA1IFG觸發(fā)DMA通道0,DMA傳輸后該位不能自動清零)
DMAE0:外部觸發(fā)標志DMAE0.
b.確定觸發(fā)信號方式:邊沿(0),電平(1) DMALEVEL
c.DMA控制器的尋址:(每個通道尋址方式完全獨立)DMASRCINCR源地址 DMADSTINCR目的地址
固定地址到固定地址
固定地址到塊地址
塊地址到固定地址
塊地址到塊地址
d.選擇DMA傳輸模式:
單字或者單字節(jié)傳輸
快傳輸
突發(fā)塊傳輸
重復單字或者單字節(jié)傳輸
重復塊傳輸
重復突發(fā)塊傳輸
e.CPU暫停傳輸 DMAONFETCH=0且DMA控制器接收到有效觸發(fā)信號,CPU進入暫停狀態(tài),DMA開始傳輸。DMAONFETCH=1時在
DMA暫停CPU之前,CPU就結(jié)束當前正在進行的指令,開始DMA操作。DMA傳輸過程中,要完成地址和字節(jié)數(shù)的設(shè)置以及其他控制操作。
f.DMA操作停止方式
NMI中斷:NMI中斷可以結(jié)束DMA操作:設(shè)置DMACTL1的ENNMI位。(適用于單字或者單字節(jié)模式、塊傳輸模式、突發(fā)塊傳輸模式)
清除DMAEN位(突發(fā)快傳輸模式)
g.DMA通道的優(yōu)先級 DMA0 1 2
(固定優(yōu)先級:DMA傳輸過程中不可以被打斷,有更高的通道請求時,只有先執(zhí)行再響
應
(循環(huán)優(yōu)先級:防止被某一通道單獨壟斷
(通過ROUNDROBIN設(shè)置:1:循環(huán),0:固定、
h.DMA傳輸周期
DMA控制器可以最大限度的避免程序查詢和中斷方式中歐冠非數(shù)據(jù)傳輸時間,可滿足傳輸率高的外設(shè)。
……傳輸之前需要一個或兩個MCLK時鐘周期來實現(xiàn)同步
……同步后,每個字或者字節(jié)傳輸僅需要2個MCLK
……每傳輸結(jié)束有一個周期等待時間
若MCLK處于活動狀態(tài),CPU關(guān)閉,DMA傳輸直接使用MCLK
若MCLK關(guān)閉,DMA用臨時DCOCLK啟動MCLK時鐘源,結(jié)束后CPU仍處關(guān)閉,MCLK時鐘源也關(guān)閉
DMA最大周期:表4-27 P211
i.DMA與中斷
(1)DMA與系統(tǒng)中斷
系統(tǒng)中斷不能打斷DMA中斷。若ENNMI置位NMI中斷可以打斷DMA傳輸。DMA事件可以打斷中斷處理程序(前提:DMA控制
器打開)
(2)DMA控制器中斷
條件:DMAxSZ內(nèi)容減為零(相應的中斷標志置位)并且DMAIE,GIE置位
注意:DMA只有一個中斷向量,并且這個中斷向量和DAC12模塊公用。軟件檢查DMAIFG和DAC12IFG,這樣才能判斷中斷源。
DMAIFG不能自動復位,有軟件來
5.DMA寄存器:(硬件結(jié)構(gòu)是字結(jié)構(gòu),必須用字指令來訪問)
控制寄存器0 :選擇觸發(fā)源
控制寄存器1 :DMAONFETCH:傳輸開始時間。ROUNDROBIN:選擇優(yōu)先級管理方式。ENNMINMI:NMI是否中斷DMA操作
通道0 1 2 控制寄存器(傳輸模式選擇、目的地址增減控制位、傳輸源地址增減控制位、目的單元基本單位、源單元基本單位、觸發(fā)源有效方式、模塊使能、中斷標志、中斷允許、是否被NMI中斷、DMA請求位)
通道0 1 2 源地址寄存器:存放起始源地址
通道0 1 2 目的地址寄存器:存放目的地址
通道0 1 2 傳輸長度寄存器:沒傳送一個字或者字節(jié)DMAxSZ減量,為零時自動裝入初值
6.使用:
設(shè)置觸發(fā)源
源地址
目的地址
傳輸單元個數(shù)