一、实验目的
1、掌握STM32F103DMA传输程序设计流程;
2、熟悉STM32固件库的基本使用。
二、实验原理
1、利用外部按键KEY1来控制DMA的传送,每按一次KEY1,DMA就传送一次数据到USART1(串口1);
2、该串口将数据输出到PC端显示出来。LED灯D1作为程序运行的指示灯。
三、实验设备和器材
电脑、Keil uVision5软件、Proteus 8 Professional软件
四、实验内容和步骤
4.1 代码开发
按照书本中实验流程在Keil中完成DMA传输实验的代码开发;
4.2 原理图设计
在Proteus中完成原理图的设计,如图5所示。
图5 DMA传输实验原理图
五、实验记录和实验结果
5.1 实验效果记录(附照片即可)
5.2 实验效果说明
按下按键KEY1,D1亮,DMA数据被传输到串口并通过计算机显示出来,DMA传输仿真效果如上图所示。
六、实验预习要求
- 实验前认真阅读本实验指导;
- 熟悉书本中相关操作及相关器件。
- 完成5.1和5.2内容。
七、思考题
1. DMA的功能
- 数据传输加速:DMA允许外部设备(如硬盘、网卡、显卡等)直接访问主内存,避免了数据通过CPU的中断处理,从而大大提高数据传输速度和系统效率。
- 减少CPU负担:通过DMA,数据传输的控制和管理由专门的DMA控制器来完成,减轻了CPU的负担,使CPU可以同时处理其他任务,提高系统的并发能力和响应速度。
- 高效处理数据:DMA能够在数据传输过程中执行连续的数据块传输,从而提高了数据处理的吞吐量,特别是在大数据传输和高速数据传输中表现更为突出。
- 支持多种设备:DMA技术不仅限于特定类型的设备,可以应用于各种I/O设备,如存储设备(硬盘、固态硬盘)、网络设备(网卡)、音频设备、视频设备等。
- 提高系统整体性能:通过降低数据传输的延迟和提高传输速度,DMA显著改善了系统的整体性能和响应能力,尤其是对于高性能计算和实时数据处理系统尤为重要。
2、使用DMA功能进行数据传输时的配置流程
- 选择合适的DMA通道:确定系统支持的DMA通道数量和类型。根据需要选择一个可用的DMA通道,通常在系统的硬件规格或者操作系统的文档中可以找到相关信息。
- 分配DMA缓冲区:DMA传输需要一个缓冲区来存储数据,这个缓冲区位于系统内存中。确保分配的DMA缓冲区足够大以容纳需要传输的数据,并且要注意内存对齐和权限等问题。
- 初始化DMA控制器:需要编程初始化DMA控制器,设置各种控制寄存器,以及DMA传输的方向(读或写)和传输模式(单次传输、循环传输等)。设置DMA控制器的源地址(数据来源)和目的地址(数据目的地),通常是内存地址或者I/O端口。
- 设置DMA传输大小:确定每次DMA传输的数据量,通常以字节为单位。配置DMA控制器的传输计数寄存器,以指定要传输的数据字节数。
- 启动DMA传输:当DMA控制器配置完成后,通过设置相应的启动位(如启动位或者触发位)来启动DMA传输。DMA控制器开始自动从源地址中读取数据,并将其传输到目的地址,直到传输完成或者遇到错误。
- 处理DMA传输结束:在DMA传输完成时,DMA控制器通常会生成一个中断或者触发一个DMA完成信号,通知CPU传输已完成。在处理中断或者检查DMA状态寄存器时,可以确认DMA传输是否成功完成或者出现了错误。
- 释放DMA资源:当DMA传输完成后,释放DMA控制器和相关资源,包括释放DMA通道以便其他设备或者进程使用。