1.只有F15/16x具有DMA(Direct Memory Access是一种不经过CPU而直接从内存了存取数据的数据交换模式。)为数据告诉传输提供保证。(例如,利用DMA控制器可以直接将ADC转换存储器的内容传送到RAM中)处理数据,而非处理任务。
2.特性:
数据传送无需CPU
块传输可达到65536字节
提高片内外设吞吐能力,每个字或者字节仅需2个MCLK
处理数据是CPU处于低功耗
字节和字可以混合传输
四种传输寻址模式:固定地址到固定地址,固定地址到块地址,块地址到固定地址,块地址到块地址。
触发方式灵活:边沿或电平
单个、块、或突发块传输模式:每次触发DMA操作,可根据需要传输不同模式数据。
3.结构
三个独立的传输通道:0 1 2
可配置的通道优先权:
程序命令控制模块:每个DMA通道开始之前,CPU要编程给定的相关命令和模式控制,以决定DMA通道类型。
可配置的传送触发器:(触发源选择模块,DMAREQ软件触发,TimerA CCR2输出、Timer_BCCR2输出、I2C数据发送准备好、USART接收发送数据、DAC12IFG、AD12模块的ADC12IFGx/DMAxIFG、DMAxIFG、DMAE0外部触发源。触发源扩充能力)。
4.DMA控制器相关操作:
a.选择DMA触发源:
DMAREQ(软件触发,DMA传输开始后该位自动清零)
TACCR2 CCIFG (TACCR2的CCIFG标志位,触发DMA操作(前提CCIE不置位),DMA传输开始后该位自动清零)
TBCCR2 CCIFG(同上)
URXIFG0(UART或SPI)(USART0准备接收新数据时触发DMA操作(前提URXIE0不置位),DMA传输后该位自动清零)
RXTMAEN(I2C)(I2C模式只对USART0 有效,DMA传输后该位不能自动清零)
DAC12_0 DAC12IFG((前提DACIE不置位),该位可以自动清除)
ADC12IFGx (置位标志有模块自动选择,当ADC12单通道上执行单次或重复转换时,ADC12IFGx 置位,触发DMA操作。DMA传输后
该位不能自动清零,只有对应的ADC12MEMx被访问该标志才自动清除。用软件置位ADC12IFGx标志不能触发DMA操作)
TACCR0 CCIFG((触发前提:CCIE不置位)DMA传输后该位自动清零)
TBCCR0 CCIFG(同上)
URXIFG0(URXIFG1置位触发,(前提:UTXIE1不置位)DMA传输后该位自动清零)
UTXIFG0(UTXIFG1置位触发,(前提:UTXIE1不置位)DMA传输后该位自动清零)
硬件乘法器准备好,触发DMA
DMAxIFG:(DMA0IFG触发DMA通道1,DMA1IFG触发DMA通道2,DMA1IFG触发DMA通道0,DMA传输后该位不能自动清零)
DMAE0:外部触发标志DMAE0.
b.确定触发信号方式:边沿(0),电平(1) DMALEVEL
c.DMA控制器的寻址:(每个通道寻址方式完全独立)DMASRCINCR源地址 DMADSTINCR目的地址
固定地址到固定地址
固定地址到块地址
块地址到固定地址
块地址到块地址
d.选择DMA传输模式:
单字或者单字节传输
快传输
突发块传输
重复单字或者单字节传输
重复块传输
重复突发块传输
e.CPU暂停传输 DMAONFETCH=0且DMA控制器接收到有效触发信号,CPU进入暂停状态,DMA开始传输。DMAONFETCH=1时在
DMA暂停CPU之前,CPU就结束当前正在进行的指令,开始DMA操作。DMA传输过程中,要完成地址和字节数的设置以及其他控制操
作。
f.DMA操作停止方式
NMI中断:NMI中断可以结束DMA操作:设置DMACTL1的ENNMI位。(适用于单字或者单字节模式、块传输模式、突发块传输模式)
清除DMAEN位(突发快传输模式)
g.DMA通道的优先级 DMA0 1 2
(固定优先级:DMA传输过程中不可以被打断,有更高的通道请求时,只有先执行再响
应
(循环优先级:防止被某一通道单独垄断
(通过ROUNDROBIN设置:1:循环,0:固定、
h.DMA传输周期
DMA控制器可以最大限度的避免程序查询和中断方式中欧冠非数据传输时间,可满足传输率高的外设。
……传输之前需要一个或两个MCLK时钟周期来实现同步
……同步后,每个字或者字节传输仅需要2个MCLK
……每传输结束有一个周期等待时间
若MCLK处于活动状态,CPU关闭,DMA传输直接使用MCLK
若MCLK关闭,DMA用临时DCOCLK启动MCLK时钟源,结束后CPU仍处关闭,MCLK时钟源也关闭
DMA最大周期:表4-27 P211
i.DMA与中断
(1)DMA与系统中断
系统中断不能打断DMA中断。若ENNMI置位NMI中断可以打断DMA传输。DMA事件可以打断中断处理程序(前提:DMA控制
器打开)
(2)DMA控制器中断
条件:DMAxSZ内容减为零(相应的中断标志置位)并且DMAIE,GIE置位
注意:DMA只有一个中断向量,并且这个中断向量和DAC12模块公用。软件检查DMAIFG和DAC12IFG,这样才能判断中断源。
DMAIFG不能自动复位,有软件来
5.DMA寄存器:(硬件结构是字结构,必须用字指令来访问)
控制寄存器0 :选择触发源
控制寄存器1 :DMAONFETCH:传输开始时间。ROUNDROBIN:选择优先级管理方式。ENNMINMI:NMI是否中断DMA操作
通道0 1 2 控制寄存器(传输模式选择、目的地址增减控制位、传输源地址增减控制位、目的单元基本单位、源单元基本单位、触发源有效方式、模块使能、中断标志、中断允许、是否被NMI中断、DMA请求位)
通道0 1 2 源地址寄存器:存放起始源地址
通道0 1 2 目的地址寄存器:存放目的地址
通道0 1 2 传输长度寄存器:没传送一个字或者字节DMAxSZ减量,为零时自动装入初值
6.使用:
设置触发源
源地址
目的地址
传输单元个数