基于arm7的dma传输详解

基于arm7的dma传输详解

ID:28048682

大小:149.50 KB

页数:8页

时间:2018-12-07

基于arm7的dma传输详解_第1页
基于arm7的dma传输详解_第2页
基于arm7的dma传输详解_第3页
基于arm7的dma传输详解_第4页
基于arm7的dma传输详解_第5页
资源描述:

《基于arm7的dma传输详解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、嵌入式编程——DMA传输龚建峰研14041415053004木章我们将向大家介绍STM32的DMA功能。在本章屮,我们将利用STM32的DMA的功能通过串口2实现串口传输打印,按复位键,开始LEDPLEDd灯全亮,然后传输完成是,LED1,LED2灯熄火,电脑串口出现传输的数据。1.STM32DMA简介DMA全称力:DirectMemoryAccess,即直接存储访问◊DMA是STM32巾一个独立与Cortex-M3内核的模块,有点类似与ADC、PWM、TIMER等模块;主要功能是通信“桥梁”的作用,可以将所有外设映射的寄存器“连接”起来,这样就可以高速问各寄存器,其传输不受CPU的支配,传输

2、还是双向全工的。DMA传输将数据从•一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器來实行和完成。典型的例子就是移动一个外部内存的区诀到芯片内部更快的内存区,DMA传输对于高效能嵌入式系统算法和网络是很重要的。DMA传输方式无需CPU直接控制传输,也没有屮断处理方式那样保留现场和恢S现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,能使CPU的效率大为提高,这里需要注意的是在传输的过程中,CPU是不参与的,只有当启用结朿DMA时,CPU才会参与作用。2.本章原理串口2以DMA方式发送数裾。我们先定义5200个字节的数组SendBuf

3、f[],即开辟了一个空间,空间用于存放要发送的数据。将这个空间和串口用DMA方式绑定。DMA传输是将数据从一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。如本实验中,我们先将要发送的数据送入开辟的SendBuff[]地址空间,初始化从这个地址空间向串口2发送数据这个动作。初始化完成后,传输动作本身是由DMA控制器来实行和完成,不用CPU直接控制传输,我们只需要开启DMA传输即可。接下来我们就介绍本实验的基本实现步骤:1)对串口进行初始化。例如:调川函数SZ_STM32_COMInit()设置使用的是串U2,将波特率配置成115200,2

4、)调用函数MYDMA_Confjg()配賈DMA。MYDMA_Config()函数初始化串口2以DMA方式发送数据这个动作动作。具体配罝的内容有:使能DMA传输、传入串口2使用的通道7等。3)将待发送的数据传入我们开辟的空间SendBuff[],即定义的数组。4)调用USART_DMACmd()函数,使能串口2的DMA发送。下而是DMA的6个寄存器.•寄存器描述DMA_JSRDMA中断状态寄存器DMA_JFCRDMA中断标志位清除寄存器DMA.CCRxDMA通道x设置寄存器DMA.CNDTRxDMA通道x待传输数据数目寄存器DMA•CPARxDMA外设地址寄存器DMA结构体的成员:Typede

5、fstruct{uint32_tDMA_PeripheralBaseAddr;uint32_tDMA_MemoryBaseAddr;uint32tDMADIRuint32tDMABufferSize;uint32」DMA_Peripherallnc;uint32_tDIZlA_Memorylnc;uint32_tDMA_PeripheralDataSize;uint32」DMA_MemoryDataSize;uint32_tDMA_Mode;uint32_tDMA_Priority;uint32tDMAM2M;}DMAJnitTypeDef;1)DMA_PeripheralBaseAddr这

6、个成员保存的是外设数据寄存器的基地址,这个地址作为传输的源或目标,比如要进行串口2DMA传输,那么外设基地址为串口接受发送数据存储器USART-〉DR的地址,表示方法为&USART->DR,为什么说是“基”地址?因为DMA具有地址自增的功能,地址自增功能时的可以方便地读取连续的数据单元,具体是不是要地址自增,可以通过相应的配置进行选择。2)DMA_MemoryBaseAddr保存了内存的基地址,同样,这个地址可作为传输的源或目标。在使用时通常会给这个成员赋伉为某个数组的基地址,然后利用DMA的地址自增功能把数组一个个地填满。3)DMA_DIR保存了DMA数据传输方向,可以选择是外设到内存还是内

7、存到外设。4)DMA_BufferSize保存了DMA要传输的数裾总大小,单位为后而结构体元。本章代码对它赋值为自定义的宏Sendbuff_Size,宏展开为5200。即本次DMA要传输5200个数据。5)DMA_Peripherallnc和DMA_Memorylnc分别为外设和内存的地址是否开启自增功能。本章向这两个成员赋值为外设地址固定,而闪存地址自增,所以在DMA的传输过程屮,数组的元素0~

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。