标题:深入探索STM32F103的DMA技术
导言:
STM32F103是一款广泛应用于嵌入式系统开发的32位微控制器。其中,DMA(Direct Memory Access)技术是STM32F103系列的重要特性之一,它大幅提高了数据处理性能并降低了处理器的负载。本文将详细介绍STM32F103的DMA技术,让读者更好地了解其原理、应用和优势。
-
DMA的基本原理:
DMA是一种直接内存访问技术,它允许外设直接与系统内存进行数据交换,而不需要处理器的干预。STM32F103的DMA控制器具有多个通道,每个通道可以连接到不同的外设和内存区域。通过DMA控制器的配置,我们可以实现数据的高速传输,提高系统性能。
-
DMA的应用场景:
(a)数据传输:DMA广泛用于外设和内存之间的数据传输,如串口通信、SPI通信、I2C通信等。 (b)内存拷贝:DMA可以直接在内存之间执行数据拷贝,避免了处理器的干预。 (c)数据处理:DMA可以直接将外设数据转存到内存进行处理,降低了处理器的负载。
-
STM32F103的DMA控制器:
STM32F103的DMA控制器拥有多个通道,每个通道都可以配置为不同的传输模式和优先级。DMA传输可以在多种数据宽度(8位、16位或32位)下进行,并支持内存到内存、内存到外设以及外设到内存的数据传输。此外,DMA还支持循环模式、自动请求模式和半自动请求模式等。
-
DMA的优势:
(a)提高性能:通过使用DMA,可以将数据传输的任务交给DMA控制器,处理器可以专注于其他重要任务,从而提高系统性能。 (b)降低处理器负载:使用DMA减少了处理器与外设之间的数据传输过程,有效减轻了处理器的负载。 (c)灵活性:STM32F103的DMA控制器具有多个通道,并且支持多种传输模式和数据宽度,这使得开发人员能够根据应用需求进行灵活配置。
-
DMA的配置步骤:
(a)选择通道和外设:首先,我们需要选择一个合适的通道和外设。 (b)配置传输参数:配置传输模式、数据宽度、传输方向等参数。 (c)配置源和目的地址:指定数据的源地址和目的地址。 (d)配置传输完成中断(可选):根据需要选择是否配置传输完成的中断。 (e)使能DMA:使能选择的DMA通道。
DMA的意义
简单描述:
DMA就是一个数据搬运工!!
代替 CPU 搬运数据,为 CPU 减负。
-
数据搬运的工作比较耗时间;
-
数据搬运工作时效要求高(有数据来就要搬走);
-
没啥技术含量(CPU 节约出来的时间可以处理更重要的事)。
搬运什么数据?
存储器、外设
这里的外设指的是spi、usart、iic、adc 等基于APB1 、APB2或AHB时钟的外设,而这里的存储器包括自身的闪存(flash)或者内存(SRAM)以及外设的存储设备都可以作为访问地源或者目的
三种搬运方式:
- 存储器→存储器(例如:复制某特别大的数据buf)
- 存储器→外设 (例如:将某数据buf写入串口TDR寄存器)
- 外设→存储器 (例如:将串口RDR寄存器写入某数据buf)
DMA 控制器
STM32F103有2个 DMA 控制器,DMA1有7个通道,DMA2有5个通道。一个通道每次只能搬运一个外设的数据!! 如果同时有多个外设的 DMA 请求,则按照优先级进行响应。
DMA1有7个通道
DMA****传输方式
- DMA_Mode_Normal(正常模式)
一次DMA数据传输完后,停止DMA传送 ,也就是只传输一次
- DMA_Mode_Circular(循环传输模式)
当传输结束时,硬件自动会将传输数据量寄存器进行重装,进行下一轮的数据传输。 也就是多次传输模式
结论:
通过本文,我们对STM32F103的DMA技术有了全面的了解。DMA作为一种直接内存访问技术,可以大幅提高数据处理性能并降低处理器的负载。它在实际应用中广泛用于数据传输、内存拷贝和数据处理等场景。配置STM32F103的DMA需要选择合适的通道和外设,并进行传输参数、地址配置和中断配置等步骤。了解和灵活运用DMA技术,将有助于我们更高效地开发嵌入式系统。
参考文献:
-
STMicroelectronics. (2021). RM0008. STM32F10xxx Flash programming manual. Retrieved from https://www.st.com/resource/en/reference_manual/cd00171190.pdf
-
STMicroelectronics. (2021). RM0008. STM32F10xxx reference manual. Retrieved from https://www.st.com/resource/en/reference_manual/cd00171190.pdf