文档介绍:补充内容: DMA技术
第一节 DMA工作原理
一、CPU与外设数据传输方式
3种
查询方式:查询外设状态
中断方式:CPU控制,可以实时响应中断源的请求,但处理中断的时间,使得中断响应频率受限制,不适用于高速数据传输
DMA方式:DMA控制器控制,适于高速数据和批量数据传输
二、DMA方式
直接存储器存取(Direct Memory Acess)
是指存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。DMA方式为高速I/O设备和存储器之间的批量数据交换提供了直接的传输通道。
三、DMA方式的特点
使用专门的硬件控制器控制内存与外设之间的数据交流,无需CPU介入。
大大提高了CPU的工作效率;还排除了CPU因并行设备过多而来不及处理以及因速度不匹配而造成数据丢失等现象。
第二节 S3C2410A的DMA控制器
S3C2410A支持4个通道的DMA控制器:通道0,通道1,通道2,通道3
一、DMA请求源
2种:硬件和软件请求
采用硬件请求模式(H/W),每个DMA通道对应5个DMA请求源
采用软件请求模式(S/W),表无意义
二、DMA操作过程
控制器采用有限状态机进行操作
4个状态
DMA操作过程示意图
三、DMA操作寄存器
每个DMA通道有9个寄存器,其中6个用于控制DMA传输,3个用于监控DMA状态。
DMA初始源寄存器(DISRC)
DMA初始源控制寄存器()
DMA初始目标地址寄存器(DIDST)
DMA初始目标控制寄存器(DIDSTC)
DMA控制寄存器(DCON)
DMA状态寄存器(DSTAT)
DMA当前源寄存器(DCSRC)
DMA当前目标寄存器(DCDST)
DMA屏蔽触发寄存器(DMASKTRIG)
寄存器的讲解以一个实例为基础进行讲解
例:实现某一存储器数据与串口数据的DMA数据传送
1、(DMA初始源寄存器)
功能:用于存放要传输的数据的起始地址, n=0-3
寄存器地址:
DISRC0:0x4B000000
DISRC1:0x4B000040
DISRC2:0x4B000080
DISRC3:0x4B0000c0
例:
#define rDISRC0 (*(volatile unsigned *)0x4b000000) //DMA 0 初始源寄存器
#define SEND_ADDR ((volatile unsigned char *) 0x30200000)
//待发送数据的起始地址
rDISRC0 = (U32)SEND_ADDR; //DMA0 初始化
//DMA
#define rDISRC0 (*(volatile unsigned *)0x4b000000) //DMA 0 Initial source
#define 0 (*(volatile unsigned *)0x4b000004) //DMA 0 Initial source control
#define rDIDST0 (*(volatile unsigned *)0x4b000008) //DMA 0 Initial Destination
#define rDIDSTC0 (*(volatile unsigned *)0x4b00000c) //DMA 0 Initial Destination control
#define rDCON0 (*(volatile unsigned *)0x4b000010) //DMA 0 Control
#define rDSTAT0 (*(volatile unsigned *)0x4b000014) //DMA 0 Status
#define rDCSRC0 (*(volatile unsigned *)0x4b000018) //DMA 0 Current source
#define rDCDST0 (*(volatile unsigned *)0x4b00001c) //DMA 0 Current destination
#define rDMASKTRIG0 (*(volatile unsigned *)0x4b000020) //DMA 0 Mask trigger
// UART
#define rULCON0 (*(volatile unsigned *)0x50000000) //UART 0 Line control
#define rUCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control
#defi