基本信息
文件名称:NXP 系列:LPC1768 (适用于复杂娱乐设备)_(20).LPC1768DMA直接存储器访问.docx
文件大小:27.43 KB
总页数:26 页
更新时间:2025-06-15
总字数:约1.33万字
文档摘要

PAGE1

PAGE1

LPC1768DMA直接存储器访问

1.DMA简介

直接存储器访问(DMA,DirectMemoryAccess)是一种数据传输技术,允许外设或存储器之间直接进行数据传输,而不需要CPU的干预。这种技术可以显著提高数据传输效率,释放CPU资源,使其可以执行其他任务。LPC1768单片机内置了强大的DMA控制器,支持多种数据传输模式和多种触发源。

1.1DMA的基本概念

DMA的基本概念是通过一个专用的硬件控制器来管理数据传输,而不是通过CPU。当外设或存储器需要传输大量数据时,可以通过DMA控制器将数据直接从源地址传输到目标地址,而无需CPU逐字节地处理。这样可以减少CPU的负担,提高系统的整体性能。

1.2LPC1768的DMA控制器

LPC1768的DMA控制器具有以下特点:

通道数:LPC1768有8个DMA通道,每个通道可以独立配置。

传输模式:支持多种传输模式,包括块传输、请求传输、单次传输等。

触发源:支持多种触发源,包括定时器、ADC、UART等。

中断支持:DMA传输完成后可以触发中断,通知CPU数据传输已经完成。

灵活的地址配置:支持源地址和目标地址的固定、递增、递减等多种配置方式。

2.DMA控制器的配置

在LPC1768中,DMA控制器的配置主要通过一系列寄存器来实现。这些寄存器包括使能寄存器、配置寄存器、传输计数器寄存器、源地址寄存器、目标地址寄存器等。以下是一些常用的寄存器及其功能:

2.1DMA使能寄存器

DMA使能寄存器(DMAEN)用于启用或禁用DMA通道。每个通道都有一个对应的位来控制其使能状态。

#defineLPC_SC((volatileuint32_t*)0x400FC000)//SystemControlandStatusRegister

#defineLPC_SC_DMAEN(*(volatileuint32_t*)(LPC_SC+0x0C))//DMAEnableRegister

//启用DMA通道0

LPC_SC_DMAEN|=(10);

//禁用DMA通道0

LPC_SC_DMAEN=~(10);

2.2DMA配置寄存器

DMA配置寄存器(DMACfg)用于配置DMA通道的传输模式、触发源、传输方向等。每个通道都有一个对应的配置寄存器。

#defineLPC_DMA((volatileuint32_t*)0//DMAControllerBaseAddress

#defineLPC_DMA_DMACfg(n)(*(volatileuint32_t*)(LPC_DMA+0x000+(n*0x20)))//DMAChannelConfigurationRegister

//配置DMA通道0

LPC_DMA_DMACfg(0)=(124)|(120)|(0x0116)|(0x018)|(0x010);

//解释:

//124:使能通道

//120:源地址递增

//0x0116:目标地址固定

//0x018:传输宽度为8位

//0x010:触发源为定时器0

2.3DMA传输计数器寄存器

DMA传输计数器寄存器(DmaCnt)用于设置传输的数据块大小。

#defineLPC_DMA_DmaCnt(n)(*(volatileuint32_t*)(LPC_DMA+0x004+(n*0x20)))//DMAChannelTransferCountRegister

//设置DMA通道0传输100个字节

LPC_DMA_DmaCnt(0)=100;

2.4DMA源地址寄存器

DMA源地址寄存器(DmaSrc)用于设置数据传输的源地址。

#defineLPC_DMA_DmaSrc(n)(*(volatileuint32_t*)(LPC_DMA+0x008+(n*0x20)))//DMAChannelSourceAddressRegister

//设置DMA通道0的源地址为0

LPC_DMA_DmaSrc(0)=0

2.5DMA目标地址寄存器

DMA目标地址寄存器(DmaDest)用于设置数据传输的目标地址。

#defineLPC_DMA_DmaDest(n)(*(vol